[ zivadin_despot @ 09.01.2012. 16:53 ] @
Pozdrav, interesuje me kolike kondenzatore da stavim oko kristala, jer sumnjam na njih. Trenutno je 22pF. Desava mi se da imam neki prost program i pre pocetka rada sam stavio da mi LED-ovka gori 5s, ali to traje dosta duze. PLL i ostalo je iskljuceno...
Pozdrav
U pitanju je PIC18F4431
[ bogdan.kecman @ 09.01.2012. 18:15 ] @
12-22p bi trebalo da radi ok, proveri konfiguraciju verovatno je do toga
[ zivadin_despot @ 09.01.2012. 18:47 ] @
Vidi, pre ovog kristala je stojao kristal na 20MHz i sve je radilo ok... Evo sad sam probavao sa paljenjem diode, evo kod:
Code:
:
void main() {
     TRISA=0;
     ANSEL0=0;
     while(1){
              PORTA=~PORTA;
              Delay_ms(1000);
     }
}


Kada sam stavio na HS, radila je na cca 3sec, a kada sam stavio na XT nece uopste da radi...
[ bogdan.kecman @ 09.01.2012. 18:51 ] @
koji je ovo C? ovo je CSS PICC 4.120? onaj sto baguje za PWM na PIC18F seriji?

XT je oscilator sporiji od 4MHz tako da ni ne moze da radi
Sta ti stoji gore u DELAY liniji na pocetku (posto vidim da koristis delay_ms())?
Koji tacno fuse bitovi su setovani?

ili je ovo MikroC ?
[ bogdan.kecman @ 09.01.2012. 19:01 ] @
btw ja za 40MHz stavljam 12 ili 15pF, ali ne volim da koristim nikad kristal preko 20MHz, posebno ne kada su trough hole komponente u pitanju tako da sam 4431 uvek terao sa 10MHz i PLL-om da poteram mcu na 40MHz i to radi extra (22pF na 10MHz kristal). Dodatno sam imao problem, do duse sa 32MX picom da mi nije radio kako treba ali se ispostavilo da imam "seriski" secen kristal a ne "paralelno" a ti "seriski seceni" ne rade kao sa picovima kako treba (nemam pojma sta im to znaci, nije ni bitno, to je bio neki 100 godina star kristal iz neke makine izvadjen i ovenizovan)
[ zivadin_despot @ 09.01.2012. 19:04 ] @
Koristim mikroC... Da li je moguce da su kondenzatori veci pa da zato steka?
[ bogdan.kecman @ 09.01.2012. 19:20 ] @
kondenzatori bi trebali da imaju veze samo sa vremenom stabilizacije frekvencije. dakle ako si turio 22pF trebalo bi da mu treba koja millisekunda duze da stabilizuje izlaz na 40MHz ali ne bi smelo da ima problema sa bilo cim....

reci mi tacno kako ti se ponasa, mikroC ima onaj "debilan" sistem za setovanje fuse bitova ... + dodatno mora mu napises na koliko trci mcu da bi delay radio ...

aj uradi bukvalno

Code:

void main() {
     TRISA=0;
     ANSEL0=0;
     while(1){
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
              PORTA=0;
              PORTA=0xFF;
     }
}


