Forum: Mikrocontroller und Digitale Elektronik mega128 Ints unregelmäßig


von Jörg Haas (Gast)


Lesenswert?

Hallo,

Basis: mega128 und AVR-GCC an Port D 0 horcht der Oszi
bei dem ISR-Aufruf wird Pin 0 getoggelt:

ISR:

//------------------------------------------------------------------
SIGNAL (SIG_OVERFLOW0) {  // signal handler for tcnt0 overflow
  task_nr++;
  PORTD=(PIND^0x01);

  if (teiler_ae1==Tmax1) {  //
    teiler_ae2=0;    //zählt modulo Tmax1
    flag_ae2=1;      //Flag setzten
  }
  else
    teiler_ae2++;
}
//------------------------------------------------------------------

Das sollte jetzt doch wohl regelmäßig stattfinden L-Zeit = H-Zeit?
Oder? Jedenfalls unabhängig vom Programm in der main, das kein DI/EI
beinhaltet.
Bei mir leider nicht. (Andere Int.-Quellen sind nicht enabled.)


Gruß
joh

von thkais (Gast)


Lesenswert?

Versuchs mal mit

PORTD ^= 0x01;

anstelle

PORTD=(PIND^0x01);

Es könnte sein, daß beim Einlesen des Ports via PIN Mist herauskommt,
weil der Pin ohne Pull-Up floatet.

von Jörg Haas (Gast)


Lesenswert?

Danke thkais,

das Ei lag an ganz anderer Stelle. Mißtraue Deiner Messtechnik?
Ich benutze ein Bitscope dessen DSO Frontend beim zoomen in X-Richtung
in sein Auflösungsraster u.U. stark verzerrt. Mit einem anderen Oszi
sieht es sauber aus.

Gruß
joh

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.