Zähler ohne Interrupt ?

Gast #559513
Lesenswert?

Hi,

Ich habe ein AT89c51ed2 und sdcc als compiler.
In meiner Applikation benutzte ich die P3_4(T0) P3_5(T1) als 
Inkrementaleingänge.
Timer0 und Timer1 benutzte ich hierfür nur als Zähler (Counter), mit 
TL0/TH0 und TL1/TH1.
Also zählen mit wenig CPU Intervention und ohne Interrupt.

Hierfür habe ich folgende Register konfiguriert:

TMOD=0x55;
TR1=ON;  TR0=ON;

Das ganze klappt auch sehr gut so.

Was mir nur aufgefallen ist, ist das wenn es eine Interruprt routine 
gibt diese auch ausgeführt wird:

void interex0 (void) interrupt IE0_VECTOR
{
  Int0++;
  return;
}

Wenn ich diese aus dem Code entferne, funktioniert es auch.
Aber warum wird überhaupt ein Interrupt generiert???
Zudem nie Überlauf des Zählers statt findet.

Ich habe nirgends ein Bit gefunden wo man denn Interrupt unterbinden 
kann.
Abgesehen TR0 und TR1,doch dann funktionieren die Zähler auch nicht 
mehr.

Was jemand bescheid warum das so ist ?

Danke im voraus.








#559565
Lesenswert?

TOTO wrote:

> Hmmmmm, wiedermal ein bug irgendwo.

Warscheinlich in dem ganzen Rest des Codes, den Du nicht gepostet hast.

Ich kann Dir versichern, ohne die Enable-Bits zu setzen, gibts auch 
keine Interrupts.

Und wenn man sie setzt, muß auch unbedingt ein Interrupthandler 
aufgesetzt werden. Sonst krachts und zwar an einer ganz anderen, völlig 
unverdächtigen Stelle.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren