Mäta klockfrekvensen (Fosc) hos en ATmega128 i mjukvara

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Illuwatar
Inlägg: 2256
Blev medlem: 10 november 2003, 14:44:27
Skype: illuwatar70
Ort: Haninge
Kontakt:

Mäta klockfrekvensen (Fosc) hos en ATmega128 i mjukvara

Inlägg av Illuwatar »

Är det möjligt att mäta vilken frekvens Fosc (huvudoscillatorn) som driver en ATmega128 (och förstås dess släktingar och vänner) verkligen har? Jag vill på något sätt via intern mjukvara räkna/mäta detta. Något lurigt sätt att använda de inbyggda timers som finns?
Användarvisningsbild
maha
EF Sponsor
Inlägg: 1685
Blev medlem: 22 november 2005, 09:47:02
Ort: Jakobstad, Finland

Inlägg av maha »

I och med att de inbyggda timers som finns synkas från just t.ex. Fosc så kommer man ju inte att ha en blekaste aning om den går i 20Hz eller 20MHz. Någon yttre referens behövs.
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

KOlla lite på AVR053,AVR054 och AVR 055 för ideer. Jag har inte kollat nu men det bör vara till hjälp.
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

I PIC finns det en sekundär oscillator. Misstänker att det kanske finns i en
ATmega också. Isåfall borde man kunna använda den på något lurigt sätt.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Vad menar du med "huvudoscillatorn"? Är det den inbyggda eller den som faktiskt används?
Om det är den inbyggda så är ju ju en tabell en enkel lösning, under förutsättning att man kan utläsa vilken AVR man är...
Om frågan är "med vilken frekvens klockas koden som körs nu" så krävs en extern referens, för allt internt är ju baserat på en och samma oscillator.
Vad är syftet med frågan? Kanske finns helt andra vägar att gå om vi får veta sammanhanget...?
Användarvisningsbild
maha
EF Sponsor
Inlägg: 1685
Blev medlem: 22 november 2005, 09:47:02
Ort: Jakobstad, Finland

Inlägg av maha »

Men även fast man använder den interna oscillatorn som referens och kör på en kristall så kommer man ju inte att kunna göra några superexakta beräkningar för den interna oscillatorns frekvens diffar väl rätt vilt med temperatur samt från AVR till AVR?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Någon av timrarna kan du ha en extern klocka in eller en kristall ansluten.
Det skulle räcka med 32khz kristall för få ett hum i vilket område man ligger i.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

OM det finns ett RC-nät av känt värde kopplat till en utgång och till en AD-ingång skull det kunna användas för att beräkna ungefär vilken frekvens mikrokontrollern klockas med... enklast är dock, som Micke skriver, med en 32kHz kristall.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Hur noga?

Inlägg av Swech »

Hur noga vill du mäta?
är det för att verifiera att man har 20MHz och inte 10MHz eller
vill du veta 20.07MHz (exempel)

Är det inte för noggrant kan man trixa med WD timern.
Låt processorn lösa ut på WD och mät tiden.
Har inte kollat om 128an har separat wd interrupt vektor.

WD ocillatorn är dock inte vidare stabil den heller.. så något externt
är säkerligen bäst...

Swech
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Hur noga vill du mäta?

Exakt den fråga som jag har väntat på !
Grundfrågan är i princip obesvarbar utan att veta svaret på det... :-) :-)
Skriv svar