Timer mit ATtiny24

OP #1883661
Lesenswert?

Hallo zusammen,

ich mach jetzt hier schon stundenlang an einem einfachen Timer rum. Kann 
mir einer von euch sagen, warum die LED nicht toggelt???

1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
//#include <avr/sleep.h>
4
//#include <avr/eeprom.h>
5
//#include <avr/wdt.h>
6

7
volatile uint8_t millisekunden;
8
volatile uint8_t sekunde;
9

10
int main(void){
11

12

13
    // Init PORT A
14
    PORTA = (1<<PA1);
15
    DDRA  = 0xff;
16
   
17

18
  // Timer 0 konfigurieren
19
  TCCR0A |= (1<<WGM01); // CTC Modus (Clear Timer on compare Match)
20
  TCCR0B |= (1<<CS01); // Prescaler 8
21
  OCR0A = 125-1; // ((1000000/8)/1000) = 125 Vergleichswert
22
 
23
  // Compare Interrupt erlauben
24
  TIMSK0 |= (1<<OCIE0A);
25
 
26
  // Global Interrupts aktivieren
27
  sei();
28
 
29
 
30
     while(1){
31

32
      }
33
    return 0;
34
        
35

36
}
37

38
/*
39
Der Compare Interrupt Handler 
40
wird aufgerufen, wenn 
41
TCNT0 = OCR0A = 125-1 
42
ist (125 Schritte), d.h. genau alle 1 ms
43
*/
44
ISR(TIMER0_COMPA_vect)
45
{
46
  millisekunden++;
47
  if(millisekunden == 100)
48
  {
49
    sekunde++;
50
    millisekunden = 0;
51
    if(sekunde == 10)
52
    {
53
      PORTA ^= (1<<PA1);
54
      sekunde = 0;
55
    }
56
  }
57

58
}
Persönliche Seite #1883691
Lesenswert?

LED falsch angeschlossen z.B. verkehrt herum? Das kannst du 
ausschliessen, wenn ein einfacheres Programm die LED mit 1 Hz blinken 
lässt:
1
#define F_CPU 1000000L // Werkseinstellung interne Taktquelle
2
#include <avr/io.h>
3
#include <util/delay.h>
4

5
int main(void)
6
{
7
  // Init PORT A
8
  DDRA  = (1<<PA1); // Richtung I/O: Ausgabe
9
  PORTA = (1<<PA1); // Startwert
10

11
  while(1) // Für immer
12
  {
13
    PORTA ^= (1<<PA1); // Umschalten
14
    _delay_ms(500);    // Warten
15
  }
16
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren