WLAN Open Source Lok-Software
Hallo Leute!
Einmal quer durch die ganze WLANcroc-Saga gelesen ergibt sich mir folgendes Bild für die Hardware, welche bisher unterstützt wird:
ATMega2561
Serielle Schnittstelle UART0 (PE0,PE1) für Bootloader (wäre nicht unbedingt nötig, denn der Fastboot-Bootloader arbeitet nicht mit der UART-Hardware des ATMega, sondern erledigt das "in Software" über jeden beliebigen GPIO-Pin).
ISP-Stecker (verwendet ua. PE0,PE1) - die Pins können aber im normalen Betrieb anderweitig verwendet werden.
Serielle Schnittstelle UART1 (PD2,PD3): Kommunikation mit dem WLAN-Modul
Schaltfunktionen: Port C (PC0-PC7) über ULN2803
Baustellen:
Wiznet-Ansteuerung:
HW_Trigger: Umschaltung Daten / Konfigurationsmodus (funktioniert mit der neuesten Firmware aber auch per Software-Umschaltung)
RESET: ist kein Reset, sondern ein Rücksetzen auf die Standardeinstellungen - das vom MC aus auszuführen, ist wenig sinnvoll (dann ist ohnehin eine komplette Neukonfiguration fällig, das will man ungern "im Feld" machen). Reagiert das Wiznet-Modul noch, kann es über den "<WR>" Befehl neu gestartet werden. Reagiert es nicht mehr, muss man ihm ohnehin die Versorgung kappen. Angesichte dessen und des zickigen Startverhaltens sollte man das Wiznet vielleicht gleich extra vom MC aus über einen kleinen FET einschalten, dann hätte man das Modul ein bisschen besser im Griff.
Die beiden Wiznet-Funktionen müssen also mE. nicht verdrahtet werden.
Anschluss H-Brücke PHB01
(siehe)
PWM: PB7 OC0A (2. H-Brücke: BP4 OC2A)
Reset: PD4 (2. H-Brücke: PD6)
Richtung: PD5 (2. H-Brücke: PD7)
F1,F2 sollten zur Fehlererkennung ebenfalls verbunden werden
Dass für die Motor-Steuerung in der WLANcroc-Software nur ein 8bit-Timer verwendet wird, finde ich nicht gut. Fahrstufen hin und her, entscheidend ist, dass ich mit einem 16bit Timer die Möglichkeit habe, die PWM-Frequenz mit wenig Aufwand aus einem größeren Bereich zu wählen (ohne die Fahrstufen zu beschneiden, von denen ich dann eventuell mehr als 256 habe). Mit etwas mehr Aufwand kann ich die Frequenz beliebig wählen.
Der ATMega2561 hat 2x 8bit und 4x 16bit Timer. 2 der 16bit Timer sind nur intern verfügbar (keine Pins nach außen geführt). Somit sind genügend Timer vorhanden! Alleine mit einem "internen" 16bit Timer und einem 8bit Timer kann ich unter Zuhilfenahme von GPIO-Pins leicht 6 (oder noch mehr) Servos ansteuern. Das sollte für Grundfunktionalitäten reichen. Da ist es sicher wichtiger, den Motor mit der optimalen Frequenz zu versorgen (ohne dafür später umlöten zu müssen).
Wenn man bedenkt, dass der Trend ohnehin zu übergeordneten Linux-Modulen (welcher Art auch immer) geht, sollte man das Softwareprojekt gleich so anlegen, dass es auch auf einem 4€ Arduino-Clone-Board mit ATMega328 läuft.
Schöne Grüße,
MichaelB