Bevor ich weiter mache. Wollte ich erstmal mit den Umgang von Timern und Interrupts lernen.
Anfangen wollte ich mit den Timern. (Später dann zb. durch einen Timer-Overflow ausgelöste Interrupts)
Leider habe ich das mi den Timer noch nicht ganz im Griff.
Ich gehe nach diesem Tutorial.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR
Ziel ist es eine PWM zu erstellen, die auf-/abzählt.
CodeBox C
Anfangen wollte ich mit den Timern. (Später dann zb. durch einen Timer-Overflow ausgelöste Interrupts)
Leider habe ich das mi den Timer noch nicht ganz im Griff.
Ich gehe nach diesem Tutorial.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR
Ziel ist es eine PWM zu erstellen, die auf-/abzählt.
Regiser: TCNT1H, TCNT1L
In der PWM-Betriebsart wird das Register als Auf/Ab-Zähler verwendet, d.h. der Wert steigt zuerst von 0, bis er den Überlauf von 65535 auf 0 erreicht hat. Dann zählt das Register rückwärts wiederum bis 0.
CodeBox C
#include <avr/io.h>;
int main ()
{
DDRE = 0b11111111;
while(1)
{
TCCR1A |= (1<<COM1A1); // PWM-Modus auswählen: Invertierte PWM
TCCR1A &= ~(1<<COM1A0); // Nach dem Hochzählen OC1 auf 0
TCCR1A |= (1<<PWM11); // Hiermit sage ich dem Compiler...
TCCR1A |= (1<<PWM10); // ...das er eine 10bit PWM machen soll
}
}
Build started 27.3.2009 at 14:51:19
avr-gcc.exe -mmcu=atmega8515 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT pwm_timer.o -MF dep/pwm_timer.o.d -c ../pwm_timer.c
../pwm_timer.c:1:20: warning: extra tokens at end of #include directive
../pwm_timer.c: In function 'main':
../pwm_timer.c:12: error: 'PWM11' undeclared (first use in this function)
../pwm_timer.c:12: error: (Each undeclared identifier is reported only once
../pwm_timer.c:12: error: for each function it appears in.)
../pwm_timer.c:13: error: 'PWM10' undeclared (first use in this function)
make: *** [pwm_timer.o] Error 1
Build failed with 4 errors and 1 warnings...