Hi, ich relativ unerfahren im Umgang mit C, hab mir jetzt einige C-Tutorials durchgelesen und wollte an einem Atmega32 am Port B eine Folge 10101010 ausgeben, so das nur jede 2. led an ist. Nur leider funktioniert das nicht, habe ein Blink Programm aus dem internet geladen und es läuft auch. Also am Controller oder am LED modul kann es nicht liegen. Kann mir vielleicht jemand einen tip geben was an meinem Programm nicht stimmt? #include <avr/io.h> // Initialisierung void init(void) { DDRB = 0xff; // PortB als Ausgang deklarieren PORTB = 0x00; // Ports auf LOW schalten } int main(void) { while (1) { PORTB = 0b10101010; //PortB } return 0; }
Du musst die Funktion init() auch aus deiner main Funktion aufrufen. einfach ein 'init();' unmittelbar vor die Schleife.
Hi! Kenne mich jetzt nicht direkt mit Atmels aus, jedoch denke ich das dein 0xff die Pins als Eingänge und nicht als Ausgänge deklariert! "Hex ff" sind ja lauter einser und das sind eigentlich dann Eingänge. Hoffe es stimmt ;-) Gruß
Juhu es klappt jetzt. Vielen Dank :-) der code ist jetzt #include <avr/io.h> // Initialisierung void init(void) { DDRB = 0xff; // PortB als Ausgang deklarieren PORTB = 0x00; // Ports auf LOW schalten } int main(void) { init(); while (1) { PORTB = 0b10101010; //PortB } return 0; }
Das return 0 brauchst Du nicht; es gibt ja nichts übergeordnetes, an den der ATMEL was zurückmelden könnte. Stephan.
@Stephan: 'return 0' wird zwar eigentlich nicht gebraucht, verhindert aber, dass der Compiler meckert "control reaches end of non-void function". CU
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.