Sida 1 av 1

Extern 32.768 kHz cristal för timer1, problem..

Postat: 28 mars 2006, 14:34:22
av ASTRX
håller på att pilla till en realtidsklocka med en atmega8535 men har stött på ett problem. jag började med att klocka timern med avseende på systemklockan som fås av den interna oscillatorn @ 1Mhz. jag valde då prescaler på 1024 och en compare match interrupt vid 976 avbrott. det ger ett avbross varje:

1000000/(1024*976)=1.000576332 s

vilket gör att klockan drar sig typ 2s/tim. och då har jag ändå räknat med att den interna oscillatorn går i exakt 1 MHz, vilket ju inte är fallet i verkligheten. Detta är ju kass.

Så jag vill ha en extern 32.768 kHz kristall som jag kopplar in över T0/T1. men när jag ändrar min clock-select på timern till extern så får jag inga avbrott alls?!!

jag har bara kopplat in kristallen direkt, utan capacitanser eller nåt. vart har jag klantat mig?

Postat: 28 mars 2006, 14:39:06
av Icecap
Nu kan jag inte AVR men på PIC måste man även berätta för timern att den ska starta oscillatorn...

Postat: 28 mars 2006, 14:45:40
av PaNiC
Du måste nyttja timer2 till T0/T1.

Postat: 28 mars 2006, 14:49:05
av cykze
Det är pinnarna TOSC1 och TOSC2 som gäller om du ska köra med en extra klockkristall. Kolla databladet.

Se även AVR134: Real-Time Clock using the Asynchronous Timer

Postat: 28 mars 2006, 15:46:27
av ASTRX
cykze: ni säger ju olika saker. i databladet står det att när man väljer extern kristall för timer1 så står det "External clock source on T1-pin, clock on rising edge.". alltså ska man inte använda TOSC1/TOSC2 när man använder timer1, eller hur?

PaniC: däremot med timer2 som man kan köra i asyncronous mode där ska man använda TOSC1/TOSC2 genom att sätta AS2-biten till 1.

jag kan ju inte använda timer2 eftersom den bara är 8 bitar och jag behöver 16 för att representera 32768, alltså timer1.

Postat: 28 mars 2006, 16:32:09
av Icecap
"External clock source on T1-pin..." betyder att om du vill klocka den med en extern klocka ska denna klocka kopplas till T1-pinnen.

Detta har INGET att göra med extern kristall.

Edit: Men vad med att vara lite smart i stället: ta ett 1,024MHz kristall och sätt som systemklocka.....

Postat: 28 mars 2006, 16:59:37
av ASTRX
Jahaaa :) så jag ska koppla kristallen till TOSC1/TOSC2 även om jag använder timer1? men hur berättar jag för timern att den ska använda den källan? verkar ju som om bara timer2 har den funktionen?

annars får jag göra som du säger och använda en 1.024MHz kristall som systemklocka. hittade iofs bara en 4.096Mhz kristall på elfa ( 74-502-08 ) , men det borde ju funka lika bra.
men eftersom jag är helkass på capacitanser osv så undrar jag om jag behöver några externa kondensatorer till kristallen?

EDIT: upptäckte nu att jag kan ju använda min 32.768kHz kristall som systemklocka. och då kan jag dessutom använda interna capacitanser och slipper externa genom att programmera CKOPT. hastigheten borde ändå räcka gott och väl. låter bra va? :)

Postat: 28 mars 2006, 17:37:52
av cykze
Det är bara Timer2 som kan användas tillsammans med en klockkristall på TOSC-pinnarna.

Fördelen med en extern klockkristall (32768 Hz) till TOSC-pinnarna är att den även går när AVR:en är i strömsparläge.

32768 Hz som systemklocka går nog lite väl långsamt.

Postat: 28 mars 2006, 20:09:41
av ASTRX
ja det går långsamt, men inte för långsam skulle jag tro. det som skall göras mellan interrupten borde med råge hinnas med inom 1 sekund, även med en 32khz-kristall, eller hur. alternativet är en extern snabb kristall. får se om det fungerar bra med en 32khz annars får det bli en 4.096MHz kristall.

man måste ju inte ha snabbare klocka än vad systemet kräver.

Postat: 28 mars 2006, 20:13:48
av bearing
Om du har simuleringsprogram kan du ju kolla om det som ska göras mellan interrupten använder mindre än 32768 cykler (-marginal för interrupt osv.)

Postat: 28 mars 2006, 22:08:09
av ASTRX
satte CKOPT till 1 och klock-fusarna till low-frequency external crystal (CKSEL=1001, SUT=10) men då dog hel uC:n. den tappade kontakten med programmeraren och efter ett antal försök med att high-voltage erase och justering av stk500:ans clockfrekvens så lyckades jag få igång den. men nu funkar det inte att läsa från programminnet, bara skriva???

i övrigt verkar den fungera som den ska. men man blir ju lite rädd för att prova med extern kristall igen när det händer sådär :?

Postat: 30 mars 2006, 00:03:19
av ASTRX
fick det att fungera. tänkte inte på att timer2 kunde köras med prescaler. nu kör jag en extern kristall på TOSC1/TOSC2 och en prescaler på 256. sedan ett compare match interrupt som genereras när räknaren blir 128. funkar super. tack för all hjälp.

Tips på extern oscillator

Postat: 5 april 2006, 23:49:27
av manw
Jag behövde Timer1 till annat (16bit frekvensräknare), och 1 sekunds interupt via Timer0, samma problem som i tråden.

Byggde en extern kristalloscillator med en inverterare i en 74HCT14 krets:
- 9,1 Mohm från ingång till utgång på inverteraren.
- 470 kohm från utgången från inverteraren till ena kristallbenet.
- Andra kristallbenet till ingången på inverteraren.
- Från varje kristallben 27pF till jord.

Funkade bra, men låg något fel i frekvens, tror att det beror på att jag valt lite fel värden på komponenterna, men om man filar vidare på det. På detta sätt kan Timer0 användas till ett 1s interrupt om man nu vill använda Timer1 till annat.