Liebe µC begeisterten, Ich habe mir vor kurzem einen Arduino UNO gekauft, mit der Intention, Die Programmiersprache C mit spaß/praxis bezogen zu erlernen. Entsprechend bin ich relativ neu in der Thematik. Jedenfalls habe ich nun die ersten Codes geschrieben, welche auch funktionieren, bis ich nun zum Punkt gekommen bin einen Code zu schreiben, welcher je nach dem ob an PIND 0x10 High oder Low anliegt, jeweils die PINS auf PORTD entweder auf 0x0F oder 0x00 legt. Nun zum Problem. die IF-bedingung funktioniert nur teilweise. Wenn ich an PIND 0x10 ein HIGH "auslöse" kommt es dazu, dass die Ausgänge 0b00001111 auf High gehen (also wie ich es will). Lege ich jedoch den Pin auf LOW Pegel, so reagiert mein µC (Atmega328P-PU) nur mit einer gefühlten Wahrscheinlichkeit von 50%, also gefühlt abhängig von der Laune des µC. Hier zu meinem Code: int main(void) { DDRD = 0x0F; PORTD = 0x00; while (1) { if(PIND & 0x10) { PORTD |= 0x0F; } else { PORTD |= 0x00; } } } /* Liegt dies nun an meinem Code? oder kann das auch andere Ursachen haben? bin wie gesagt neu in dem Gebiet und würde mich über nette antworten sehr sehr freuen, da das aktuell mein Projekt einwenig zum erliegen bringt. */
Chris N. schrieb: > PORTD |= 0x00; Die Zeile tut rein gar nichts. Siehe: https://www.mikrocontroller.net/articles/Bitmanipulation#Standard_C_2 da1l6
??♂️?♂️?♂️?♂️?♂️?♂️?♂️?♂️ Das Wurde bereits in 1000Threads abgehandelt
Chris N. schrieb: > Lege ich jedoch den > Pin auf LOW Pegel, so reagiert mein µC (Atmega328P-PU) nur mit einer > gefühlten Wahrscheinlichkeit von 50%, also gefühlt abhängig von der > Laune des µC. Das ist ein bisschen erstaunlich. Soweit ich das übersehe, dürfte er auf LOW gar nicht reagieren, wenn vorher mal HIGH anlag.
> Das ist ein bisschen erstaunlich. Soweit ich das übersehe, dürfte er auf > LOW gar nicht reagieren, wenn vorher mal HIGH anlag. Jetzt im Nachhinein, wo ich meinen Fehler sehe, finde ich es auch erstaunlich. Vielleicht hat mein Code den µC dermaßen verwirrt, dass er einfach nach Lust und Laune gehandelt hat :D. Vielen Dank für eure schnellen Antwroten!! Es funktioniert jetzt, wie ich es wollte!
Chris N. schrieb: > Vielleicht hat mein Code den µC dermaßen verwirrt, dass er > einfach nach Lust und Laune gehandelt hat :D. Ich will mich jetzt nicht zu weit aus dem Fenster lehnen, aber: Nein.
> Ich will mich jetzt nicht zu weit aus dem Fenster lehnen, aber: Nein.
War auch eher ein (unlustiger) Witz.
Unwillige Pins kann man durch Anlegen von 12 V auf korrektes Verhalten konditionieren.
> Unwillige Pins kann man durch Anlegen von 12 V auf korrektes Verhalten > konditionieren. haha :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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.