Crocodile
16.12.2005, 17:23
Hallso zusammen,
Arbeite gerade mit dem ATtiny2313 V, timer macht aber nicht mit!
Folgender Code funktioniert nicht auf dem ATtiny aber auf dem Mega32.Hab den Code im AVRstudio getestet da funktioniert er mit dem 2313 irgentwie , weiss echt nicht woran es liegen kann! :-k
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
volatile int counter = 0;
int main() {
DDRB = (1<<PB2); /*Ausgang*/
DDRB = (1<<PB1); /*Ausgang*/
DDRD |= (1<<PD6); /*Ausgang*/
TCCR1B = (1<<CS10)|(1<<CS11);/*CPU-Takt / 64*/
TIMSK = 0x84; /* Timer0 Overflow Interrupt enable*/
TCNT1 = 3036;
sei(); /* Global Enable Interrupt Flag setzen */
while(1)
{
if (counter == 1) {
PORTD |= (1<<PD6); /*High*/
PORTB = (1<<PB1); /*High*/
_delay_ms(100);
counter = 0;
}
else
{
PORTD &= ~(1<<PD6); /*low*/
PORTD &= ~(1<<PB1); /*low*/
}
}
}
SIGNAL (SIG_OVERFLOW1) /*Interrupt-Routine*/
{
counter++; /*um eins inkrementieren*/
}
Arbeite gerade mit dem ATtiny2313 V, timer macht aber nicht mit!
Folgender Code funktioniert nicht auf dem ATtiny aber auf dem Mega32.Hab den Code im AVRstudio getestet da funktioniert er mit dem 2313 irgentwie , weiss echt nicht woran es liegen kann! :-k
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>
volatile int counter = 0;
int main() {
DDRB = (1<<PB2); /*Ausgang*/
DDRB = (1<<PB1); /*Ausgang*/
DDRD |= (1<<PD6); /*Ausgang*/
TCCR1B = (1<<CS10)|(1<<CS11);/*CPU-Takt / 64*/
TIMSK = 0x84; /* Timer0 Overflow Interrupt enable*/
TCNT1 = 3036;
sei(); /* Global Enable Interrupt Flag setzen */
while(1)
{
if (counter == 1) {
PORTD |= (1<<PD6); /*High*/
PORTB = (1<<PB1); /*High*/
_delay_ms(100);
counter = 0;
}
else
{
PORTD &= ~(1<<PD6); /*low*/
PORTD &= ~(1<<PB1); /*low*/
}
}
}
SIGNAL (SIG_OVERFLOW1) /*Interrupt-Routine*/
{
counter++; /*um eins inkrementieren*/
}