Forum: Mikrocontroller und Digitale Elektronik Einführungsbeispiel aus Tutorial läuft nicht


von Konrad (Gast)


Lesenswert?

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

von Timmo H. (masterfx)


Lesenswert?

>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.

von LED nach GND ziehen (Gast)


Lesenswert?

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

von Timmo H. (masterfx)


Lesenswert?

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)

von Konrad (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.