nadam se da imas osciloskop ili neki counter da vidis da li imas tu 5MHz izlaz na PORTA (40MHz / 4 / 2 = 5MHz)
[ bogdan.kecman @ 09.01.2012. 19:23 ] @
ne znam sta znaci ono "cca 3 sec", ako ti je blinkala led na 3sec to znaci da delay_ms ne radi kako treba sto najverovatnije znaci da mikroC negde nisi dobro iskonfigurisao (imas tamo da zapises na kom taktu ti radi pic da bi delay_ms() funkcija radila tacno)
[ vukboban @ 09.01.2012. 21:19 ] @
Bogdan je u pravu(kao i obicno)!
Ti si verovatno samo promenio kristal,ali nisi prekompajlirao kod za 40Mhz,nego je u podesavanjima ostalo 20 Mhz.
A to "cca 3 sec" je verovatno 2 sec,odnosno 2 puta sporije.
Jel si to povezao "uzivo" ili je u nekom simulatoru?
Ako je simulator,i u njemu moras da stavis 40Mhz
[ bogdan.kecman @ 10.01.2012. 05:37 ] @
ne verujem da simulator mnogo zanima vrednost kondova na kristalu :D
[ zivadin_despot @ 10.01.2012. 17:04 ] @
Obratio sam paznju na to... Upisao sam u uC da je vrednost kristala 40MHz. Nisam nicim merio nego od prilike sam rekao da je vreme blinkanja diode 3sec... Danas sam uzeo kristal na 10MHz pa cu njega staviti i pll4x i to je to... Javim sta se dogodilo.
Pozdrav
[ vukboban @ 10.01.2012. 17:07 ] @
Vrednost kondova ne,to nigde nisam ni rekao,ali ako u Isisu stavi takt kontrolera 4 ili 10Mhz,a u MikroC kompajlira na 40Mhz,naravno da nece da bude tacno.
[ zivadin_despot @ 10.01.2012. 18:05 ] @
U uC sam stavio da je oscilator 10MHz i stavio opciju "HS-PLL enabled freq=4xFosc1". Koliku frekvenciju da stavim u Proteusu da bi mi to radilo...programcic onaj koji sam naveo...
Samo da Bogdanu kazem da nemam kuci osciloskop niti neki brojc, pa nisam odradio njegov predlog.
[ goran_68 @ 10.01.2012. 21:25 ] @
40MHz.
Ukoliko nisi siguran koliko ti traje Delay možeš da simuliraš i u MPLAB-u. Kao debugger odabereš MPLAB SIM pa onda iz Debugger padajućeg menija odabereš StopWatch. Pre toga u SimulatorSettings podesiš frekvenciju od 40MHz.
Čak je i inače dobri HI-TECH kompajler imao greške u define fajlovima za MCU pa mi se desilo jednom da se konfiguracione reči ne postavljaju kako treba. Zato proveravam sve živo.
Ne znam kako je kod mikroc ali da bi Delay radio kako treba potrebno je da bude uključena optimizacija.
[ zivadin_despot @ 10.01.2012. 22:24 ] @
Evo ovako... prilikom programiranja u uC sam upisao vrednost oscilatora 40MHz i ukljucio PLL 4x i kompajlirao, u Proteusu sam upisao vrednost oscilatora od 10MHz i ucitao program i sve radi normalno. Delay od 500ms je na osciloskopu 500ms, i to je to.
[ foxhunter1 @ 11.01.2012. 07:21 ] @
Citat:
zivadin_despot: Evo ovako... prilikom programiranja u uC sam upisao vrednost oscilatora 40MHz i ukljucio PLL 4x i kompajlirao, u Proteusu sam upisao vrednost oscilatora od 10MHz i ucitao program i sve radi normalno. Delay od 500ms je na osciloskopu 500ms, i to je to.


Proteus ne obraca paznju na konfig bitove (provereno kad je u pitanju oscilator). Prema tome, moras da stavis finalnu vrednost kloka - 40 MHz u tvom slucaju.
[ bogdan.kecman @ 11.01.2012. 08:09 ] @
Citat:
zivadin_despot: U uC sam stavio da je oscilator 10MHz i stavio opciju "HS-PLL enabled freq=4xFosc1". Koliku frekvenciju da stavim u Proteusu da bi mi to radilo...programcic onaj koji sam naveo...

40MHz

Citat:
zivadin_despot:Samo da Bogdanu kazem da nemam kuci osciloskop niti neki brojc, pa nisam odradio njegov predlog.


napravi superprobe: http://mondo-technology.com/super.html

Citat:
zivadin_despot: Evo ovako... prilikom programiranja u uC sam upisao vrednost oscilatora 40MHz i ukljucio PLL 4x i kompajlirao, u Proteusu sam upisao vrednost oscilatora od 10MHz i ucitao program i sve radi normalno. Delay od 500ms je na osciloskopu 500ms, i to je to.


Ako si u proteusu u property od pic-a stavio 10MHz to znaci da ti je delay 4x duzi nego sto treba da bude posto (kako ti je kolega rekao) proteus ne sljivi 2% konfig bitove te ti je terao pic na 10MHz a ne na 40MHz na koliko bi on trcao sa 10MHz oscilatorom i PLL-om upaljenim. Stavi u proteus 40MHz i onda pogledaj u mikroC-u gde se setuje "brzina" i tamo nakucaj isto 40000000 da bi mikroC znao kako da generise delay_ms() posto on bez tog parametra ne moze da generise taj delay.

Citat:
goran_68:Ne znam kako je kod mikroc ali da bi Delay radio kako treba potrebno je da bude uključena optimizacija.


mikroC "kreira" delay rutinu pri kompajliranju tako da sam zna da je to volatile deo koda uzima info iz "externe" varijable u "project property-u" koja definise koliki je FOSC i u odnosu na to generise asm kod za delay.... to radi prilicno dobro, jedini problem je sto se fuse bitovi i fosc vrednost ne nalaze u kodu nego sakriveni u parametrima projekta tako da se vrlo cesto "preskoce"... da ne spominjem za situacije kada prebacis program sa kompa na komp i slicno :(
[ Aleksmladen @ 13.01.2012. 13:58 ] @
Jeftini kristal od 40 MHz radi na 3. harmoniku. To znači da ga ne možeš upotrebiti direktno vezanog na PIC već preko kola koje će izdvojiti treći harmonik.
Preporučujem ti da, ako ti nije potrebna tačnost bolja od 50 ppm, koristiš kvarc od 10 MHz (ili 12 kod nekih PIC-ova) i PLL koji se daje kao mogućnost u konfiguraciji oscilatora kod PIC-a.
Pozdrav