Hallo, ich arbeite mit dem Atmel Studio 7 und will ein Programm für einen ATtiny13a erstellen. Ich versteh aber nicht so ganz was das Studio mit meinem Code macht. Er sollte mit der LED am PORTB3 blinken. Ich kann aber mit dem Scope nicht erkennen das der Ausgang etwas macht. Hat einer eine Idee was falsch sein könnte? Hier der Code: #include <avr/io.h> #include <avr/interrupt.h> #define LED0 PORTB4 #define LED1 PORTB3 uint8_t Tick = 0; uint8_t OldTick = 0; void InitSystem ( void ) { //Set IOs to Output DDRB = ((1 << LED0) | (1 << LED1)); // Timer 0 konfigurieren TCCR0B = (1<<CS01); // Prescaler 8 TIMSK0 |= (1<<TOIE0); // Overflow Interrupt erlauben sei(); // Global Interrupts aktivieren } static void MainLoop (void) __attribute__((noreturn)); void MainLoop (void) { while (1) { ////Next Tick if (OldTick != Tick) { OldTick = Tick; PORTB |= (1 << LED1); PORTB &= ~(1 << LED1); } } } int main(void) { InitSystem(); MainLoop(); return(0); } ISR(TIM0_OVF_vect) { Tick++; }
RobiWurm schrieb: > Hat einer eine Idee was > falsch sein könnte? ja, Tick ist nicht volatile - er optimiert deine Abfrage weg.
RobiWurm schrieb: > PORTB |= (1 << LED1); > PORTB &= ~(1 << LED1); Wieviel Zeit vergeht zwischen diesen beiden Befehlen? Für jeden Tick wird die LED nur sehr kurz ihren Zustand ändern, um dann wieder in den Ausgangszustand zu verfallen. Je nachdem, wie Du die LEDs angeschlossen hast, werden sie nur sehr kurz (im einstelligen µs-Bereich oder darunter) aufblitzen und ansonsten aus sein, oder dauerhaft leuchten und nur sehr kurz ausgehen.
Peter II schrieb: > ja, Tick ist nicht volatile - er optimiert deine Abfrage weg. Für heute bist du mein Held! Danke Danke Danke.......
Rufus Τ. F. schrieb: > Je nachdem, wie Du die LEDs angeschlossen hast, werden sie nur sehr kurz > aufblitzen Das stimmt, die LED sieht man nicht leuchten aber ich habe ein Scope verwendet und das hätte etwas anzeigen müssen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.