Problem Atmega32 LED blinklicht
Hallo zusammen
Ich habe eigentlich nur ein kleines Problem, dass mich aber bereits mehrere Stunden in Anspruch genommen hat.
Schaltung:
Es sind zwei LED an PortB0 und PortB2 angeschlossen über einen 1kOhm Widerstand gegen Masse.
Hardware: Atmega32 4MHz Quarz, progammed mittels avrdude
Software:
#include "io.h"
#include "iom32.h"
void wait () {
int i;
for (i = 0; i <20000; i++) {
int j;
for(j = 0; j <20000; j++){
}
}
}
int main (void)
{
//DDRB = (1<<DDB2);
DDRB = (1<<DDB0) | (1<<DDB2);
while (1) /* Note [6] */
wait();
PORTB = 1;
wait();
PORTB = 5;
wait();
return (0);
}
Die wait-Funktion verzögert ungefähr eine Sekunde. Wahrscheinlich sogar etwas mehr.
Nun zum Problem: Es funzt gar nicht. Nur dass LED an PortB0 dauernd leuchtet. Was ist falsch? Selbt wen der AVR nicht den externen Quart nehmen würde, sollte dennoch ein blinken stattfinden.
Danke für eure Hilfe
Re: Problem Atmega32 LED blinklicht
Zitat:
Zitat von semicolon
Hallo zusammen
int main (void)
{
//DDRB = (1<<DDB2);
DDRB = (1<<DDB0) | (1<<DDB2);
while (1) /* Note [6] */
wait();
PORTB = 1;
wait();
PORTB = 5;
wait();
return (0);
}
Wenn ich richtig bin ist das Zeichen beim DDRB | bedeutet das nicht oder?
Müsste da nicht ein & hin? Oder && ! Das weis ich jetzt nicht genau!
Re: Problem Atmega32 LED blinklicht
Zitat:
Zitat von semicolon
/* Note [6] */
Nur Spass... Hat bestimmt jeder schonmal sowas gebaut ;)
Ich zumindest bin das erste Mal fast verzweifelt, als ich nach einem while() was gelöscht hatte und aber den ; nicht mitgelöscht habe und dann nie was tat.
EDIT:
Das letzte wait() habe ich in meinem Stück Code übrigens auch weggelassen, da ja sonst das wait() ausgeführt wird, dann die Schleife von neuem anfängt, wo dann gleich wieder ein wait() steht. Falls das so geplant war, dann wieder einfügen :)
Hab leider die hübschen tollen {} vergessen
Danke für eure Hilfe.
Habe vor lauter Bäume den Wald nicht mehr gesehen.
Tja, was weggelassene {} so alles auswirken können?!
Danke nochmals