Hi,
nochmal mein Problem mit schlankem code![]()
[code#include <avr/io.h>
#include <progmem.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
//Arbeitstakt angeben
#define SYSCLK 8000000UL
//usart ansprechen
volatile unsigned int count=0;
volatile unsigned int count2=0;
volatile unsigned int Stellweg=1;
void timer (void){
TIMSK = _BV(TOIE0); //overflow flag setzen--> ab jetzt kann overflow interrupt ausgelöst werden
TCNT0 = 0; //Rücksetzen des Timers
TCCR0 = _BV(CS01); //Prescaler 8
}
void timer1 (void){
TIMSK = _BV(TOIE1); //overflow flag setzen--> ab jetzt kann overflow interrupt ausgelöst werden
TCNT1 = 0; //Rücksetzen des Timers
TCCR1B = _BV(CS00); //Prescaler 1
}
int main(void) {
timer ();
timer1();
sei (); //interrupts ein
DDRB = 0xff;//PortB = Ausgabe
PORTB = 0xff;
for (;{
}
return 0;
}
//lässt led blinken
SIGNAL (SIG_OVERFLOW0) {
count++;
if (count==Stellweg){
if(PORTB & (1<<PB0)){
PORTB&=~(1<<PB0);
}
else{
PORTB|=(1<<PB0);
}
count=0;
}
}
SIGNAL (SIG_OVERFLOW1) {
count2++;
if (count2==31){
if(PORTB & (1<<PB1)){
PORTB&=~(1<<PB1);
}
else{
PORTB|=(1<<PB1);
}
count2=0;
}
}[/code]
hier laufen 2 Timer ein 16 und ein 8 bittiger.
In o.g. Fall wird nur der Timer1, also der 16 bittige, abgearbeitet.
Es scheint also nur ein Timer als Counter arbeiten zu können.![]()
Hat jemand mal nen Link wo ich erfahre, wie man das AVR Studio als C Debuger nutzt? Das auf mikrocontroller.net ist irgendwie recht alt.







Zitieren
Lesezeichen