super-robman
31.07.2011, 22:52
Hallo,
ich versuche dem AVR lab beizubringen eine Diode regelmäßig blinken zu lassen, aber habe irgendwie keinen Erfolg. Ich habe es mit einfachen Programmen versucht und mit schwierigeren aber immer blinkt sie nur 1 mal und dann startet der Mikrochip neu. Und wenn ich ISR(TIMER0_OVF_vect) versuche zu benutzen beschwert das AVR Studio sich schon, dass es mehrere Definitionen davon gibt und die sich überschneiden. Einfache Codeschnipsel wie:
#include <avr/io.h>
#include "avrlab.h"
#include "gpio.h"
#include <avr/interrupt.h>
#include <util/delay.h>
int main(void)
{
AvrLabInit();
PortB.DataDirection.Bit3 = DataDirectionOutput;
PortB.Output.Bit3 = 0;
int time;
time=1800; // Wie weit soll Zähler zählen
int time2;
time2=3600; // Wie weit soll Zähler zählen
while (1)
{
TCNT1H=0; // Timer Daten Register Timer1 High auf 0 Setzen
TCNT1L=0; // Timer Daten Register Timer1 Low auf 0 Setzen
TCCR1B |= (1<<CS12)|(1<<CS10); // Timer Starten mit Vorteiler 1024
while(TCNT1<time) // Solange Das Register bis 3600 gezählt hat.
{
PortB.Output.Bit3 = 1;
}
while(TCNT1<time2) // Solange Das Register bis 3600 gezählt hat.
{
PortB.Output.Bit3 = 0;
}
}
return 0;
AvrLabPoll();
}
Lassen die Diode einmal aufblinken und dann startet der Mikrochip neu. Weiß jemand eine Rat dazu?
Vielen Dank.
Grüße
Robert
ich versuche dem AVR lab beizubringen eine Diode regelmäßig blinken zu lassen, aber habe irgendwie keinen Erfolg. Ich habe es mit einfachen Programmen versucht und mit schwierigeren aber immer blinkt sie nur 1 mal und dann startet der Mikrochip neu. Und wenn ich ISR(TIMER0_OVF_vect) versuche zu benutzen beschwert das AVR Studio sich schon, dass es mehrere Definitionen davon gibt und die sich überschneiden. Einfache Codeschnipsel wie:
#include <avr/io.h>
#include "avrlab.h"
#include "gpio.h"
#include <avr/interrupt.h>
#include <util/delay.h>
int main(void)
{
AvrLabInit();
PortB.DataDirection.Bit3 = DataDirectionOutput;
PortB.Output.Bit3 = 0;
int time;
time=1800; // Wie weit soll Zähler zählen
int time2;
time2=3600; // Wie weit soll Zähler zählen
while (1)
{
TCNT1H=0; // Timer Daten Register Timer1 High auf 0 Setzen
TCNT1L=0; // Timer Daten Register Timer1 Low auf 0 Setzen
TCCR1B |= (1<<CS12)|(1<<CS10); // Timer Starten mit Vorteiler 1024
while(TCNT1<time) // Solange Das Register bis 3600 gezählt hat.
{
PortB.Output.Bit3 = 1;
}
while(TCNT1<time2) // Solange Das Register bis 3600 gezählt hat.
{
PortB.Output.Bit3 = 0;
}
}
return 0;
AvrLabPoll();
}
Lassen die Diode einmal aufblinken und dann startet der Mikrochip neu. Weiß jemand eine Rat dazu?
Vielen Dank.
Grüße
Robert