Hallo, ich mich entschlossen von CControl und Windows auf AVR und Linux zu wechseln. Ich habe die Schaltung von http://s-huehn.de/elektronik/avr-prog/avr-prog.htm#test gebaut. Ich habe die Datei "testprojekt.hex" von og Seite mit AVRDude auf den ATMega8 übertragen. Die LED an PB0 blinkt. Die Hardware ist in Ordnung. Nun habe ich das Einführungsbeispiel aus dem AVR GCC Tutorial leicht abgewandelt. Ich benutze Code::Blocks und den GCC. Hier der Quellcode: #include <avr/io.h> int main(void) { DDRB = 0xff; // (3) PORTB = 0xff; // (4) while(1); return 0; } Den Optimizer habe ich abgeschaltet (und auch alle andern Verstellmöglichkeiten durchprobiert). Der Compiler erzeugt eine *.elf.hex Datei mit 316 byte. Die Datei kann ich tadellos übertragen, nur die LED weigert sich hartnäckig zu leuchten. Ich habe die Datei auch schon manuell mit selbst gemachten Makefile auf der Konsole erstellt. Gleiches Ergebnis. Woran könnte es liegen? Konrad
>Die Datei kann ich tadellos übertragen, >nur die LED weigert sich hartnäckig zu leuchten. Das hängt wohl damit zusammen, weil die LED an der Kathode geschaltet wird. Sprich du musst den Port auf "LOW" ziehen damit sie leuchtet.
wenn der Schaltplan stimmt dann wird die LED leuchten wenn der Portpin auf GND gezogen wird.
1 | PORTB &= ~(1<<PB0); |
sollte vorläufig helfen. Viel Erfolg
Zudem solltest du dir von anfang an angewöhnen nur die Bits anzufassen, die auch tatsächlich benötigt werden:
1 | int main(void) |
2 | {
|
3 | DDRB |= 0x01; // (3) |
4 | PORTB &= ~0x01; // (4) |
5 | while(1); |
6 | return 0; |
7 | }
|
bzw. besser noch durch (1<<PB0)
Scheiße! Es funzt, ich hab den ganzen Sonntag mit Fehlersuche verdödelt. (Na ganz um sonst wars auch nicht, ich hab auch ein bißchen was gelernt dabei.) Konrad
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.