Da hats was, du mußt pb1 ODERN sonst zertrümmert er das PB2-Bit
DDRB = (1<<PB2); /*Ausgang*/
DDRB |= (1<<PB1); /*Ausgang*/
Das muß du in der ISR auch machen
TCNT1 = 3036;
Probier' mal
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!
Code:#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*/ }
Da hats was, du mußt pb1 ODERN sonst zertrümmert er das PB2-Bit
DDRB = (1<<PB2); /*Ausgang*/
DDRB |= (1<<PB1); /*Ausgang*/
Das muß du in der ISR auch machen
TCNT1 = 3036;
Probier' mal
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Danke erstmal für deine Hilfe, versteh aber noch nicht ganz was du meinst!
Du hattest es so:
Neu:DDRB = (1<<PB2); // der schreibt 00000100 rein. gut.
DDRB = (1<<PB1); // aber der schreibt jetzt 00000010 drüber
// drin steht jetzt 00000010
// der erste 1-er ist jetzt wieder weg
DDRB = (1<<PB2); // der schreibt 00000100 rein.
DDRB |= (1<<PB1); // der schreibt seine 00000010 DAZU
// drin steht jetzt 00000110, also beides
Hab das jetzt mal geändert, funktioniert immer noch nicht!Kann vielleicht mal jemand seinen eigenen code posten?Muss ich vielleicht noch was an den Fusebits verstellen oder das dass signal nur an einem bestimmten pin beim 2313 erzeugt wird?
Wo hast du die 84 her ?
TIMSK = 0x84; /* Timer0 Overflow Interrupt enable*/
sollte das nicht so sein ?
TIMSK |= (1<<TOIE1);
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
So hatte ich das am anfang, im ARVStudio wurde der aber nicht gesetzt dann hab ich das einfach mit 0x84 gemacht und so wurde er gesetzt!
arbeitest du auch mit dem 2313, weil wenn dann könntest du ja mal den code bei dir testen!
Nö, kein Tiny, nur meg32 u. "normal" 2313.
0x84 ja zwei bits
Wie auch immer, es muß für das enable bit eine definition geben,
Man muß im Datasheet nachlesen, hilft nix
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Seh gerade, wenn, dann nur 0x80 f. TOIE1 (Oooh->nicht null) im TIMSK
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
im blatt find ich einfach nix was mir helfen könnte,ich geh totl ein weil es eigentlich ein wichtiges projekt ist aber "Danke dir sehr für deine Hilfe und dein Bemühen!!!!"
Lesezeichen