ATmega mit Timer1 und Touchpanel stürzt ab

OP #2568409
Lesenswert?
• ▲
▼
Hallo,
ich habe einen ATmega 1284 PU.
Dieser steuert ein Touchscreen (128x64) und generiert zusätzlich mittels 
Timer1 im CTC - Modus ein Signal.

Der uC startet jedoch ständig neu.

Beide Funktionsbereich alleine Funktionieren wunderbar.
Nur wenn der uC beide Dinge tun soll, stürzt er ab und startet sofort 
neu.

Hier der Quelltext der main mit ISR:
1
 // Timer1 - ISR
2
void Timer1COMPA_ISR() org IVT_ADDR_TIMER1_COMPA {
3
SREG_I_bit = 0;                      // Interrupt disable
4
PORTB.B0 = ~PORTB.B0;
5

6
ADC_Value = adc_read(4);
7

8
if(ADC_Value <= S2){
9
y = Q /(S2 - S1) * (ADC_Value - S1) - Q;
10
PortB.B1 = 1;
11
PortB.B2 = 0;
12
PortB.B3 = 0;
13
}
14

15
if (ADC_Value > S2 && ADC_Value <= S3){
16
y=65500;
17
PortB.B1 = 0;
18
PortB.B2 = 1;
19
PortB.B3 = 0;
20
}
21
if(ADC_Value > S3){
22
y = Q / (S4 - S3)* ADC_Value - (Q /(S4 - S3)) *S3;
23
PortB.B1 = 0;
24
PortB.B2 = 0;
25
PortB.B3 = 1;
26
}
27

28
  OCR1AH = y;
29
  OCR1AL = (y>>8);
30
// Just for controlling
31
Timer1counter++;
32

33
SREG_I_bit = 1;                      // Interrupt enable
34

35
}
36

37

38
void main() {
39

40
//Pindirections **** *************************************************/
41
// 0 means input - 1 means output
42
   DDRB = 0b100001111;
43
   PORTB = 0x00;
44
/******************************************************************************/
45
  adc_init(); //AD-Wandler initialisieren
46
  
47
  TIMSK1 = 0b00000010;       //compare A Register Interrupt on
48

49
  y=65500;                 // write Compare Value in register
50
  OCR1AH = y;
51
  OCR1AL = (y>>8);
52

53
//MCU Clock Frequency 20 MHz
54
  TCCR1A = 0b00000000;
55
  TCCR1B = 0b00001100;                 // 0b00000001 starte Timer1 mit Prescaler 1   s.D.-sheet 160
56

57
  SREG_I_bit = 1;                      // Interrupt enable
58

59
  Start_TP();
60

61
  while (1) {
62
    Check_TP();
63
  }
64

65
}
Was könnte hier der Grund sein?
Danke!

Gruß Roland

Antwort schreiben

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