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
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
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
Verwende neue Schreibweise (ohne outp()), und mit WinAVR kannst du 16bit Registern direkt lesen/schreiben: TCNT1 = 1213;
Hallo, ich habe das jetzt so geschrieben: TCNT1H = 0; TCNT1L = 0; Aber das Ergebniss ist dasselbe.... Grüsse Patrick
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.