Sida 1 av 1

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

Postat: 27 november 2007, 18:43:22
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?

Postat: 27 november 2007, 18:48:23
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.

Postat: 27 november 2007, 19:02:53
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.

Postat: 27 november 2007, 21:05:46
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.

Postat: 27 november 2007, 22:46:03
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...?

Postat: 27 november 2007, 23:05:59
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?

Postat: 27 november 2007, 23:57:32
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.

Postat: 28 november 2007, 07:01:25
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.

Hur noga?

Postat: 28 november 2007, 15:52:27
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

Postat: 28 november 2007, 15:55:39
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... :-) :-)