mikrocontroller.net

Forum: Compiler & IDEs TCNT1H zurücksetzen und Overflow-Routine


Autor: Patrick Weber (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade eine ABS-Regelung auf einem 8515 zu programmieren,
das klappt auch alles soweit ganz gut, nur leider zeigen sich nun
Probleme auf zu denen ich keine Antwort weiß...

Zum Einen benutze ich den 16-bit Counter welchen ich auch starten kann.
Nur beim Zurücksetzen will er nicht so wie ich will. Ich setze erst den
TCNT1L über folgende Zeile zurück: outp(0x00, TCNT1L); und in der
nächsten Zeile dann: outp(0x00, TCNT1H); und damit doch das High
Register oder? Nur leider macht er das nicht, sondern bleibt munter auf
diese Zahl stehen. Hab ich da was falsch gemacht?

Zum Anderen hänge ich immer noch mit der Overflow Routine... Ich
möchte, wenn der 8-biter überläuft einfach ein Variable hochzählen und
diese dann auf den LEDs ausgeben. Ich habe diese Variable auch mit
volatile deklariert aber es geht leider nicht. Auch wenn ich in die
outp Zeile einfach eine Zahl hineinschreibe macht er das auch nicht,
ich stehe vor einem Rätsel...

Vielleicht kann sich einer meiner annehmen und mir dabei helfen.
BITTE...

Ich hänge auch mal die vorläufige Datei an...

Vielen Dank

Patrick Weber

Autor: Andreas Wiese (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum ~wert und nicht wert_r?
Zu dem 16 bit Register: Es muss beim schreiben immer zuerst das
High-Register geschrieben werden, dann low. Ich habe es bei WinAVR noch
nicht ausprobiert, aber der Compiler unterstütz doch sicher 16bit
Zugriff auf die Register, oder nicht?

Gruß
Andreas

Autor: Patrick Weber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn der wert_r negiert wird, bedeuten die LEDs die an sind eine 1! Das
ist der einzige Grund ;-)

Ja das habe ich auch gelesen und auch befolgt, aber dennoch köscht er
mir nur den Low-Register, der High bleibt unverändert...

MfG Patrick

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwende neue Schreibweise (ohne outp()), und mit WinAVR kannst du 16bit
Registern direkt lesen/schreiben:
TCNT1 = 1213;

Autor: Patrick Weber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe das jetzt so geschrieben:

TCNT1H = 0;
TCNT1L = 0;

Aber das Ergebniss ist dasselbe....

Grüsse

Patrick

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.