Forum: Mikrocontroller und Digitale Elektronik Stopuhr


von Pierre (Gast)


Lesenswert?

Hallo
kann mir jemand mal einen Tip geben wie man eine Stopuhr programmieren 
könnte, mit einer Messung der 1/100 stel sekunden. ist vielleicht ein 
externer Takt noch etwas genauer.
komme irgendwie mit den timern des Atmels nicht hin.

Danke Pierre

von Fred Ziebell (Gast)


Lesenswert?

Hallo,

Bestücke den AVR extern mit einem Quarz von 4,096 Mhz!

Ungefährer Programmablauf:

Normale Initialisierung....

Prescaler auf 1024 setzen
Timerregister auf 40 setzen

Interrupts zulassen
irqroutine auf tirq setzen
Timerinterrupt zulassen
Timer starten
irqflag=0  //beliebiges Bit auf null setzen
mainloop:

ist irqflag =1 dann springe nach setdisplay

tue andere Dinge...

springe nach mainloop

tirq:
irqflag=1
timerregister wieder auf 40 setzen
rücksprung aus irqroutine

setdisplay:
irqflag=0
das Display ansteuern...oder was auch immer
rücksprung aus setdisplay

---------------------
Das dürfte das simple normale Verfahren sein.
Die Kombination aus dem Quarz und dem Timerwert
ergibt einen Interrupt präzise alle 10ms mit 0,0% Fehler

Gruss

von Pierre (Gast)


Lesenswert?

Hi
ich hab mal etwas probiert. zuerst will ich erstmal ne stoppuhr, ohne 
eine lcd anzeige. die zeit soll in 2 registern gespeichert werden.
leider hab ich noch nicht den gewünschten erfolg gehabt. kann mal jemand 
mein code anschauen.
die zeit, in hundertstel sekunden, soll in den registern r17 und r18 
gespeichert werden. ich hab eine taktrate von 4 mhz gewählt.

danke Pierre

von Pierre (Gast)


Angehängte Dateien:

Lesenswert?

sorry
hier ist die datei

von Uwe (Gast)


Lesenswert?

Hi,
Ich habe zwar nicht alles überdacht aber inc R17 setzt kein C-Flag,
nur Z,N,V. Du kannst R18 also nur über BRVS hochzählen.

start:

  ldi  r16, -0x61  ; lade dz. 97

ist es nicht einfacher  ldi R16,97 zu schreiben, mein ASM kann das.

Gruß Uwe

von Pierre (Gast)


Angehängte Dateien:

Lesenswert?

hallo
habe die application note von avr gelesen. jedoch komme ich immer noch 
nicht weiter. kann sich jemand noch mal die geänderte datei ansehen. es 
soll jede hunsertstel sekunde ein register inkrementieren. bei länger 
als 256 hundertstel sekunden. wird das nächste register genommen. wie 
könnte man die stopuhr noch anders bzw. genauer programmieren??

danke Pierre

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.