AVR-Stoff von MME

- Weitere Include Files für den AVRPas Compiler (letztes Update: 02.07.2010)
- ATMega8535 Include File für den AVRPas Compiler (letztes Update: 22.09.2004)
- AVRPas Compiler erzeugt fehlerhafte HEX-Dateien
- StripIncFile für den AVRPas Compiler
- SpecialChar Version 0.60 (letztes Update: 12.04.2006)
- Chk8515 Version 0.51
(letztes Update: 08.11.2000)
- GoISP Version 0.55 (Entfernt, da veraltet)
- DCF77-Steuerung für einen Handtuchtrockner

Projekte/Tools

- Weitere Include Files für den AVRPas Compiler

Ich arbeite immer noch mit den kleinen AVR Controllern, wenn mich jemand mit genügend Geld zwingt ;-) Nachfolgend meine letzten Include Dateien: ATtiny24, ATtiny44, ATtiny84 und ATMega1281.

Hier sind die Include Files für ATMega48, ATMega88, ATMega168, ATMega169, ATMega644 und ATMega644P Controller. Wenn ich an AVR-Projekten arbeite, verwende ich immer noch den Embedded Pascal Compiler AVRPas für AVR. Es ist wirklich traurig, daß Rainier Lamers sich nicht mehr um den Compiler kümmert (letzter Bugfix in 2003) .
In der Zwischenzeit hatte ich Bedarf an leistungsstärkeren Controllern. Zur Zeit arbeite ich an dem "ARM9-Modul". Für die Firmwareentwicklung des Moduls ziehe ich den Free Pascal Compiler in Erwägung.
Schwer zu sagen, ob ich Embedded Pascal für ARM verwenden würde, wenn es verfügbar wäre ;-)

- ATMega8535 Include File für den AVRPas Compiler

Zur Zeit arbeite ich an einem Projekt, bei dem ich den ATMega8535 verwende. Hier ist das dazugehörige Include File für den Controller. Das File liegt der Compiler Version 2.11 nicht bei.

- AVRPas Compiler erzeugt fehlerhafte HEX-Dateien

Der Compiler erzeugt in einigen Fällen fehlerhafte HEX-Dateien. Ich habe die Compiler Versionen 2.0, 2.1 und 2.11 mit diesem Projekt überprüft. Um das Problem zu umgehen, habe ich ein Tool geschrieben, welches eine HEX-Datei mit der korrespondierenden ROM-Datei vergleicht und die HEX-Datei dann gegebenenfalls korrigiert. CheckHex steht auf Anforderung zur Verfügung.
Da ich den Hersteller des Compilers (Rainier Lamers) nicht kontaktieren kann, veröffentliche ich den Bug auf diesem Wege.

- StripIncFile für den AVRPas Compiler

