Ich hab das programm nun auf den Tiny geschrieben.
Nur scheint es darauf nicht zu funktionieren. Das ist mein Code:
Code:
#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#define F_CPU 3686400
#define timer (256-F_CPU/64/1000)
#define RotH PORTB0
#define RotV PORTB1
#define BlauV PORTB2
int ms;
void initPorts()
{
DDRB |= (1<<PB0) | (1<<PB1) | (1<<PB2);
}
ISR(TIMER0_OVF_vect) //Timer Interrupt Vector
{
TCNT0 = timer;
ms++;
}
int main(void)
{
initPorts(); // Timer Interrupt initialisieren
TIMSK |= (1<<TOIE0);
TCCR0A=0x05; // 0b00000011, Vorteiler 1024 ca. 4khz
sei(); // enable interrupts
do
{
if(ms <= 1)
{
PORTB &= ~( (1<<RotH) | (1<<RotV) | (1<<BlauV)); //PORTB Pins 0,1,2 auf low
}
if(ms >= 5& ms <= 100)
{
PORTB |= (1<<RotV);
}
if(ms >= 100& ms <= 210)
{
PORTB |= (1<<RotH);
}
if(ms >= 210& ms <= 400 )
{
PORTB |= (1<<BlauV);
PORTB &= ~(1<<RotV);
}
if(ms >= 600)
{
ms = 0;
}
}
while (true);
}
Ich habe einzig den TCCR0=0x05; auf TCCR0A=0x05; gewechselt da der beim Tiny anderst heisst. Hab ich sonst noch einen Fehler?
Auf dem Mega 8 hat es wunderbar funktioniert
Lesezeichen