Hallo Leute, mein Timer 0 verhält sich nicht so, wie man das erwarten sollte, da ich in das Compare-Register einen Wert von 500 schreibe, mein Oszilloskop aber nicht mal eine 1µs! anzeigt, d.h. er löst sofort den Interrupt aus und zählt nicht vorher bis 500. Woran liegt das - ich probiere daran schon seit 3 Stunden herum!!! Überigens - der Wert, der in Phase = 1 geschrieben wird (uart_wert) funktioniert tadellos.
Sorry - ich meinte natürlich Timer1, also den 16-Bit Timer - das kann man dem Code auch entnehmen.
Kann sich bitte mal einer von den Experten meinen Code anschauen - ich komme echt nicht weiter - wenn ich Timer1 aktiviere, scheint der µC sofort in die Signal Overflow1 Routine zu gehen. Was ist da falsch?
Hi, ich finde dein Code ist ein bischen Kuddelmuddel , aber egal. Vielleicht nur ein Schuss ins blaue. Nimm bitte mal das sei(); aus der Funktion uart_init raus und setzte es bitte in die Main Funktion hinter Timer_init. Mfg Dirk
Guten Abend, das sei(); habe ich bereits dort hin positioniert, aber das bringt auch nichts (leider). Was findest du an meinem Code kuddelmuddel? Ich habe immer ein offenes Ohr für Verbesserungsvorschläge - die einzelnen Prozeduren sind ja schon nach ihrer Aufgabe geordnet!
Hallo, ich glaube du setzt den output compare immer auf 0, wenn vorher nichts übers uart reinkommt: SIGNAL(SIG_OUTPUT_COMPARE1A) // Timer1 = Wert { if (phase == '0') { phase = '1'; change_timer(uart_wert); } ... Daher auch die kurze Zeit. Setze mal uart_wert in init_timer() auf 500. Gruß Andreas
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.