www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zähler ohne Interrupt ?


Autor: TOTO (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.









Autor: Jack Braun (jackbraun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe nirgends ein Bit gefunden wo man denn Interrupt unterbinden
>kann.

Das versteh ich nicht. Es gibt doch das SFR IEN0, da kannst Du die
Interrupts einzeln freischalten.

Autor: TOTO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das stimmt,aber die sind alle auf 0 (ET0 ET1 EX0 EX1).

Habs nochmal getestet und jetzt funktionierts !!
Hmmmmm, wiedermal ein bug irgendwo.

Suchen suchen suchen ...

danke






Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.