mZ
01.03.2008, 18:07
Hallo,
heute habe ich mich mal an meinen mega8 rangewagt. Immerhin - blinken kann er schonmal. ^^
Nun habe ich aber das seltsame Problem, dass der Controller scheinbar nichts mehr macht, wenn ich eine if-Anweisung benutze. Ob es am Code liegt oder an etwas Anderem, da bin ich mir mittlerweile nicht so sicher. Der Code sieht für mich zwar soweit richtig aus, aber selbst wenn ich den größten Mist schreibe, meckert WinAVR nur selten und lässt alles schön kompilieren :/
Hier mal das höchstaufwändige Programm :)
#include <avr/io.h>
int main (void) {
DDRD = 0b01100000;
PORTD = 0x00;
int i = 10;
while(1)
{
//if((PIND & (1<<PIND2)) && i>1) i--;
//if((PIND & (1<<PIND4)) && i<20) i++;
if((PIND & (1<<PIND3)) && i<20) PORTD = 0b01100000;
warte(1000 * i);
PORTD = 0x00;
warte(1000);
}
return 0;
}
void warte(long iZyklen)
{
long j = iZyklen;
long l = 10000;
while(j>0)
{
j--;
while(l>0)
{
l--;
}
}
}
So lange die beiden Zeilen auskommentiert sind, blinkt der Controller fröhlich vor sich hin...
mfg
heute habe ich mich mal an meinen mega8 rangewagt. Immerhin - blinken kann er schonmal. ^^
Nun habe ich aber das seltsame Problem, dass der Controller scheinbar nichts mehr macht, wenn ich eine if-Anweisung benutze. Ob es am Code liegt oder an etwas Anderem, da bin ich mir mittlerweile nicht so sicher. Der Code sieht für mich zwar soweit richtig aus, aber selbst wenn ich den größten Mist schreibe, meckert WinAVR nur selten und lässt alles schön kompilieren :/
Hier mal das höchstaufwändige Programm :)
#include <avr/io.h>
int main (void) {
DDRD = 0b01100000;
PORTD = 0x00;
int i = 10;
while(1)
{
//if((PIND & (1<<PIND2)) && i>1) i--;
//if((PIND & (1<<PIND4)) && i<20) i++;
if((PIND & (1<<PIND3)) && i<20) PORTD = 0b01100000;
warte(1000 * i);
PORTD = 0x00;
warte(1000);
}
return 0;
}
void warte(long iZyklen)
{
long j = iZyklen;
long l = 10000;
while(j>0)
{
j--;
while(l>0)
{
l--;
}
}
}
So lange die beiden Zeilen auskommentiert sind, blinkt der Controller fröhlich vor sich hin...
mfg