AVR-Assembler programmed

ATMEGA128 Temperature Controller

Dieses Projekt entstand aus purer Neugier und nur zum Vergnügen. Es beschreibt eine elektronische Steuerung für ein Kühl- / Gefriergerät mit umfangreicher Menüsteuerung. Es ist ein Projekt zur Anregung und zur freien und beliebigen Weiterbearbeitung. Nicht alle Unterprogramme wurden fertig gestellt, aber alle Grundfunktionen einschließlich Abtauintervallen bis zu mehreren Tagen, Hysterese bzw. Schaltabstand, Auslesen der 8 Fühler und Relaistest sind implementiert und getestet. Es geht darum, zu zeigen dass man ohne Programmier-Vorkenntnisse in einer kurzen Einarbeitungszeit (als Hobby so etwa ein Jahr) vom Erstkontakt mit einem Atmega 8 Controller zur fast fertigen Assembler-programmierten Steuerung mit einem Atmega 128 gelangen kann, d.h. ohne jegliche Bibliotheken, ohne Software frames und Evaluation Kits !

 

Natürlich ist das eine sehr individuelle und keineswegs professionelle Lösung eines Einzelnen in einer Technologie, die schon auf dem Rückzug ist. Aber gleich mit 32 bit ARM Controllern und einer wenn auch niederen "Hochsprache" zu beginnen schien mir vermessen. Also erstmal 8 Bit, jedes Register ganz bewusst kennenlernen und stets wissen, was ich im SRAM und was im EEPROM abgelegt habe.

 

Da sich 64-polige Flatpacks nicht gut von Hand löten lassen, habe ich ein "Breakaout-board" dipATmega von btc gewählt, das ausser dem Controller noch einen Reset-Chip und einen 4-fach Analogschalter zum Auskoppeln des ISP Interface nach abgeschlossener Programmierung enthält. Es handelt sich aber NICHT um eine Bootloader-Version o.ä., d.h. wer mag kann auch einen taufrischen Atmega 128 in eine aufklappbare Testfassung stecken.

 

Programmiert wurde mit dem AVR Dragon und einigen anderen ISP-Programmern so um die 30,- Euro, also nichts, was ein Loch in die Kasse reisst. Das ATMEL Studio 7 ist kostenlos von der ATMEL Homepage downzuloaden und  unproblematisch zu installieren.

 

Die Veröffentlichung beruht auf meiner vergeblichen Suche nach einem derartigen Projekt, als ich anfing, mich damit zu beschäftigen: umfangreichere Assemblerprojekte sind eher selten. Analoge Sensoren mit krummer Kennlinie auch ... und zu Menüsteuerungen mittels einer Tastaturmatix und eines vom Controller selbst gemultiplexten, unintelligenten Displays hab ich nichts gefunden. Diese Lücke will ich etwas füllen ... und keineswegs etwas ganz Neuartiges zeigen !

 

Ach ja, der Atmega 128 A bzw. sein Datenbuch sind nicht 100% kompatibel zum Atmega 128, wenn man so hardwarenah programmiert, da die Bits innerhalb einiger Register geringfügig (und daher sehr unaffällig) verschoben sind. Sofern man sie also nicht mit ihren "Namen" im Assembler anspricht, sondern mit ihrer Position, passt es dann nicht. Das bedeutet auch, dass das etwas elegantere Olimex-Breakout-Board mit dem 128 A (32 kHz Echtzeituhr-Quarz und 5V-Regler on board) kleine Änderungen bei der Ansprache der Bits verlangt.

 

Goodbye Hardware ... hello Assembler

In den vergangenen Jahrzehnten haben mich der technische Aufwand (massenhaft EPROMs brennen und wieder mit UV-Licht löschen) sowie die Kosten der Ausrüstung davon abgeschreckt, mich mit 6805, 8051 & Co. auch praktisch zu beschäftigen. Das war theoretisch verlockend, praktisch war aber der Griff in die gut gefüllte Trickkiste der CMOS Serien 4000, 74 HC... und einiger Spezialbausteine schneller und preiswerte für ein Gerät oder eine Kleinserie.

Inzwischen lohnt es sich, ab 1 Stück ein paar Zeilen Code zu schreiben, ihn in den Chip zu schieben, live zu testen und sofort zu verbessern.... selbst eine einfache Blinkschaltung ist mit einem Controller im 8-poligen DIL-Gehäuse billiger und flexibler als ein NE555 mit frequenzbestimmendem Elko :-) und selbst ohne Quarz frequenzstabiler !

 

Goodbye Assembler :-(    , hello C ...

Nun hat es mich gepackt und ich traue mich an einen ATMEL ATSAM 4 LS 2b in besagter aufklappbarer Testfassung...ohne Software Frame und Debugging Chip. Hier wird dann allerdings ein ICE Programmierinterface für 100 ... 200 Euro notwendig. Das ist aber billiger und lehrreicher als die ATMEL Evaluation Kits oder die Arduino SAM-Welt. Außerdem ist in jedem ATMEL Evaluation Kit eine Seriennummer fest hinterlegt. Dieses Baukastensystem prüft, ob kompatible Prints kombiniert wurden und liefert gleich die vorgefertigten Softwarebibliotheken dazu ... ätzend. Und theoretisch kann man nachvollziehen, wer wo auf der Welt mit welchem Evaluation Kit gerade was baut. Ich habe keine Geheimnisse. Wer aber welche austüftelt , sollte nach der Installtion des ATMEL Studios lieber offline weiterarbeiten und sich bei Bedarf einen neuen Rechner präparieren, statt online mit Updates zu arbeiten.

Tastaturcan und Displaymultiplex  laufen schon ... aber es ist noch ein Stück Arbeit, bis da ein Grafikdisplay oder gar Touchscreen dranwächst ... aber das gibt dann mal eine andere Projektseite.

Leider erstmal alles in C :-(  .Aber auch hier kann man hardwarenäher oder abstrakter programmieren, z.B. sich den vom C-Compiler generierten Assembler-Code ansehen :-)