Forum: Mikrocontroller und Digitale Elektronik Interrupt will nicht


von Marcus Gerlach (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe gerade versucht mit dem Interrupt an meinem AT89S8252 zu
arbeiten, aber es klappt nicht so ganz.
Ich habe den ASM Code aus dem Anhang hineingeschrieben.
Ich wollte das wenn ein Interrupt an Int0 auf Port P3.2 ausgelöst wird,
eine LED an Port P2.0 aus geht, also nicht mehr leuchtet. An Port 2 ist
ein ULN2803 angeschlossen der als inverter eingesetzt wird.
Was ich beobachten konnte, war das die LED ohne auch nur einen
Interrupt  ausgelöst zu bekommen aus ging. Warum ist das so? Ist an
meinem Code was nicht richtig? Ich hoffe da kann jemand licht ins
dunkel bringen.
Gruß Marcus

von Marcus Gerlach (Gast)


Lesenswert?

Hallo,
weis denn vielleicht jemand die Einsprungadresse für den Externen
Interrupt vom AT89S8252? Also im 8051 ist es ja die Adresse 0003h, aber
im At89S8252 ist sie glaube ich anders.
Hilfe

von crazy horse (Gast)


Lesenswert?

schau mal bei Atmel, die haben Datenblätter für ihre Prozessoren - da
stehen u.a. bestimmt auch die Vektoren drin....
Ich benutze die nicht, deshalb kann ich die auch keine direkte Antwort
geben.

von Marcus Gerlach (Gast)


Lesenswert?

Hab das Datenblatt schon durchgewälzt, aber leider finde ich nichts
darüber :-(

von Alexander _. (bastlwastl)


Lesenswert?

So ein ähnliches Problem hab ich auch.

Bei mir ist's der ATmega8.

Egal was ich mache, sobald ich die Interupts wie im AVR-Tutorial
http://www.mikrocontroller.net/tutorial/interrupts
im Beispiel extinttest.asm gezeigt verwende, werden die B-Ports auf low
gesetzt und ich kan an den Tasten herumdrücken ohne dass etwas
passiert.

Ich bin auch immer noch am Suchen.
Eventuell hast du den gleichen Fehler wie ich.

mfg Alex

von Peter Dannegger (Gast)


Lesenswert?

Ein 8051-Programm startet an der Adresse 00000h und nicht an 01000h.

Es läuft also durch die leeren 0FFh durch und führt brav das CLR P2.0
aus. Und danach läuft es in den Wald (wohin zufällig R6,R7 zeigt).


Wenn Du schon weißt, daß der Vector 00003h heißt, warum schreibst Du
dann 000A8h ?
Da kannst Du nämlich lange auf einen Interrupt warten.


Peter

von Marcus Gerlach (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
falls es jemandem der auch dieses Problem hat/hatte/haben wird weiter
hilft ist hier ein funktionierender code angehängt. Es klappt jetzt
endlich.
Danke für den Tip Peter

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.