Dies ist ein "quick and dirty Hack" um eine interne Limitierung im Embedded Pascal Compiler AVRPas von Rainier Lamers (http://users.iafrica.com/r/ra/rainier/) zu umgehen.

Eines meiner Projekte mit ca. 5000 Zeilen Code ließ sich nicht mehr mit der aktuellen Version 2.11 vom März 2003 compilieren. Der Compiler stoppte mit der Fehlermeldung "Too many labels". Nachdem ich das Problem im April gemeldet hatte, versprach mir Rainier die "Label-Grenze" in einer neuen Compiler Version zu erhöhen. Dies passierte nicht (wir haben nun September 2003). Die Fertigstellung des Projektes war sehr stark gefährdet. Für die Portierung des Codes nach "C" reichte die Zeit nicht aus.

Nachdem ich festgestellt hatte, daß sich mein Code für den Mega103 compilieren ließ, für den Mega128 (welchen ich verwendete) aber nicht, war klar, daß hier ein Zusammenhang mit der Anzahl der verwendeten Symbole bestehen mußte. Ich löschte dann unbenutzte Symbole "von Hand" aus der Include Datei für den Mega128 und konnte dann schließlich das gesamte Projekt compilieren. So habe ich dann dieses Tool geschrieben, welches den geschilderten Prozess automatisiert. StripIncFile.exe gibt es auf Anforderung.

Ich arbeite mit AVRPas seit 2000 und habe seitdem über 20 AVR-Projekte damit realisiert. Wenn ich Bugs gefunden habe, dann habe ich sie Rainier gemeldet und er hat sie in angemessener Zeit behoben. Trotz alledem bin ich der Meinung, daß AVRPas der beste Embedded Pascal Compiler für die AVRs ist. Es ist überflüssig zu sagen, daß ich mit der gegenwärtigen Situation überhaupt nicht zufrieden bin.

- SpecialChar Version 0.60

SpecialChar ist ein kleines Tool, mit dem Sonderzeichen für HD44780-Displays erzeugt werden können. SpecialChar ist ein 32-Bit-Windows Programm und sollte unter allen 32-Bit-Windows Versionen laufen.

SpecialChar ist Freeware und kann hier heruntergeladen werden (100 KB).

Versionshistorie:

  • 02.10.2000 V0.50 - Erstes Release.
  • 09.10.2000 V0.51 - Abspeichern von Zeichen implementiert.
  • 20.06.2001 V0.51 - Vollständigen HD44780-Zeichensatz in Form von spc-Dateien hinzugefügt.
  • 12.04.2006 V0.60 - C Source Generierung hinzugefügt.


- Chk8515 Version 0.51

Nach Durchsicht des aktuellen Errata Sheets für den AT90S8515 auf der ATMEL-Site (http://www.atmel.com/atmel/acrobat/doc1195.pdf) fiel mir der "Skip Instructions with Interrupts"-Fehler auf. Dieser Fehler kann auftreten, wenn eine bestimmte Befehlsfolge "zu einem ungünstigen Zeitpunkt" durch einen Interrupt unterbrochen wird. Eine Anwendung, die von diesem Fehler betroffen ist, ist extrem schwer zu debuggen.

Da ich sicherstellen wollte, daß mein Code diese Befehlsfolgen nicht enthält (auf Aussagen von Compiler-Herstellern wollte ich mich nicht verlassen), habe ich Chk8515 geschrieben. Mit diesem Win32-Konsolen-Tool kann AT90S8515-code analysiert werden. Sollten kritische Programmabschnitte vorhanden sein, werden diese angezeigt.

Chk8515 ist Freeware und kann hier heruntergeladen werden (24 KB).

Versionshistorie:

  • 09.04.2000 V0.50 - Erstes Release
  • 14.04.2000 V0.51 - Errorlevel wird auf 1 gesetzt, wenn ein kritischer Bereich gefunden wurde
  • 08.11.2000 - Bug8515 (mit Source) beigefügt, um den Fehler auf dem STK200 Starter-Kit von ATMEL zu erzeugen.

- GoISP Version 0.55

Ich habe GoISP von der Site entfernt, da es hoffnungslos veraltet ist. Seit Anfang 2002 verwende ich meine eigene Programmiersoftware.


- DCF77-Steuerung für einen Handtuchtrockner

Dies war mein allererstes AVR-Hardware-Projekt in 1999:

Für den Einstieg habe ich mal eine Anwendung realisiert, die nicht ganz so bierernst zu nehmen ist.

Der besagte Handtuchtrockner ist als separater Heizkörper ausgeführt, der mit dem Wasserkreislauf der Zentralheizung verbunden ist. Im Sommer kann der Trockner/Heizkörper über einen Heizstab (1300 Watt) aufgeheizt werden.

Klicke auf das Bild, um es in voller Größe zu sehen

Der Heizstab wird vom Microcontroller über ein Solid State Relais (mit integriertem Nullspannungsdetektor) angesteuert. Um die Leistung drosseln zu können, habe ich über einen Port-Pin eine Art Paketwellensteuerung realisiert.

Im Normalbetrieb schaltet der Controller die Heizung zu einer festen Uhrzeit ein und nach einer bestimmten Zeit (momentan sind es 3 Stunden) wieder aus. Die Leuchtdioden zeigen dabei den Betriebszustand des Trockners an (Funk-Signal ok, Heizung an usw.). Mit einem Taster kann die ganze Einheit abgeschaltet werden. Dies ist sinnvoll, wenn man mal Urlaub macht. Mit dem roten Taster kann man den Trockner sofort ein/ausschalten.

Sollten sich die Anforderungen an den Handtuchtrockner ändern :-), dann wird einfach eine neue Anwendung über die ISP-Schnittstelle geladen.

Den Schaltplan gibt es hier (hd.pdf, 100 KB).

Klicke auf das Bild, um es in voller Größe zu sehen.

In der Zwischenzeit habe ich mehr als 30 (kommerzielle) AVR Projekte umgesetzt. Dabei kamen folgende CPUs zum Einsatz: AT90S2343, AT90S2313, AT90S4433, AT90S8515, AT90S8535, ATMEGA8, ATMEGA163, ATMEGA32, ATMEGA103, ATMEGA128, ATMEGA48, ATMEGA88, ATMEGA168, ATMEGA169, ATMEGA644(P), ATtiny44 und ATMega1281. Einige dieser Projekte sind hier vorgestellt.


MME Müller Mikroelektronik
B. Müller
Hauptstraße 8, Gewerbehaus II
10827 Berlin (Schöneberg)

Tel.: +49-30-787.09.450
FAX: +49-30-787.09.451
USt-Id Nr.: DE190488245

© 1999-2010 MME Berlin.
Letzte Änderung: 02.07.2010.