Hallo, ich interessiere mich seit einigen Wochen relativ stark für die Mikrocontrollerprogrammierung. Ich habe mein erstes Programm fertig, wenn es denn das tuen würde, was ich möchte das es tut. Das Programm soll mit entsprechender Hardware ein Bodenumschalter für eine Gitarre werden. Testweise habe ich heute alles mit Schaltern, Tastern und LEDs(später sollen statt LEDs Relais geschaltet werden) aufgebaut. Einige Leds leuchten auch, jedoch macht das Programm nicht das was es tuen sollte. Im Simulator des AVR Studios macht das Programm komischerweise alles so wie es soll. Es wäre super nett, wenn mir jemand bei meinem ersten (bestimmt nicht besonders elegantem) Programm helfen könnte. Im Anhang findet ihr den Programmtext. Vielen Dank
Du hast einen Karindalfehler begangen: Du hast viel zu viel Code geschrieben, ehe du ihn das erste mal auf der richtigen Hardware laufen lässt. Jetzt stehst du mit einem Berg von Code da, der nicht funktioniert und weist nicht wo du anfangen sollst. Fang so an:
1 | #include <avr/io.h> |
2 | |
3 | int main() |
4 | {
|
5 | }
|
(ohne Scherz) Das compilierst du und brennst du in den µC Dann fängst du an, in kleinen Stücken Teile aus deinem Programm zu übernehmen. Es müssen dabei Teile sein, die in sich geschlossen sind. Möglichst kleine Teile aber soweit vollständig, dass du sie auf der realen Hardware testen kannst. Wenn du dazu kurzfristig ein paar LED-Ausgaben zur Funktionskontrolle hinzufügen musst, dann ist das auch kein Beinbruch. Die kann man im Nachhinein wieder entfernen. Und so erweiterst du das Minimal-Primitiv Programm sukzessive um immer weitere Funktionen und korrigierst dabei auftretende Fehler und Probleme.
Ich werde das die nächsten Tage versuchen. Mich wundert aber stark, dass es im Simulator des AVR-Studios problemlos läuft. Wie kann das kommen? Was zuverlässig funktioniert ist übrigens das Einschalten der LED an PinD4, wenn der Schalter an PinD0 umgelegt wird. Also Danke schonmal für deine Hilfe, es wäre aber trotzdem super, wenn du oder wer anders nochmal über meinen code gucken könnte und mir vllt ein paar Fehler die ich begangen habe nennt. Das würde mir denke ich sehr weiter Helfen. Danke nochmal
Schumi schrieb: > Ich werde das die nächsten Tage versuchen. Mich wundert aber stark, dass > es im Simulator des AVR-Studios problemlos läuft. Wie kann das kommen? Der Simluator ist auch nicht fehlerfrei. Deine Hardware kann Mucken machen. Insbesonere Taster können dir durch Prellen den Tag vermiesen. > Also Danke schonmal für deine Hilfe, es wäre aber trotzdem super, wenn > du oder wer anders nochmal über meinen code gucken könnte und mir vllt > ein paar Fehler die ich begangen habe nennt. Das würde mir denke ich > sehr weiter Helfen. Sorry. Aber das tu ich mir nicht an. Das ist mir zu umfnagreich um das jetzt zu analysieren. Wenn du wenigstens sagen könntest: Konkret dieses und jenes funktioniert nicht. Dann könnte man gezielt den Code durchforsten. Aber so ist mir das einfach zuviel als dass ich mich da jetzt 3 Stunden hinsetze und die Logik analysiere.
Ok... entschuldigung, ich dachte, dass das relativ schnell geht. Also, Wenn ich den Schalter an PinD0 umlege leuchtet sofort und zuverlässig Die LEDPD4. Außerdem leuchten durchgängig die LED PC0, PD5, PD6, PD7, PC6. Wenn ich den Schalter PIND0 öffne erlischt die LED PD4, die anderen 5 leuchten weiter. Diese Situation lässt sich durch nichts ändern, weder durch drücken der Taster an PINA0-7 noch durch ein Strom weg/Strom an für die Schaltung. Wenn ich den Schalter an PIND4 sehr oft umlege leuchten aber nur noch 3 der 5 Leds, bis ich ihn ein weiteres mal umlege, dann leuchten wieder die 5 (aber nur in vllt 5% der Fälle, also bei ca. jedem 20. mal öffnen/schließen von Schalter PD0) mfg Schumi
außerdem: du hast keine Entprellung der Tasten. Du schreibst in einer Endlosschleife ins EEPROM -> nach ein paar Minuten ist der kaputt (1000000 Schreibzyklen, siehe Datenblatt)
Hallo, vielleicht habe ich es uebersehen, aber der Prozessortyp ist mir unklar. Wenn es einer mit JTAG ist dann muss der ausgeschaltet werden, ich habe da mal zwei Wochen dran herumgesucht. JTAG aus wenn vorhanden!! Viel Erfolg Thomas
Es ist ein Atmega 16. Ich werde dann gleich mal ersuchen JTAG auszuschalten. Schreibe ich wirklich in einer endlosschleife ins eeprom? ich schreibe doch nur ins eeprom wenn bestimmte ereignisse eintreten, also bestimmte daster gedrückt werden ? Danke für eure Hilfe
Ein möglicher Grund für komisches Verhalten in der Schaltung, obwohl der Simulator durchläuft ist auch, wenn man Variablen nicht initialisiert. Wenn du bei deinen Tastereingängen keinen Pullup spendiert hast kommts hier auch zu undefinierten Zuständen. Taster werden als gedrückt erkannt, obwohl sie offen sind... Wenn man die Fehler in dem Code finden will braucht man auf jeden Fall nen Schaltplan. Ohne wirds nur Stochern im Dunkeln. Und eben wie oben schon gesagt wurde: Alles der reihe nach und erst wenn der Teil läuft einen neuen hinzufügen. Sebastian
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.