Forum: Compiler & IDEs Timer1 verhält sich komisch


von Frank Maier (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Hubert (Gast)


Lesenswert?

Kann man in ein 8-Bit-Register nicht maximal 255 hineinschreiben?

von Frank Maier (Gast)


Lesenswert?

Sorry - ich meinte natürlich Timer1, also den 16-Bit Timer - das kann
man dem Code auch entnehmen.

von Frank Maier (Gast)


Lesenswert?

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?

von Dirk (Gast)


Lesenswert?

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

von Frank Maier (Gast)


Lesenswert?

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!

von Andreas W. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.