Henry
15.02.2007, 20:41
Hallo,
ich bekomme es einfach nicht hin mit den Timern und nun suche ich bei euch Hilfe
Ich habe versucht mit Hilfe des AVR-GCC Tut von Mikrocontroller.net einen Timer zum laufen zu bekommen, nur leider mache ich scheinbar irgendetwas falsch.
Mit C kenne ich mich leider nicht so richtig aus, den ich programmiere meine kleinen PC-Progrämmchen mit Delphi (also Pascal). Meine ATMega möchte ich in C programmieren, da es da mir das sehr verbreitet scheint.
Mein Testobjekt ist ein ATMega16 und mein Versuch sieht wie folgt aus:
Timer Aktivieren:
void init_timer()
{
TCCR0 = (1<<CS00) | (0<<CS01) | (1<<CS02);
}
Versuch einen Ausgang zum blinken zu bewegen:
#include <avr/io.h>
#include "inttypes.h"
int main()
{
int32_t Zaehler = 0;
init_digital(); //Ports als Ausgänge schalten
init_timer(); //Timer Aktivieren
while(1)
{
if (TCNT0 == 100)
{
Zaehler++;
PORTB = (0<<PB2);
}
if (Zaehler == 1020)
{
Zaehler = 0;
PORTB = (0<<PB2);
}
if (Zaehler == 250)
{
PORTB = (0<<PB0);
}
if (Zaehler == 1000)
{
PORTB = (1<<PB0);
}
} //while
} //main
Bin wie gesagt noch etwas auf Kriegsfuß mit C, daher bitte nicht über den Code wundern. Der ist mit sicherheit alles andere als Professionell und scheinbar ja auch falsch ;)
Könnt Ihr mir evt. sagen was ich da für einen Denkfehler mache?
Danke schon einmal vorab
ich bekomme es einfach nicht hin mit den Timern und nun suche ich bei euch Hilfe
Ich habe versucht mit Hilfe des AVR-GCC Tut von Mikrocontroller.net einen Timer zum laufen zu bekommen, nur leider mache ich scheinbar irgendetwas falsch.
Mit C kenne ich mich leider nicht so richtig aus, den ich programmiere meine kleinen PC-Progrämmchen mit Delphi (also Pascal). Meine ATMega möchte ich in C programmieren, da es da mir das sehr verbreitet scheint.
Mein Testobjekt ist ein ATMega16 und mein Versuch sieht wie folgt aus:
Timer Aktivieren:
void init_timer()
{
TCCR0 = (1<<CS00) | (0<<CS01) | (1<<CS02);
}
Versuch einen Ausgang zum blinken zu bewegen:
#include <avr/io.h>
#include "inttypes.h"
int main()
{
int32_t Zaehler = 0;
init_digital(); //Ports als Ausgänge schalten
init_timer(); //Timer Aktivieren
while(1)
{
if (TCNT0 == 100)
{
Zaehler++;
PORTB = (0<<PB2);
}
if (Zaehler == 1020)
{
Zaehler = 0;
PORTB = (0<<PB2);
}
if (Zaehler == 250)
{
PORTB = (0<<PB0);
}
if (Zaehler == 1000)
{
PORTB = (1<<PB0);
}
} //while
} //main
Bin wie gesagt noch etwas auf Kriegsfuß mit C, daher bitte nicht über den Code wundern. Der ist mit sicherheit alles andere als Professionell und scheinbar ja auch falsch ;)
Könnt Ihr mir evt. sagen was ich da für einen Denkfehler mache?
Danke schon einmal vorab