Hallo, ich versuche die DMX Lib von Hendrik Hölscher auf meinem atmega32 zum laufen zu kriegen. Bis jetzt komme ich aber nur bis zum break. Könnte mal jemand über den Quelltext schauen und mir sagen was da schief ist? Vielen Dank. Marco
Ich sehe nur diese komische Stelle: > #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 4000000" > #define F_CPU 8000000UL // Systemtakt in Hz - Definition als unsigned long beachten Aber das wirkt sich bei mir nicht auf die Kompilierung aus. Die funktioniert klaglos; auch über das break hinaus.
Hallo, mein Problem ist, das ich in der ISR(USART_RX_vect) nur das break erkenne den Rest der Daten aber nicht richtig auswerte. Ich komme also nicht an die Stelle "else if (DmxState == STARTB)".
Ich habs erst mit dem AVR Studio im Debugger laufen lassen und nachdem es da gut aus mittels USB Interface und udmx.exe. Meine Schaltungen hab ich von http://plischka.at/DMX-512.html. Ein RGB-LED Par läßt sich einwandfrei ansteuern nur mein selbstgebauter reciver halt nicht.
Mist ich sehe den Bug auch nicht. Von der Programmlogik her können drei Dinge passieren: 1. Du bekommst im Zustand BREAK beim nächsten Byte einen FE. Dann bleibst du in BREAK 2. Du bekommst im Zustand BREAK beim nächsten Byte keinen FE. Das empfangene Byte ist gleich 0, dann geht es nach STARTB. Das scheint nicht der Fall zu sein. 3. Du bekommst im Zustand BREAK beim nächsten Byte keinen FE. Das empfangene Byte ist ungleich 0, dann geht es nach IDLE. Das scheint nicht der Fall zu sein. Du sagst du steckst in BREAK fest. Also wieso bekommst du einen FE? Baudratenberechnung (mit dem korrekten 250000UL) habe ich geprüft. Stimmt. Frameformat (1 Start, 8 Data, 2 Stop, No Parity) habe ich geprüft. Stimmt.
Erst einmal vielen Dank für Eure Hilfe! Ich habe es zwar immer noch nicht zum laufen, aber ich denke ich sollte noch einmal die Schaltung vornehmen. das Programm sollte es ja eigentlich tun.
lass mal eine LED blinken und schau ob die erwartete Frequenz rauskommt. Wenn nicht -> fuses falsch. (Dann hängst du auch im break ;-) VG, Hendrik
--> DAS IST NICHT MEINE LIB. <-- Lokale Variablen werden eh in Registern gehalten. Du setzt die FSM absichtlich vor Erreichen der Startadrsse auf IDLE. Das kann nicht funktionieren. Nimm doch erst mal meine Lib und schau nach welcher Änderung sie Dir um die Ohren fliegt. Effizienter ist das eh nicht... (sonst hätte ich es vor 1,5 Jahren mal übernommen.) Hendrik
Hallo Hendrik, ich habe ja auch geschrieben "ich versuche", das es nicht Deine Lib ist und das Du es nicht so geschrieben hast ist mir klar. Wenn ich Dir zu nahe getreten bin bitte ich vielmals um Entschuldigung. Ich versuche nur zu lernen, ich hoffe Du nimmst esmir nicht übel. Danke für Deine Arbeit und Deinen Hinweis. Marco
Hallo, es waren tatsächlich die Fuse Bits so was blödes. Wieder was gelernt. Vielen Dank an alle die geholfen haben. Marco
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.