Pin Change Interrupt verursacht, dass der Atmega sich resetet

OP #5227404
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Schaltung mit einer 7-Segment-Anzeige und 2 Taster. 
Verwendeter µC Atmega328P-PU

Ich wollte, dass wenn man den rechten Taster drückt, dass der 
Dezimalpunkt bei jedem Schritt des Lauflichts blinkt. Das geht schonmal

Der linke Taster soll den Zustand des Dezimalpunktes wechseln bei jedem 
kompletten Umlauf des Lauflichts, aber so dass der Dezimalpunkt sofort 
leuchtet beim Drücken und bei genau dieser Stelle immer wieder wechselt

Dazu wollte ich Pin Change Interrupts verwenden. Allerdings klappt das 
nicht, da der Atmega sich resetet, wenn der Interrupt auftritt.

Was kann ich tun? Hier ist der Testcode für den PCINT
1
#define F_CPU 8000000UL
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5
#include <avr/interrupt.h>
6

7
ISR(PCINT1_vect) {
8
  PORTB = 0b00000100;
9
}
10

11
int main() {
12
  DDRD = 0b00111111;
13
  DDRB = 0b00000100;
14

15
  PCMSK0 = (1 << PCINT1);
16
  PCICR = (1 << PCIE0);
17
  sei();
18

19
  uint8_t input;
20
  while(1) {
21
    for(int i = 0; i < 6; ++i) {
22
      _delay_ms(200);
23
      
24
      PORTD = 0b00100000 >> i;
25
      
26
      input = PINB;
27
      input &= 0b00000001;  
28
      if(input != 0) {
29
        PORTB ^= 0b00000100;
30
      }
31
    }
32
  }
33
}

Das ist erst noch Test, deshalb wird in der ISR nur ein Pin gesetzt

Danke für jede Hilfe

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 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.