Reset nach ISR (INT0_vect)??

Gast #2428947
Lesenswert?
• ▲
▼
Atmega16
AVR Studio 5
AVR Dragon


Hallo zusammen,

ich habe folgendes Problem:

Ich habe in C ein Progrämmchen geschrieben, das mir ein Lauflicht in 
einer bestimmten Frequenz erzeugen soll. Soweit so gut. Ich habe die 
Funktionalität des Codes so weit reduziert, dass ich nur die Register 
setze und dann im loop (while(1)) nach Betätigung eines Schalters an 
INT0 eine LED an PORTA rotieren lassen will.
Ich debugge über JTAG OnChip. Wenn ich Einzelschritte beim debuggen 
ausführe, springt der Code nach betätigen des Schalters in die 
Interruptroutine, die erste LED leuchtet auf und danach steht der gelbe 
Ausführungspfeil wieder vor
1
int main(void){...

Sieht mir nach nem Reset aus, aber warum???

Wenn ich ohne debugging den Chip einfach laufen lasse, blitzt beim 
betätigen des Schalters die erste LED kurz auf, dann Reset.

Jemand ne Idee???

Code:
1
#define F_CPU 1000000UL
2

3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <stdint.h>
6
#include <stdlib.h>
7

8
//####################### Variablen ################################
9

10
struct Timer
11
{
12
    volatile uint16_t NeededOverflows;
13
    volatile uint16_t OverflowCount;
14
    volatile uint8_t Frequencies[6];
15
    volatile uint8_t TimerIndex;
16
    volatile uint8_t Lauflicht;
17
};
18

19
struct Timer T0 = {.NeededOverflows=0,.OverflowCount=0,.Frequencies={4,7,6,2,9,7},.TimerIndex=0,.Lauflicht=1};
20
struct Timer T1 = {.NeededOverflows=0,.OverflowCount=0,.Frequencies={7,9,3,5,11,8},.TimerIndex=1,.Lauflicht=1};
21
    
22
//############################# Funktionen ##################################
23
  
24
void SetConfigureRegisters(void)
25
{  
26
      
27
  GICR   = (1<<INT0);        //|(1<<INT1);
28
  MCUCR  = (1<<ISC01);      //Falling edge sense of INT0
29
  TCCR0  = (1<<CS00);        //kein Prescale
30
  TCCR1B = (1<<CS10)|(1<<ICNC1);  //|(0<<ICES1); // Noise Canceller aktiv, kein PreScale
31
  TIMSK  = (1<<OCIE0)|(OCIE1A);  //|(1<<TICIE1); // Interrupts akivieren, Capture
32

33
}
34

35
void SetPortDirectionRegisters(void)
36
{
37
  DDRA = 0xFF;
38
  //DDRB = 0x02;
39
  //DDRC = 0x00;
40
  //DDRD = 0xFF;
41
}
42

43
void SetAllPortsToValue(int Value)
44
{
45
  PORTA = Value;
46
  //PORTB = Value;
47
  //PORTC = Value;
48
  //PORTD = Value;
49
}
50

51
void SetPortA(void) {
52
        
53
              PORTA = ~T1.Lauflicht;                   // Untere 8 Bit auf PORT B ausgegeben
54
              T1.Lauflicht = T1.Lauflicht<<1;                   // Lauflicht um 1 Bit nach links weiterschieben
55
              if (T1.Lauflicht == 0)                     // Wenn Lauflicht durchgelaufen ist, dann wieder am Anfang beginnen
56
                  T1.Lauflicht = 1;
57
}
58
  
59
//####################### Interrupts ###############################
60

61

62
ISR(INT0_vect) {
63
  
64
  SetPortA();
65
}
66

67
//############################## Main-Funktion ####################################
68

69
int main(void) {
70

71
  SetPortDirectionRegisters();
72
  SetAllPortsToValue(~0);
73
  SetConfigureRegisters();    //Initialisierung T1+0
74
  
75
  sei();
76
  
77
  while(1) {
78
    
79
  }
80

81
return 0;
82

83
}

Antwort schreiben

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.

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.