Forum: Mikrocontroller und Digitale Elektronik Timer mit ATtiny24


von Mc S. (mcsplanish)


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
}

von MWS (Gast)


Lesenswert?

Evtl weil TIM0_COMPA_vect die richtige Bezeichnung für den Vektor wäre ?
;-)

von Stefan B. (stefan) Benutzerseite


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
}

von Mc S. (mcsplanish)


Lesenswert?

So jetzt geh ich ne Runde ausflippen ;)

TIM0 - Dat war alles! Hab ich net gewusst ;(

VIIEEEEELEN DANK!

von MWS (Gast)


Lesenswert?

Kuckst Du unter WinAVR-xxx\avr\include\avr nach iotn24.h, dort findest 
Du einen Verweis nach iotnx4.h und dort drin sind die Vektoren mit 
richtigem Namen verzeichnet. Ansonsten gibt's auch noch irgendwo 'ne 
Dokumentation dazu :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.