Hallo Eisenhorn,
Zitat von Eisenhorn
Ich dachte EmbeddeLoconet wäre die Bibliothek von Fremo zumindest sind in den deren Branch die Firmwear für Fredi und LoconetGateway enthalten.
Der Hauptentwickler, Alex Shepherd, ist IIRC Neuseeländer. Soweit ich weiß hat er mit FREMO nichts zu tun. Das schließt natürlich nicht aus, dass der Fremo trotzdem auf MRRWA aufsetzt. In dem Falle wäre wohl das nächste, zu prüfen ob und welche Änderungen Fremo am MRRWA-Code vorgenommen hat. Wenn die Timer gleich behandelt werden, könnte MRRWA auch direkt funktionieren.
Zitat von Eisenhorn
mrwa-LoconNet-Bibliothek habe ich auch gefunden, ich habe aber kein andruino, und bin auch kein fan davon(eine ganz persönliche Vorliebe).
Dann bist du, was das LocoNet angeht, aber out-of-date. Die Entwicklung des Codes findet nur noch in MRRWA statt. Der Code enthält inzwischen auch möglichkeiten, um z.B. Module per JMRI-SV oder Uhlenbrock-LNCV zu konfigurieren. Du kannst den MRRWA-Code auch ohne Arduino-IDE nutzen, du musst nur die Arduino-Library importieren. HowTos für WinAVR und Eclipse gibt es im Netz.
Zitat von Eisenhorn
Laut spezifikation überträg das Loconet mit 16.66 KBaud +/-1.5%. http://www.digitrax.com/static/apps/cms/...onaledition.pdf
Ich habe schon uart Komunikation mit 9600Baud und internem oszilator gebaut habe angst das das ganze jetzt kippt.
Das ganze soll ehr erst mal ein Versuchsaufbau sein, später möchte ich die Schaltung natürlich mit externen Oszilator ausrüsten.
Warum sollten die internen timer probleme machen? in der sysdef.h müsste man doch nur den richtigen Takt einstellen oder?
Um Bits zu empfangen/senden werden die intervalle zwischen den Taktflanken über Timer-Interrupts bestimmt. Ist der Timer nicht genau genug, passen die Intervalle nicht zu denen, die die anderen Module am Bus erwarten und du liest/sendest falsche Bits. Daher brauchst du erstmal hinreichend genaue Timer. Der interne Resonator ist möglicherweise nicht genau genug (d.h. läuft zu sehr zu schnell/langsam, sogenannte Uhren-Drift), um die korrekten Intervalle zu generieren. Wie stark der Resonator driftet, ist von der Betriebsspannung und der Umgebungstemperatur abhängig, d.h. der Wert ist nicht nur nicht korrekt, er ist nicht mal konstant! Man kann zwar mit einer von Atmel herausgegebenen Prozedur den Resonator kalibrieren, allerdings gilt diese Kalibrierung nur für eine bestimmte Spannung und Temperatur (ab Fabrik AFAIK 5V, 25°C). Diese Werte konstant zu halten dürfte im Mobaumfeld ein Ding der Unmöglichkeit sein. Schon aus einem LM7805 kommt in den seltensten Fällen 5,0V raus.
Soviel zu den möglichken Problemen. Ob die Drift des internen Resonators nun überhaupt ein Problem ist, bleibt noch zu untersuchen. Dazu musst du wissen, wie groß die Drift werden kann und wie genau die Timings der Taktflanken auf dem Bus sein müssen. Was du oben angegeben hast: "16.66 KBaud +/-1.5%" ist die Datenrate auf dem Bus, direkte Timing-Informationen lassen sich daraus nicht ableiten. Die Frage ist also, ob in der LocoNet-Spec noch mehr Informationen zu den Timings enthalten sind.
Neugierige Nebenfrage: Warum willst du denn den externen Quarz loswerden? Kosten tun Quarz+2*Kondensator ja nix.
Zu sysdef.h kann ich wenig sagen, da ich jetzt nicht mehr weis, auf welches System du dich beziehst. Einfach nur die Taktrate ändern wird aber vermutlich nicht ausreichen. Um das selbe Zeitintervall zu messen, brauchst du bei 16MHz doppelt so viele Timer-Ticks wie bei 8MHz. Das rechnet der bisherige Code soweit ich das überblicke nicht mit ein. Für Arduinos geht man AFAIK davon aus, dass die Chips immer mit 16MHz getaktet werden. Die Arduino-IDE bietet die Möglichkeit, durch etwas tippen in der Hardware-Spezifikation neue Boards zu erstellen, die andere Taktraten haben. Ob man an diese Information allerdings im Code rankommt, weis ich nicht. Weiterhin habe ich nach meinen bisherigen Analysen den Eindruck, dass im MRRWA-Code eine Unterscheidung nach er Taktfrequenz der CPU drin ist (was aber IMHO eingebaut werden sollte - Patch, anyone?).
Zitat von Eisenhorn
Gibt es zu Emebedded Loconet noch eine ausführliche Doku was wozu ist ?
Nein, gibt es nicht. Das muss man sich aus dem Code erpuzzlen - oder du Mailst einfach mal Alex Shepherd direkt an und fragst ihn. Mich würde das Thema auch interessieren.
Gruß,
fantux