LP-Mikrocontroller-Clone        

von Ralf Beesner                  
Elektronik-Labor   Projekte   AVR 



 

Die Hardware des Lernpakets Mikrocontroller (obere Platine) ist minimalistisch und etwas in die Jahre gekommen (weil es kaum noch "echte" serielle Schnittstellen an Rechnern gibt und Seriell-USB-Wandler beim Flashen Probleme machen), aber hat für mich den Standard gesetzt. Früher hatte ich die ATtinies mit dem Tool des LP Mikrocontroller (LPmicroISP.exe) geflasht, und für Programme mit Soft-UART ist es immer noch logisch, die gleiche Pinbelegung zu wählen.

Ein erster Nachbau (mittlere Platine) bot etwas mehr Komfort, sieht aber mittlerweile recht hässlich aus, weil allerhand nachgerüstet wurde - ein Reset-Taster, ein Schalter in der Stromversorgung (um bei der Entwicklung batteriebetriebener Projekte den Ruhestrom messen zu können), eine Buchse für externe 5V (per Adapterkabel aus dem USB des Rechners) und eine Steckleiste, um kleine Streifenleitungs-Platinen "anzuflanschen", wenn die paar Steckkontakte der "Projektzone" (DIL-Sockel) nicht reichten oder das Projekt die Ports PB0 - PB2 nutzte. Die externen Bauteile störten oft den Programmier-Vorgang - man musste dann immer die gesteckten Leitungen von PB0 - PB2 abziehen, flashen, Leitungen wieder anstecken. Mit Steckleiste konnte man die Periperie-Hardware mit einem Griff an- und abstecken.

Die Platine sieht inzwischen auch von unten recht unansehnlich aus, weil das Lochraster-Platinenmaterial von Reichelt unlackiert ist (seit ich die Leiterbahnen der Platine "vor sich hin gammeln" sehe, kaufe ich nur noch lackierte Streifenrasterplatinen, z.B. von Conrad). So war es denn Zeit für einen Neubau (untere Platine).

Inwischen benutze ich zum flashen einen Mini-USBASP-Programmer mit einem kleinen Programmiersockel (Platine Mitte rechts). Die ATtinies kommen erst in einen Präzisionssockel, dieser wird in den Programmiersockel gesteckt, dort programmiert und der ATtiny wird dann MIT dem oberen Präzisions-Sockel in den LP-Mikrocontroller-Clone umgesteckt. Die Präzisionssockel kann man mehrere hundert mal stecken; die empfindlichen IC-Beinchen hingegen wären nach wenigen Steckvorgängen "hin" - deshalb die doppelte Sockelung (dieser sehr nützliche Tip stammt übrigens aus dem "AVR-Mikrocontroller-Lehrbuch" von Roland Walter).

Der Neubau ist an sich nichts besonderes, da jedoch einige Ideen aus mehrjähriger Praxis eingeflossen sind, stelle ich ihn hier vor.




Abbildung 1: Nachbau LP Mikcocontroller




Abbildung 2: Nachbau LP Mikcocontroller; Streifenleitungs-Platine


Stichwortartig die Modifikationen der originalen LP- Mikrocontroller-Hardware:

