16F84, IRQ's und Sleep

Gast #35530
Hast du denn die Interrupt abhandlung aktiviert und den Externen 
Interrup auch?
Es funktioniert auch nur mit einem Externen Interrupt, glaub ich!
mfg
Gast #35531
Hi,

ich habe nur die externen IRQ's belegt. Habe dabei den normalen ext. IRQ 
und den Upper 4 Pin IRQ aktiviert. Geht leider nicht. Wenn ich in einer 
Endlosschleife laufe, dann komme ich in die IRQ Routine rein. Im Sleep 
Mode nicht. Ich möchte damit eine Fernbedienung bauen. Möchte aber 
zeitgleich keine große ext. Hardware haben. Soll eine Fernbedienung für 
den Schlüsselbund mit max. 5 Tasten werden. Somit würden die 5 IRQ 
Leitungen reichen und ich bräuchte nur die Taster als ext. Hardware. Im 
Sleep Mode reicht die Batterie dann auch 10 mal so lange.

Gruß Binnesmann
Gast #35532
Hallo,
das geht  sogar aus mehreren Zuständen herraus! Einer davon ist der gut
zu nutzende Change On Port IRQ auf Portb. Allerdings ist zu beachten,
daß das Anlaufen dauert (bis zu Sekunden). Mit dem  Scope mal den Osz
Pin beobachten und die Zeit ablesen.
Steht aber alles im Datenblatt gut beschrieben.

MfG  Manfred Glahe
Gast #35533
Es ist bestimmt nicht schädlich wenn du deinen Quell-Code
veröffentlichst, oder? denn aus der fehrne zu sagen wo der fehler sitzt
ist kaum möglich.
Gast #35534
Habe endlich meinen Internetzugang wieder hinbekommen.

;Pic Initialisierung
    org     0      ;Programmstart

    jmp  Init

    org  4      ;Start nach Interrupt

    jmp  senden

Init    mov     !ra,#00000b    ;Port A Ausgabe
    mov     !rb,#0ffh    ;Port B Eingabe
    mov     ra,#00000b    ;Port A alles low
    mov     rb,#00h                 ;Port B alles low

    setb  ActivLED    ;Ich bin wach
    setb  DataOut      ;Breakpegel beenden

    mov  TasteRet,#00h
    clrb  INTCON.0    ;Upper 4 Bits / Port B Interruptflag
    clrb  INTCON.1    ;Ext. IRQ Flag
    clrb  INTCON.2    ;RTCC Overflowflag
    setb  INTCON.3    ;PortB Interrupt zulassen
    setb  INTCON.4    ;Externen Interrupt zulassen
    clrb  INTCON.5    ;RTCC Interrupt disable
    clrb  OPTION.6    ;Externen Interrupt bei Wechsel von High nach Low
    setb  INTCON.7    ;Interupts zulassen

    clrb    ActivLED    ;Ich geh wieder schlafen

    sleep

In der Routine mache ich nichts anderes als die Initialisierung. Das
klappt auch alles wenn ich statt dem sleep eine Endlosschleife
reinsetze. In dieser Version lande ich allerdings nie in der
Interruptroutine.

Gruß Binnesmann

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.