ATmega168PA/RTC med extern 32768Hz kristall driver i tid
ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Hejsan,
Har en skum grej. Försöker felsöka en drift i en RTC (ATmega168PA) som är driven av en extern kristall på 32768Hz. Tmr2 är delad 128 ggr och ger därmed ett avbrott varje sekund.
Nu driver denna klocka och dessutom driver olika mellan olika prototyper/enheter. Det handlar om 3sek på 2h på en enhet. På en annan är det 1sek. Samma programkod men olika HW alltså.
Jag kollade de två keramiska kondensatorerna som sitter på kristallen. De är ej korrekta värden på dem verkar det som. Två st 12pF. Det borde vara 15pF/5pF tror jag efter beräkningar. Men även om värdena är fel, kan det finnas andra parametrar o ta hänsyn till? Jag tänker mig att det sitter fel typ av Cap där (en mer temp.känslig) eller är det bara själva värdet som kan variera så tiden driver?
Tacksam för tips.
(Jag läser just nu Atmels doc över hur man kalibrerar... (atmel-42251-rtc-calibration-and-compensation_ap-note_at03155.pdf)
Har en skum grej. Försöker felsöka en drift i en RTC (ATmega168PA) som är driven av en extern kristall på 32768Hz. Tmr2 är delad 128 ggr och ger därmed ett avbrott varje sekund.
Nu driver denna klocka och dessutom driver olika mellan olika prototyper/enheter. Det handlar om 3sek på 2h på en enhet. På en annan är det 1sek. Samma programkod men olika HW alltså.
Jag kollade de två keramiska kondensatorerna som sitter på kristallen. De är ej korrekta värden på dem verkar det som. Två st 12pF. Det borde vara 15pF/5pF tror jag efter beräkningar. Men även om värdena är fel, kan det finnas andra parametrar o ta hänsyn till? Jag tänker mig att det sitter fel typ av Cap där (en mer temp.känslig) eller är det bara själva värdet som kan variera så tiden driver?
Tacksam för tips.
(Jag läser just nu Atmels doc över hur man kalibrerar... (atmel-42251-rtc-calibration-and-compensation_ap-note_at03155.pdf)
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Det kan ju finnas flera felkällor.
Kristallen kanske inte går i rätt fart. Har du något (t.ex. en bra frekvensräknare) som du kan kolla med?
Det kan vara programvarufel så att det "kuggar över" lite då och då.
En vanlig "klock-kristall" är väl 50 ppm eller lite lägre. 3 sek på 2 tim är över 400 ppm,
och jag räknar rätt, så det är ju lite mycket...
Kristallen kanske inte går i rätt fart. Har du något (t.ex. en bra frekvensräknare) som du kan kolla med?
Det kan vara programvarufel så att det "kuggar över" lite då och då.
En vanlig "klock-kristall" är väl 50 ppm eller lite lägre. 3 sek på 2 tim är över 400 ppm,
och jag räknar rätt, så det är ju lite mycket...
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
32768Hz klock-kristaller är notorisk inexakta pga. av lågt Q!
Samtidig är de mycket känsliga för drivkraften varför man nästan alltid måste ha ett serie-motstånd mellan utgången av oscillatorn och kristallen.
Sedan ska man ha mycket bra koll på spridningskapacitanserna OCH ha trimkondensator för att fintrimma. Men då man INTE kan mäta frekvensen på kristallen samtidig som man trimmar (mätningen i sig påverkar väldigt mycket) måste man ha en utgång från den enhet som använder kristallen.
Avkoppling och avskärmning är essentiell för att ens ha en chans att vara nära att få en stabil enhet så är du inte driven i design av mönsterkort kan det bli ganska besvärligt.
Men om du behöver en RTC i form av RTC-med-backup kan Maxim DS323x kanske vara en lösning. Finns med SPI eller I²C kommunikation och allt klart. Kretsen har inbyggd kristall med temperaturkompensering så att klockan varierar max ±2 minuter/år!
Men de har även DS32KHZ som "bara" är en 32768Hz oscillator med inbyggd temperaturkompensering.
Samtidig är de mycket känsliga för drivkraften varför man nästan alltid måste ha ett serie-motstånd mellan utgången av oscillatorn och kristallen.
Sedan ska man ha mycket bra koll på spridningskapacitanserna OCH ha trimkondensator för att fintrimma. Men då man INTE kan mäta frekvensen på kristallen samtidig som man trimmar (mätningen i sig påverkar väldigt mycket) måste man ha en utgång från den enhet som använder kristallen.
Avkoppling och avskärmning är essentiell för att ens ha en chans att vara nära att få en stabil enhet så är du inte driven i design av mönsterkort kan det bli ganska besvärligt.
Men om du behöver en RTC i form av RTC-med-backup kan Maxim DS323x kanske vara en lösning. Finns med SPI eller I²C kommunikation och allt klart. Kretsen har inbyggd kristall med temperaturkompensering så att klockan varierar max ±2 minuter/år!
Men de har även DS32KHZ som "bara" är en 32768Hz oscillator med inbyggd temperaturkompensering.
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Jag hör av era erfarenheter att det inte är så enkelt. Mycket bra synpunkter och ny information runt dessa kristaller. Jag har inte stött på det problemet förut. Jag har anv. externa RTC:er. Problemet för mig är att hårdvaran är spikad och jag har en massa enheter som går olika - och ska försöka göra nåt åt det, dvs, komma fram med en lösning framöver.
Denna konstruktion har en storlek av 27x13 mm och är knökfull med ledningsdragning och komponenter så varje ny komponent gör stor påverkan. En extern RTC skulle vara rena drömmen. Dessutom är enheterna priskänsliga. Har ni hört uttrycket "Trolla med knäna?".
Men utmaningar är kul.
Jag funderar nu över RC-klockan och ett capture-register tsm med en externt pålagd referens-signal som grindar....hmmm
Denna konstruktion har en storlek av 27x13 mm och är knökfull med ledningsdragning och komponenter så varje ny komponent gör stor påverkan. En extern RTC skulle vara rena drömmen. Dessutom är enheterna priskänsliga. Har ni hört uttrycket "Trolla med knäna?".

Jag funderar nu över RC-klockan och ett capture-register tsm med en externt pålagd referens-signal som grindar....hmmm
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Har Du händelsevis tillgång till en riktig radiomottagare som kan gå hyfsat lågt i frekvens så kan Du lyssna på oscillatorn och höra om den är "orolig" utan att kontaktera den elektriskt. Det går att lyssna på övertoner så det kan fungera även om den inte klarar 32kHz. Det måste däremot vara en riktig radio som kan ta emot CW/SSB, en vanlig AM-mottagare är oduglig till detta.
Går klockan för fort eller för långsamt? Om den går långsamt kan det mycket väl vara att Du tappar interrupts. Hur är det hela uppbyggt? Är det en prototyp på kopplingsdäck kan vad som helst hända. Det är jätteviktigt att kondingarna vid kristallen går direkt till processorns GND utan att slingra sig runt halva kortet först. Kristallens hölje bör också kopplas till GND. Som nämnts måste Du sannolikt ha ett motstånd som begränsar drivningen. Även om det ser ut att fungera så kommer kristallen att gå sönder efter en tid om den drivs för hårt.
Använd mjukvara för att kalibrera om det är snålt med plats för en stor klumpig trimmer. Det är dessutom enklare att utföra kalibreringen när justeringen kan göras i kända steg. För att mjukvarukalibrera så räknar Du upp tiden med en konstant vid varje interrupt. Denna konstant är inte jämnt delbar, utan istället vald så Du får tillräcklig upplösning för justeringen. Rör inte hårdvarudelaren, låt den gå själv utan att påverkas av programvaran.
Går klockan för fort eller för långsamt? Om den går långsamt kan det mycket väl vara att Du tappar interrupts. Hur är det hela uppbyggt? Är det en prototyp på kopplingsdäck kan vad som helst hända. Det är jätteviktigt att kondingarna vid kristallen går direkt till processorns GND utan att slingra sig runt halva kortet först. Kristallens hölje bör också kopplas till GND. Som nämnts måste Du sannolikt ha ett motstånd som begränsar drivningen. Även om det ser ut att fungera så kommer kristallen att gå sönder efter en tid om den drivs för hårt.
Använd mjukvara för att kalibrera om det är snålt med plats för en stor klumpig trimmer. Det är dessutom enklare att utföra kalibreringen när justeringen kan göras i kända steg. För att mjukvarukalibrera så räknar Du upp tiden med en konstant vid varje interrupt. Denna konstant är inte jämnt delbar, utan istället vald så Du får tillräcklig upplösning för justeringen. Rör inte hårdvarudelaren, låt den gå själv utan att påverkas av programvaran.
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
jag jobbade en gång med radiokretsar från chipcon som styrdes av en extern oscillator och en PLL. Problemet var (precis som du har) att oscillatorerna gick olika snabbt. man kunde justera detta digitalt i radiokretsen men då tappade man känslighet.
En lösning var att byta ut kondingarna. I vanliga fall sitter det 2st kondningar mellan benen på oscillatorn och jord. Om man byter ut dessa mot några PF högre så kommer klockan gå långsammare. och tvätom såklart.
kanske är inte detta lösningen på ditt problem men tänkte ändå tipsa.
/D
En lösning var att byta ut kondingarna. I vanliga fall sitter det 2st kondningar mellan benen på oscillatorn och jord. Om man byter ut dessa mot några PF högre så kommer klockan gå långsammare. och tvätom såklart.
kanske är inte detta lösningen på ditt problem men tänkte ändå tipsa.
/D
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Det är ju en del som "bara" klappar en 32kHz kristall till oscillatorn, då med "lämpliga" belastningskondensatorer.
Men läser man datablad ordentligt måste man nästan alltid ha med ett seriemotstånd mellan kristall och oscillator-utgången för att inte driva kristallen gör hårt. Driver man det för hårt får man en hel del stabilitetsproblem i form av fel frekvens och kort livslängd (de spricker helt enkelt inuti).
Sedan rekommenderas guard-ring kraftigt också.
Men då det inte anges hur kopplingen ser ut i detta fall blir allt ju en gissning och inget svar eller lösning kan ges.
Självklart bör en av last-kondensatorerna vara justerbar om man måste trimma till rätt frekvens men i annat fall är Martas lösning nog den bästa. Problemet är att man måste ha en mycket stabil tidbas att kalibrera tidskillnaden efter men sedan kan man få en riktig bra stabilitet i det hela - under förutsättning att kristallen drivs på rätt sätt.
Men läser man datablad ordentligt måste man nästan alltid ha med ett seriemotstånd mellan kristall och oscillator-utgången för att inte driva kristallen gör hårt. Driver man det för hårt får man en hel del stabilitetsproblem i form av fel frekvens och kort livslängd (de spricker helt enkelt inuti).
Sedan rekommenderas guard-ring kraftigt också.
Men då det inte anges hur kopplingen ser ut i detta fall blir allt ju en gissning och inget svar eller lösning kan ges.
Självklart bör en av last-kondensatorerna vara justerbar om man måste trimma till rätt frekvens men i annat fall är Martas lösning nog den bästa. Problemet är att man måste ha en mycket stabil tidbas att kalibrera tidskillnaden efter men sedan kan man få en riktig bra stabilitet i det hela - under förutsättning att kristallen drivs på rätt sätt.
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Hej!
Ärligt talat trodde jag inte kristaller varierade. Jag trodde de var "referensen" i universum. Men jag har jobbat väldigt lite med kristaller eller egentligen dess noggrannhet.
Jag har läst på i Atmels handböcker och ser att PCB-lösningen är viktig och sen även modell av kristall och dessa kondensatorer.
Serieresistans noterar jag ni skriver men såg inget sånt i just Amtels litteratur. Kanske i kristall-tillverkarens.
Jag har också pratat med en grossist som rek. andra kristaller för den appl som avses. Ska ge mig in i den soppan först. Sen rekommendera en förändring i PCB:n. Att kalibrera blir svårt med tanke på hur kortet/produkten produceras - men inget är omöjligt. Trolla med knäna förekommer fortfarande.
Ni nämner också en tidbas. En "grej" att kalibrera mot. Det är nästa problem. Men den frågan tänkte jag ställa i en annan tråd.
Tack för hjälpen!
Ärligt talat trodde jag inte kristaller varierade. Jag trodde de var "referensen" i universum. Men jag har jobbat väldigt lite med kristaller eller egentligen dess noggrannhet.
Jag har läst på i Atmels handböcker och ser att PCB-lösningen är viktig och sen även modell av kristall och dessa kondensatorer.
Serieresistans noterar jag ni skriver men såg inget sånt i just Amtels litteratur. Kanske i kristall-tillverkarens.
Jag har också pratat med en grossist som rek. andra kristaller för den appl som avses. Ska ge mig in i den soppan först. Sen rekommendera en förändring i PCB:n. Att kalibrera blir svårt med tanke på hur kortet/produkten produceras - men inget är omöjligt. Trolla med knäna förekommer fortfarande.
Ni nämner också en tidbas. En "grej" att kalibrera mot. Det är nästa problem. Men den frågan tänkte jag ställa i en annan tråd.
Tack för hjälpen!
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Det som nämndes också är ju en bättre frekvenskälla.
D.v.s en "canned" oscillator, de har ofta temp kompensation
och liknande. Med en tillräckligt bra frekvenskälla så behövs
inte kalibreringssteget, det är alltid lite extra strul. Hur gör ni
efter ett par år? Ska prylarna tillbaka för om-kalibrering?
D.v.s en "canned" oscillator, de har ofta temp kompensation
och liknande. Med en tillräckligt bra frekvenskälla så behövs
inte kalibreringssteget, det är alltid lite extra strul. Hur gör ni
efter ett par år? Ska prylarna tillbaka för om-kalibrering?
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Hej! Nej, produkten är en konsument-produkt med lågt pris men det finns ändå krav på hygglig kvalité och god funktion. Den ska alltså inte tillbaks för kalibrering. Så fokus ligger inte på snygga o trevliga tekniska lösningar utan fokus är på lågt pris och ändå åstadkomma nåt användbart. Nu är kravet på (mellan tummen o pekfingret) noggrannheten ca. 10 min/år (20ppm) men som det nu är så är det ett par sekunder per timme som värst. Det verkar vara ett jitter faktiskt för driften är både pos o neg om man ex.vis mäter den varannan minut (räknaren får gå i 2 min. Sen en INT med en utsignal som är mätbar. Sen kollar man om det blev exakt 2 min eller inte.)
Jag börjar luta åt en "klar" RTC med I2C exvis. Det finns I2C redan på kortet och som fungerar. Men där kommer storlek och strömåtgång in i bilden. Tyvärr finns inte hur mkt plats kvar på kortet men de två SMD-kondingarna kan tas bort o RTC med i2c kan nog petas in där. Nu kanske RTC:n med i2c kräver kringkomponenter...hua.
Jag ska ändå börja med att prova att byta ut komponenterna. Kristall o Cap. Atmel säger att om CL=12.5pF så får inte ESR vara större än 30k. Den kristall som sitter där har CL=12.5/ESR på 70k om jag minns rätt. Observera gott folk. Jag är novis på kristaller och osc. Därför skriver jag här och kan säkert missförstå vissa saker. Som med barn - ha tålamod.
Jag börjar luta åt en "klar" RTC med I2C exvis. Det finns I2C redan på kortet och som fungerar. Men där kommer storlek och strömåtgång in i bilden. Tyvärr finns inte hur mkt plats kvar på kortet men de två SMD-kondingarna kan tas bort o RTC med i2c kan nog petas in där. Nu kanske RTC:n med i2c kräver kringkomponenter...hua.
Jag ska ändå börja med att prova att byta ut komponenterna. Kristall o Cap. Atmel säger att om CL=12.5pF så får inte ESR vara större än 30k. Den kristall som sitter där har CL=12.5/ESR på 70k om jag minns rätt. Observera gott folk. Jag är novis på kristaller och osc. Därför skriver jag här och kan säkert missförstå vissa saker. Som med barn - ha tålamod.

-
- Inlägg: 8445
- Blev medlem: 15 april 2006, 18:57:29
- Ort: Typ Nyköping
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Du har minst 138PPM (2/7200) i frekvensfel på din kristall dvs den jobbar fel. Det är >10ggr mer än förväntat.
32768Hz kristaller är avsedda att jobba med runt 30 graders omgivningstemperatur, har du det? Kommer du att ha det? Vilken tidshållning (stabilitet) behöver du egentligen och över vilket temperaturområde?
Kommer du att ha en variabel matningsspänning (direkt batterimatning), det kan också påverka kristallens frekvens.
Sidan 33 sektion 9.5 i det stora databladet ger egentligen all nödvändig information.
http://www.atmel.com/images/Atmel-8271- ... mplete.pdf
I2C kräver två pullupmotstånd för att fungera...
32768Hz kristaller är avsedda att jobba med runt 30 graders omgivningstemperatur, har du det? Kommer du att ha det? Vilken tidshållning (stabilitet) behöver du egentligen och över vilket temperaturområde?
Kommer du att ha en variabel matningsspänning (direkt batterimatning), det kan också påverka kristallens frekvens.
Sidan 33 sektion 9.5 i det stora databladet ger egentligen all nödvändig information.
http://www.atmel.com/images/Atmel-8271- ... mplete.pdf
I2C kräver två pullupmotstånd för att fungera...
Re: ATmega168PA/RTC med extern 32768Hz kristall driver i tid
Denna pdf från Atmel berättar det mesta om denna 32kHz kristall.
http://www.atmel.com/images/doc8333.pdf
http://www.atmel.com/images/doc8333.pdf