www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA88 Timer 1 OCR1A-Interrupt


Autor: Manfred Schön (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Bei meinem ersten AVR-Projekt großteils in Assembler bin ich mir noch zu 
unsicher ob ich alles richtig mache.
Daher wäre es toll wenn sich jemand finden konnte der mal ein Auge auf 
den Code werfen könnte.

Ich verwendet Timer 1 in dreifacher Weise.

1. Als Zeitmessung
2. Als Zeitüberlaufüberwachung
3. Als Zeitverzögerung

Zum Start der Zeitmessung starte in den Timer und setze die 
OCR1A-Register auf den Zählerwert der maximalen Zeit ( Zeilen 1 - 6 )
Wird die Zeit überschritten ( der Zäherstand von Timer1 erreicht den 
Wert von OCR1A so wird der Interrupt aufgrufen - die 
Zeitüberlaufüberwachung wir behandelt)
Erfolgt keine Zeitüberschreitung bis der Programmablauf die Zeile 111 
erreicht, so wird der Zählerwert ausgelesen ( Zeitmessung ) , der Timer 
gestoppt, der Zählerwert ins OCR1A-register gschrieben, der Timer auf 
Null gesetzt und wieder gestartet.
Wenn nun der Zählerstand von Timer1 den Wert von OCR1A erreicht so wird 
wieder der Interrupt aufgerufen und darin die gewünschte Aktion 
ausgeführt ( Zeitverzögerung )

Das ganz funktioniert soweit ganz gut. Bin aber nicht sicher ob ich 
alles ganz richtig programmiert habe.

Wäre daher toll wenn sich jemand finden würde, der den Code 
kontrollieren könnte.  VIELEN DANK.
==============================================================

1   Tccr1a = &H00
2   Tccr1b = &H0E                                            ' Takt 
extern
3   Tccr1c = &H00
4
5   Ocr1ah = &HF0
6   Ocr1al = &H00

7      ldi r24,0
8      Out Tcnt1h , R24                                      ' Zähler 
rücksetzen
9      Out Tcnt1l , R24

10  On Oc1a Oc1a_int Nosave

11  Enable Interrupts
12 Enable Oc1a

~~~~
~~~~
restlicher Code
~~~~
~~~~


111      in R19ctradc1l,TCNT1L
112      in R20ctradc1h,TCNT1H

113      ldi r24,&H08
114      sts TCCR1B,r24                                        ' Timer 1 
stoppen

115      sts OCR1AH, R20ctradc1h                               ' 
Zählergrenzwert auf Triggerverzögerung setzen
116      sts OCR1AL, R19ctradc1l

117      ldi r24,0
118      Out Tcnt1h , R24                                      ' Zähler 
rücksetzen
119      Out Tcnt1l , R24
120      ldi r24,&H0E

121      sts TCCR1B,r24                                        ' Timer 1 
starten

===================================================================

mfg
Manfred Schön

Autor: Manfred Schön (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Wollt es nur wieder nach vorne bringen - sonst liest es ja keiner mehr 
;-)

hmg
Mandi

Autor: Manfred Schön (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

In dem Forum ist soviel los.
Hat keiner erbarmen mit mir ?

hmg
Mandi

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es "ganz gut" funktioniert, warum suchst Du dann krampfhaft nach 
Fehlern? Abgesehen davon: Was soll das in den ersten Zeilen sein? Etwa 
BASCOM?

Autor: Manfred Schön (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Da BASCOM leider den ATMEGA88 nicht richtig unterstützt musste ich 
einiges in Inline-Assembler machen.

Auch wenn was funktionert kann man es besser machen und noch was lernen.

Hab' erst heute wo gelesen: Erfahrung ist nichts wenn man es 30 Jahre 
lang falsch gemacht hat !!

hmg
Mandi

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.