Forum: Mikrocontroller und Digitale Elektronik led's leuchten nicht


von Michael Brinkman (Gast)


Lesenswert?

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;
}

von The Slow (Gast)


Lesenswert?

Du musst die Funktion init() auch aus deiner main Funktion aufrufen.

einfach ein 'init();' unmittelbar vor die Schleife.

von Tüftler (Gast)


Lesenswert?

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ß

von ich (Gast)


Lesenswert?

steigt der nicht bei main ein? also müsstest du dort noch init aufrufen.

von Michael Brinkman (Gast)


Lesenswert?

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;
}

von Stephan (Gast)


Lesenswert?

Das return 0 brauchst Du nicht; es gibt ja nichts übergeordnetes, an den 
der ATMEL was zurückmelden könnte.

Stephan.

von FBI (Gast)


Lesenswert?

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