Forum: Mikrocontroller und Digitale Elektronik Libraries funktionieren nicht mehr


von Jochen (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich wollte mich gerade an UART ransetzen.
Ich wollte eine kleine Status-LED blinken lassen mit meiner simpleprog 
lib. (Funktionen wie bei Arduino)

Im Anhang ist der Gesamte Ordner.

Ich kann ddie LED nicht mit meiner Lib blinken lassen (Funktionen davon 
sind kommentiert) aber mit dem Standard-C.

Woran liegt das?

Gruß, Jochen

von g457 (Gast)


Lesenswert?

1
> void pinMode(uint8_t ddr, uint8_t pin, uint8_t data);
2
[..]
3
> pinMode(DDRB, PB1, 1);

..sicher dass das (und digWrite) jemals funktioniert hat?

von Jochen (Gast)


Lesenswert?

Ja, wieso?

von g457 (Gast)


Lesenswert?

> Ja, wieso?

Weil es das nicht dürfte.

von Jochen (Gast)


Lesenswert?

Sry, bin kein Profi, was genau soll falsch sein?

von g457 (Gast)


Lesenswert?

> was genau soll falsch sein?

Die Behauptung, dass das funktioniert hat. Oder wir haben 
grundverschiedene Verständnisse von 'funktionieren'. Die Funktionen
   void pinMode(uint8_t, uint8_t, uint8_t)
und
   void digWrite(uint8_t, uint8_t, uint8_t)
sind komplett wirkungsfrei und können so wie sie hier sind nie und 
nimmer jemals so funktioniert habe, wie der Funktionen Namen eine 
Wirkung erwarten lassen würde.

Ich hoffe das waren jetzt genug Hinweise.

von Jochen (Gast)


Lesenswert?

ICh verstehe nicht was an denne falsch ist

von D. V. (mazze69)


Lesenswert?

Jochen schrieb:
> Libraries funktionieren nicht mehr

Seit wann?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

"Falsch" sind sie nicht, sie sind syntaktisch korrekt und lassen sich 
daher auch ohne Fehlermeldungen übersetzen.

Nur sind sie völlig sinnlos, weil sie genau das, was sie tun sollen, 
nicht tun.

So als kleine Ansatzpunkte:

Was ist eine Adresse? Was ist ein Wert?

Und was ist ein I/O-Port?

von Jochen (Gast)


Lesenswert?

Sorry ich bin gerade verwirrt und verstehe gar nichts mehr? Wieso machen 
sie nicht das was sie sollen? Kannst du bitt eetwas präziser sein, ich 
weiß grade echt nicht wieso das net klappt.

von Gerald G. (gerald_g)


Lesenswert?

Soweit ich das überflogen habe, übergibst du einfach Kopien der Register 
(wie immer bei Funktionen).
Du brauchst in den Funktionendeklarationen volatile Zeiger auf die 
Register.
Also: void PinMode (volatile uint8_t *Register...)

Und beim Aufruf dann:
 PinMode(&DDRB...)

von Jochen (Gast)


Lesenswert?

Achso ja ist ja klar, danke :D

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.