- externe oder interne Betriebsspannung umschaltbar (die externe kann man sich mit einem Stecker aus dem USB- Anschluss des Rechners holen (10-Ohm-Widerstand als Kurzschuss-Schutz im Stecker nicht vergessen!)

- interner Spannungsregler erzeugt 3,3V statt 5V (zu beachten ist jedoch, dass viele Seriell-USB-Wandler mit 3,3V nicht mehr funktionieren!)

- 1 MOhm- Pulldown- Widerstand an PB0, falls man den LP-Mikrocontroller-Bootloader verwenden möchte, Grund siehe hier.

- Reset-Taster (für's flashen mit LPmicoISP.exe nützlich)

- Buzzer auf der Hauptplatine - den brauche ich ständig für meine Morsespielereien ;-)

- einreihige Buchsenleiste für externe Peripherie. Kontaktreihenfolge von unten: Masse, Plus, PB0, PB1, PB3, Reset/PB5, PB3, PB4, Buzzer, Masse


Die Buchsenleiste ist (im Gegensatz zu den passenden Steckern) etwas labil, da das Blech der Kontaktfahnen dünner ist als die robusten Stecker-Kontakte. Sie würde daher im Gebrauch früher oder später aus ihrer waagrechten Stellung weggebogen und dann etwas von der Platine abstehen. Sie lässt sich aber durch einen Draht fixieren, den man passend zurechtbiegt, drüberspannt und auf der Unterseite mit freien Leiterbahnen verlötet.

Eigentlich sollte sich mein Neubau an ein kleines handelsübliches Mini-Steckboard mit 170 oder 240 Kontakten "anflanschen" lassen. Der Probeaufbau war jedoch recht unzuverlässig; es hat schon seinen Grund, wenn man diese Steckboards nicht sonderlich mag. Die Kontakte klemmen die Bauteile nicht allseitig, sondern nur auf zwei Seiten, so dass sie wackeln und man mit Übergangswiderständen zu kämpfen hat. Steckboards wurden für Schaltungen mit TTL-ICs im DIL-Gehäuse ausgelegt. Sie sind prima, wenn man Gatter, FlipFlops, Zähler-ICs oder BCD-Decoder mit ein paar Drahtbrücken verbinden will, aber so etwas baut niemand mehr. Für Schaltungen mit diskreten Bauteilen, also mit Kondensatoren, Widerständen und Transistoren, wären Steckboards günstiger, bei denen die kurzen Kontaktreihen waagrecht verlaufen.



Abbildung 3: Steckboard; Streifenleitungs-Platine


Die Lösung ist ein aus SIL-Kontakten selbstgebautes Steckboard. Sie ist nicht teurer als ein Mini-Steckboard und schnell gelötet. Links ist der Steckverbinder zum LP Mikrocontroller-Nachbau, dann folgen drei vertikale zehnpolige SIL-Kontaktreihen. Man hat also pro Port drei "Andockmöglichkeiten" (statt einer wie beim DIL-Sockel der LP-Mikrocontroller-Hardware). Waagrecht schliessen sich zwei achtpolige SIL-Reihen an (Masse) und zur Unterscheidung eine siebenpolige für Plus. Vier sechspolige waagrechte Reihen dienen als isolierte Stützpunkte. Man könnte das Steckboard nach rechts verlängern, also weitere isolierte sechspolige SIL-Reihen anfügen, das macht aber nicht wirklich Sinn, weil es auf einem Steckboard schnell unübersichtlich wird (größere Schaltungen sollte man lieber auf einem Platinenrest dauerhaft löten).

Verwendet wurden längere SIL- Kontaktreihen, die sich mit dem Seitenschneider trennen lassen, wenn man jeweis auf einen Kontakt verzichtet (beim "aufknacken" mit dem Seitenschneider bricht die Isolierung nicht da, wo man es gern möchte, deshalb geht jeweils ein Kontakt verloren). Die SIL-Kontakte sind zunächst etwas schwergängig, weiten sich aber nach mehrmaliger Benutzung etwas und bleiben trotzdem zuverlässig.

Abschliessend das Streifenleiter-Layout der Programmiersockel für zehnpolige und sechspolige Flachbandkabel (wie immer von der Platinenoberseite gesehen):



Abbildung 3: Programmiersockel; Streifenleitungs-Platine



15.1.15: Ein neues Leben für das LP Mikrocontroller  von  Ralf Beesner



Wie oben angedeutet, funktioniert das Flashen mit dem LP Mikrocontroller und den Original-Tools (LPMicroISP.exe und LPMicros.exe) im ISP-Modus nur an echten seriellen Schnittstellen brauchbar. Mit Seriell-USB-Wandlern geht es entweder sehr langsam (mit einigen Wandlern, die mit einem FTDI-Chip bestückt sind) oder gar nicht.

Erläuterung: LPMicros.exe hat zwei Modi; zunächst muss man im ISP-Modus den Bootloader im problematischen ISP-Modus auf den Microcontroller übertragen; ist der erst einmal auf dem Mikrocontroller vorhanden, wird dann im unproblematischen seriellen Modus programmiert.

Den Grund für die Probleme habe ich nicht wirklich verstanden, aber es scheint damit zusammenzuhängen, dass im ISP-Modus "Bitbanging" genutzt wird (also das "Wackeln" an den Pins des USB-Seriell-Wandlers). Dabei muss jeder Flankenwechsel in ein neues USB-Paket verpackt werden und zudem die Datenübertragungsrichtung ständig umgeschaltet werden, weil der zu programmierende Mikrocontroller die Bits am MISO-Ausgang wieder herausschiebt und das Flash-Programm die herausgeschobenen Bits prüft. Die Übertragung wird so stark ausgebremst, dass Timeouts auftreten.

Der "Cheepit-Sparrow" beweist jedoch, dass die Datenübertragung auch funktioniert, wenn dieser "Rückmeldekanal" gar nicht ausgewertet wird.

Obwohl der Sparrow ja eigentlich die PC-Soundkarte als Programmiertool nutzt und die Programmiersoftware im Webbrowser läuft, eignet sich die Sparrow-Hardware auch für einen Anschluss an die serielle Schnittstelle eines Rechners. Burkhard hatte daher das Programmiertool LPMicros.exe abgewandelt, so dass man den Sparrow offline (also ohne Internetverbindung) über serielle Schnittstellen und Seriell-USB-Wandler flashen kann.

Interessanterweise funktioniert das auch mit "hoffnungslosen Fällen" unter den Seriell-USB-Wandlern, weil es beim Sparrow keinen "ISP-Rückmeldekanal" gibt, der den Seriell-USB-Wandler ausbremst. Die Sparrow-Hardware invertiert jedoch die Programmierpegel; wäre das nicht der Fall, könnte man mit dem Tool Sparrow_RS232.exe auch die Attinies der LP Mikrocontroller-Hardware flashen.



Burkhard hat jedoch eine Experimentalversion veröffentlicht, die mit invertierten Pegeln arbeitet und daher keinen Hardware-Inverter benötigt: SparrowRS232 invertiert.

Sie ist etwas unscheinbar (und das Prinzipschaltbild auf dem ersten Kartenreiter ist noch nicht angepasst), aber diese Version kann die LP Mikrocontroller-Hardware mit so ziemlich jedem Seriell-USB-Wandler flashen! Zu beachten ist lediglich, dass das Programm wegen des fehlenden "Rückkanals" nicht feststellen kann, ob wirklich ein Mikrocontroller angschlossen ist und erfolgreich programmiert wird; der Fortschrittsbalken läuft immer los.

Das funktioniert nicht gerade rasend schnell, aber in erträglicher Zeit und recht zuverlässig. Das Programm bringt einen praktischen Reload-Modus mit, der mit einem Knopfdruck ein geändertes Hex-File erneut lädt und in den Microcontroller überträgt, und ein Terminal ist auch eingebaut.

Man kann das Tool aber auch einmalig nutzen, um den Bootloader init.hex auf den ATtiny 13 zu übertragen und dann mit LPMicros.exe weiterzumachen - z.B., um die Experimente des LP Mikrocontroller nachzuvollziehen. Man umgeht so den Modus "Initialisieren - Bootloader und Fuses übertragen" von LPMicros.exe, der nicht mit den "störrischen" Seriell-USB-Wandlern funktioniert.



Elektronik-Labor   Projekte   AVR