AVR-Controller:
Seit längerem stand auf meiner to do Liste, dass ich mal etwas mit AVR-Controllern machen wollte, da ich endgültig klären wollte, ob die nun besser sind, als die PIC'S oder nicht und mir die entsprechenden Kompetenzen aneignen wollte.
Ich habe also eine 5-knopf-Funkfernsteuerung für den Roboter gebaut, an dem ich seit Ende letzten Jahres arbeite. ( Der Roboter soll mal Beethovens 9. auf einer Mundharmonika blasen können etc.. Die Schwierigkeiten liegen aber mehr in der Mechanik, als in der Elektronik)
Kurz gesagt: Verglichen mit kein Controller sind die AVR's einfach Super Microcontroller. Verglichen mit den neuen PIC-18-Controllern alles in allem aber doch schlechter. Jedenfalls für mich, der in Assembler programmiert.
Gut ist bei den AVR's, das man mehrere W-Register hat R1-R32. Schlecht ist, dass man sie auch dringend braucht, weil der Zugang zum SRAM umständlicher ist und man die meisten Funktionen, die beim PIC mit dem SRAM gehen nur mit diesen W-Registern realisieren kann.
Ganz schlecht ist dass man für jeden Speicher- bereich, also den Inout-Bereich, den SRAM-Bereich und die Arbeitsregister verschiedene Befehle braucht. Beim Pic geht alles was auf RAM beruht mit den gleichen Befehlen.
Am unangenehmsten aufgefallen ist mir, das das Handling einzelner Bits (setzen clearen prüfen) bei den AVR-s viel umständlicher ist. Einzig das T-Flag ist in dieser Hinsicht eine gute Idee. Es spart beim Kopieren eines Bits einen Befehl im Vergleich zum PIC.
Gut ist verglichen mit den PIC16 der umfangreichere Befehlssatz. Aber die Hälfte davon besagt sowieso dasselbe, nur für verschiedene Speicherbereiche, und etliche sind nur andere Schreibweisen für dasselbe. Außerdem, die PIC18 haben auch so einen umfangreichen Befehlssatz, sogar einiges mehr. Z.B. Den BTG-Befehl.
Die serielle Schnittstelle von den Tinys ist stark unterbelichtet, die beim MEGA 8 kann in etwa dasselbe wie die Pics, teilweise etwas mehr.
Das Assembler – Programmieren von PIC'S ist etwas einfacher zu lernen wegen der universell anwendbaren Befehle.
Die Datenblätter sind bei beiden Controllern in demselben pdf- Aufbau dargestellt, was das Umsteigen einfacher macht. Atmel liefert aber oft nur unvollständige Datenblätter, die nur das enthalten, was bei dem betreffenden Controller besonders ist. Es gibt aber auch vollständige.
Vom elektrischen her haben alle Microcontroller beider Familien bisher alles gekonnt, was ich von ihnen wollte. Ich habe aber die Regel festgestellt, dass man immer ein paar mehr Port-Pins und Features braucht, als bei der ersten Planung vorgesehen und dann noch ein paar mehr.
Da es bei einer Sache, an der man mehrere Wochen sitzt, einfach nicht auf ein oder zwei Euro ankommt, habe ich mir deshalb angewöhnt immer etwas größere Controller zu nehmen, als ich eigentlich brauche. Der Mega im Fernsteuerempfänger beruht aber darauf, dass die tinys keinen mit meinem PIC-Roboter kompatiblen USART haben. AVR's sind teilweise etwas billiger als PIC's. Aber für mich unwesentlich.