www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Stopuhr


Autor: Pierre (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fred Ziebell (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pierre (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pierre (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
sorry
hier ist die datei

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Pierre (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.