www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitte Hilfe !! PinCange-Interrupt will nicht gehen


Autor: UBoot-Stocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich häng seit zwei Tagen an folgendem Codefragment. Wie man sieht 
versuche ich den PIN-Change-Interrupt eines ATTiny15 zu benutzen. Wenn 
ich in folgendem Code den PIN 2 des IC (PortB 4) auf Masse lege, fürhr 
er trotzdem weiter munter seine Interrupts aus und verzweigt IMMER in 
meine Interrupt-Routine ...

Warum ? Stimmt da was am Environment nicht ?!

Wer kann mir helfen ?

Besten Dank schon mal

UBoot-Stocki

.include "tn15def.inc"

.org 0x000        ; Programm kommt an Anfang von PROM

.def temp = r16        ; temporäres Register definieren
.def led = r17

initint:
    rjmp init     ; Reset handler
    reti       ; IRQ0 handler
    rjmp pinchg    ; Pin change handler
    reti       ; Timer1 compare match
    reti       ; Timer1 overflow handler
    reti      ; Timer0 overflow handler
    reti       ; EEPROM Ready handler
    reti       ; Analog Comparator handler
    reti       ; ADC Conversion Handler

init:
    ldi temp, 0b11101111
    out DDRB, temp    ; Port PB3 als Ausgang, PB4 Eingang

    ldi led, 1    ; LED initialisieren

    ldi temp, 0b00100000
    out GIMSK, temp    ; Pin-Change Interrupt enable

    sei      ; Interrupts freigeben

    rjmp main    ; Programmstart

pinchg:
    in temp, PORTB
    andi temp, 0b00010000  ; vergleicht ob BIT PB4 gesetzt ist
    brne pinend

    ... hier soll was passieren ...

pinend:    reti

main:          ; Hauptprogramm
    rjmp main

Autor: UBoot-Stocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

niemand ne Idee ?

Gruß

UBoot-Stocki

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Böser Fehler:

in temp, PORTB    ;falsch !!!

richtig:

in temp, PINB

hab ich vorher auch überlesen

Autor: UBoot-Stocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Mikki,

vielen Dank für den TIP. Das war aber nur die halbe Miete ;-)

Offensichtlich setzt der PIN-Change-Interrupt voraus, daß der Eingang 
nicht offen ist. Wenn man als die Pull-Ups des Ports setzt gehts sofort 
!!!

Steht das irgendwo ? Habs nur durch Zufall entdeckt ...

Gruß

UBoot-Stocki

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Offene Eingänge sind undefiniert, steht aber so auch in "fast" jedem 
Datenblatt!

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.