Forum: Compiler & IDEs Hilfe bzeüglich Timer & LED


von BJBJ (Gast)


Lesenswert?

Hallo @ All,

Ich möchte gerne einen Timer programmieren (8bit), der nach einem 
Overflow (255 Takten) eine LED einschaltet, nach einem weiteren Overflow 
die LED wieder ausmacht (Und dann immer so weiter^^)

Mein Code sieht so aus:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
4
 
5
int main(void)
6
{
7
  // Timer 0 konfigurieren
8
  TCCR0 = (1<<CS01) // Prescaler 8
9
 
10
  // Overflow Interrupt erlauben
11
  TIMSK |= (1<<TOIE0);
12
 
13
  // Global Interrupts aktivieren
14
  sei();
15
16
DDRC=3; // damit sind dann PC0 und PC1 Ausgänge
17
 
18
  while(1)
19
20
  {
21
22
  PORTC = 11; //0. bit im Port C setzen
23
24
    PORTC = 0; //0. bit im Port C löschen
25
26
  }
27
}
28
 
29
/*
30
Der Overflow Interrupt Handler
31
wird aufgerufen, wenn TCNT0 von
32
255 auf 0 wechselt (256 Schritte),
33
d.h. ca. alle 2 ms
34
*/
35
#ifndef TIMER0_OVF_vect
36
// Für ältere WinAVR Versionen z.B. WinAVR-20071221 
37
#define TIMER0_OVF_vect TIMER0_OVF0_vect
38
#endif
39
 
40
ISR (TIMER0_OVF_vect)
41
{
42
  /* Interrupt Aktion alle
43
  (1000000/8)/256 Hz = 488,28125 Hz
44
  bzw.
45
  1/488,28125 s = 2,048 ms  
46
  */
47
}


Kann mir jemand weiterhelfen ?
Da ich noch ziemlich neu bin, habe ich den Quellcode kopiert, eingefügt 
und habe nur "DDRC=3" hinzugefügt und die Ports an und ausgeschaltet.

Grüße,

: Bearbeitet durch User
von BJBJ (Gast)


Lesenswert?

Titel geändert*

von Narfie (Gast)


Lesenswert?

Der Inhalt der while()-Schleife ist falsch. Du musst lediglich innerhalb 
der Timer-Interrupt-Routine die LED abwechselnd ein und ausschalten.

von BJBJ (Gast)


Lesenswert?

Blöde Frage - und wie mache ich das..?
Könntest du mir das kurz Verbessern? Da steige ich irgendwie nicht mehr 
durch..

von Nil (nilsnilss)


Lesenswert?

Kleiner Tipp:
Anstatt irgendwelchen Code zusammen zu kopieren einfach ein Tutorial 
durcharbeiten, dann steigst du irgendwann durch.

von Teo D. (teoderix)


Lesenswert?

Nils Friess schrieb:
> Kleiner Tipp:
> Anstatt irgendwelchen Code zusammen zu kopieren einfach ein Tutorial
> durcharbeiten, dann steigst du irgendwann durch.

http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte

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.