Forum: Mikrocontroller und Digitale Elektronik Interruptumschaltung


von Tom (Gast)


Angehängte Dateien:

Lesenswert?

@all,

ich versuche gerade mit einem 80c517a Interrupts online zu ändern
jedoch ohne erfolg.
Mein Programm soll ein Signal auswerten konstant, zu einem bestimmten
Zeitpunkt einmal am Tag möchte ich die beide Interrupts die zum
auswerten des Signals notwendig sind abschalten und dafür zwei andere
eineschalten die ein zweites Signal auswerten sollen und nach 3 Minuten
das ganze zurück also Interrupts signal 2 AUS und Signal 1 an.
Muss man hier was besonderes beachten?
Ich hänge mal noch ein Testprogramm an, ich hoffe nicht zu umständlich
da Anfänger.


Gruß

Tom

von Peter D. (peda)


Lesenswert?

Das ganze sieht ja höllisch kompliziert aus.

Was sind denn das für nen Haufen Signale ?

Wenn Du meinst Interrupts zu enablen und disablen, das kannst Du zu
jeder beliebigen Zeit.

Beim Enablen ist nur darauf zu achten, vorher das korrespondierende
Interruptflag zu löschen, will man nicht auf längst vergangene
Ereignisse triggern.


Wenn es Dir aber nur darum geht, eine DCF77 Uhr zu basteln, daß geht
wesentlich einfacher:

http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htm


Peter

von TOM (Gast)


Lesenswert?

@Peter,

ich versuche gerade zwei lauffähige Programme zusammenzubasteln.
Das erste ist zur Erkennung mehrerer Funkmodulen daher ziemlich viele
Signale und Variablen da es sich um verschiedene Datentelegramme
handelt und das zweite ist die erkennung des DCF Signals.
Zur Signalauswerung nehme ich P1.0,P1.1 und Timer2 diese möchte ich
abschalten(DISABLE) und danach P1.3,P1.5 und Timer1 zur erkennung des
DCF Signals einzuschalten(ENABLE) und das ganze nach dem erkennen der
Zeit wieder zurück.
Wenn ich aus dem angehängten Programm das folgende auskommentiere dann
funktioniert das Programm.

//Interrupts inizialisieren
I3FR = 0;   //Einstellung vom P1.0 auf fallende Flanke
EX3 = 1;    //Einschalten der Interruptfunktion an P1.0
EX4 = 1;    //Einschalten der Interruptfunktion an P1.1
IT1 = 1;    //Einstellung vom P3.3 auf fallende Flanke
EX1 = 1;    //Einschalten der Interruptfunktion P3.3
 Es schein etwas nicht zu passen wenn ich die Interrupt einschalte und
Sie dannwieder abschalte?!?!?!?;-()
Ich kann mir dieses auch nicht erklären und dache ich poste mal.

TOM

von Peter D. (peda)


Lesenswert?

Naja, wenn Du 6 Interrupts (EX1, EX3, EX4, EX6, ET1, ET2) einschaltest,
aber nur 3 Interrupthandler schreibst, muß das natürlich krachen.

Jeder benutzte Interruptvektor muß auch einen Handler haben !


Peter

von TOM (Gast)


Lesenswert?

@Peter,

Danke schon mal für die Schnelle Antwort.
Ist mir heute zu spät werde es morgen noch mal probieren.
Melde mich wieder.


TOM

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.