www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interruptumschaltung


Autor: Tom (Gast)
Datum:
Angehängte Dateien:

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

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: TOM (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: TOM (Gast)
Datum:

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

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.