Meine Tools zur Entwicklung von Mikrocontrollerschaltungen

Hier eine (nicht ganz vollständige) Liste der von mir eingesetzten Tools, sowie einigen Programme, die ich nützlich finde. Die 8051 Programme auf meinen Seiten habe ich auf den RAD51 Assembler angepasst.
 
Tools für 8051 und kompatible Tools für AVR Controller

8051 und Kompatible

Assembler
RAD51 ist ein freeware Assembler von Systronix mit recht umfangreicher Ausstattung (Windows). Alle 8051 sources meiner Seiten sind darauf angepasst.
TASM31 Tabellengesteuerter Assembler von Halcyon für viele Zielprozessoren, Shareware, keine Einschränkungen, super Ausstattung, DOS basierend!

8051 Softwaresimulation
3w.mundivia.es/hvasquez/sim535/ Windows basierender Simulator für den 80535 und seine Verwandten.
www.vaultbbs.com hat ebenfalls einen sehr gutem 8051 Emulator auf Windows Basis.

Eprom Brenner und Emulator
c`t eProp zum brennen der Eproms ist bei mir seit vielen Jahren im Einsatz. Ich würde heute allerdings ein standalone Gerät vorziehen.
Zum testen der Schaltungen emuliere ich die Eproms mit dem Eprom Simulator aus Elektor 10/92, der immer noch seinen Dienst tut.
Für Atmel 89C2051 benutze ich ein Eigenbaugerät, das mal als universeller Eprom und Controller Brenner gedacht war ;-)
Im Internet gibt es aber eine Menge Anleitungen zu solchen Geräten mit PC Anschluss.
Einige Beispiele:
www.erikbuchmann.de Auf seiner Mikrocontrollerseite gibt es neben viel Informationen auch einen Bausatz für einen 89C2051 Programmer
www.batronix.com Properitäre Programmierumgebung mit Assembler und Brenneransteuerung.
www.qsl.net/dg5dbz/atprog/atmel_ger.html Pläne und Software zum brennen der 20 poligen Atmel Chips 89C2051 und 4051 (Parallelportanschluss)
http://home.tiscali.de/peterd/tools/proflash/index.htm Komplette Anleitung für einen AT89xxx Brenner. benötigt leider einen gebrannten Controller dieses Typs (engl.)

Weitere Tools für 8051
Während der Programmentwicklung benutze ich ein Board auf Basis des 80C535, das es als Einzelplatine, Bausatz oder Fertiggerät von der Firma yCon verkauft wird. Um eine Kompatibilität mit den Erweiterungen von Batronix herzustellen, habe ich mir ein Adapterboard erstellt, auf dem sich auch eine serielle Schnittstelle und der Analogkomperator des 89Cx051 befindet. Mit dem entsprechenden Anschlusskabel lässt sich damit ganz enfach ein 89Cx051 Emulator aufbauen. Daraus könnte bei Gelegenheit auch mal ein Projekt für diese Seite werden.

Als Monitorprogramm während der Entwicklung benutze ich Paulmon2, eine wirklich geniale Entwicklung von Paul Stoffregen. Dessen Projektseiten sind seit vielen Jahren ein Begriff in der 8051 Internetwelt. Hier gehts zu Pauls 8051 Homepage

Atmel AVR RISC AT90Sxxxx

Entwicklungsumgebung
AVR Studio von  Atmel dürfte hier im freeware Bereich den Standart setzen, und wird auch von mir verwendet. Ganz neu werden  seit der Version 4.08 des Studio (1.73 des Assemblers) endlich auch #if Statements unterstützt.
Für die IDE des Studios angepasst gibt es auf der Seite der AVRfreaks einen kostenlosen C Compiler (AVRgcc) und etliche Tools dafür. Man muss sich lediglich auf der Seite registrieren.
Als weitere Hochsprache gibt es noch eine Basic Variante (BASCOM) bei www.mcselec.com , die in Deutschland z.B. vom Elektronikladen vertrieben wird. Dieses Basic ist auch für den 8051 erhältlich. Die kostenlose Demo Version erlaubt eine Imagegrösse von 2KB, was exakt für einen 90S2313 ausreicht, und ermöglicht damit einen echten Test.

zusätzliche AVR Tools
Ein fast unentbehrlicher Helfer beim errechnen von Timerwerten (auch PWM) und Baudraten ist AVRcalc von Kevin Rosenberg. 

AVR Programmierung

Nach einigen Versuchen mit verschiedenen Programmern für den Parallelport und den damit verbundenen Problemen beim Umstieg auf Win2000 habe ich die Atmel Application Note AN910 ausprobiert. Damit gab es von Anfang an keine Probleme, und das Arbeiten funktioniert auch wunderbar aus dem AVR-Studio heraus. Nachdem ich eine aktualisierte und beschleunigte Software dafür gefunden hatte, die auch die aktuellen Controller unterstützt habe ich daraus ein AVR-Prog Projekt gemacht. Den Programmierport des Mikrocontrollerboardes musste ich dazu allerdings um einen +5V Pin erweitern.

Programmer für den Parallelport
Wie fast nicht anders zu erwarten gibt es mittlerweile eine ganze Reihe kostenloser Programmiersoftware für die beliebten AVR Controller. Leider verwenden die meisten Programmierer eine eigene Pinbelegung, was insbesondere bei der Evaluierung zu einigem Aufwand führt. Um die Übersicht über die Anschlussbelegungen zu behalten hier folgende Tabelle:
 

Schalterstellung**
1
2
3
4
5
Software
BasComAVR
WinAVR
YAAP*
(auch mit SP12)
AT-Prog
FBProg
PoniProg*
SP12
   
ISP_AVR
AVR Pin (Testboard)
Paralellport Pin (SubD25)
MOSI (5)
2
9
8
2
7
MISO (4)
11
11
11
10
10
SCK (3)
5
2
2
3
8
Reset (2)
4
3
3
5
6
GND (1)
18-25
18-25
18-25
18-25
18-25
     
Brücke 
5 auf 15
   
* mehrere Anschlussbelegungen einstellbar ** siehe Schaltplan
 

Und die Links zu den jeweiligen Programmern:
 

BASCOM Basic mit kompletter IDE, erlaubt ein Brennen aus der IDE heraus (Demoversion bis 2 KB kostenlos)
PoniProg Sehr umfangreicher Programmer für fast alles was sich mit 5 Volt programmieren lässt (kostenlos)
WinAVR Sehr schönes (Win)Programm ohne Schnörkel, aber mit allem was nötig ist (kostenlos, derzeit Beta)
SP12 DOS basierender Programmer mit Commandmodus und Turbo C Sourcecode (kostenlos)
YAAP Jespers Programmer mit vielen Features, mehrere Anschlussbelegungen möglich, auch SP12/WinAVR (kostenlos)
AT-Prog Sehr funktioneller Programmer. Seit Version 1.9 kostenlos nur bis 1K Programmgrösse
FBprog DOS basierender Programmer mit Menüführung (kostenlos)
ISP_AVR einfacher DOS basierender Programmer mit Commandline Modus. Auf der gleichen Seite gibt es noch eine 32Bit Version, die bei mir aber Lesefehler produziert.

Da die Programme teilweise recht unterschiedlich nützliche Features bereithalten, wollte ich mir zumindest die Möglichkeit des schnellen wechselns offenhalten, und nicht mehrere Adapter jedesmal Umstecken müssen. Zu diesem Zweck habe ich aus einem 4 poligen Drehschalter und einigen Strippen eine Adapterbox gebaut. Damit lassen sich alle Programmer einfach anschliessen, und schnell vergleichen. Eine Besonderheit hat hier der YAAP Programmer, er benötigt noch eine Brücke zwischen den Pins 5 und 15, was ich mit einem zusätzlichen Schalter gelöst habe. Man kann ihn aber auch auf die SP12 Variante umstellen, und sich diese Schalterposition sparen. Die Nummern der Schalterstellungen korrospondieren dabei mit den Nummern der Tabelle. Position 6 ist noch frei.

Anschlussbild Umschalter für Programmieradapter
 

Wenn man kein Hexcode Fenster zur Kontrolle der gebrannten Bytes benötigt, tut WinAVR seinen Job. Praktisch ist dabei, dass nach dem Brennen der Reset Pin sofort freigegeben wird, was in Verbindung mit dem  AVR-Testboard einen Programmstart ohne zusätzlichen Tastendruck ergibt. Ähnliche Funktionalität bietet auch AT-Prog. Wer aus einer DOS Umgebung programmiert findet dieses Feature auch bei den DOS Programmen. PoniProg und YAAP bieten etwas mehr Funktionen, insbesondere PoniProg hat eine Menge verschiedener programmierbarer ICs. Auf den Seiten von PoniProg und YAAP findet sich übrigens auch der Dongle für den Atmel Programmer des mittlerweile nicht mehr erhältlichen STK200 Boards.
Bei meinen Versuchen hat sich herausgestellt, das ja nach verwendetem Programmer und Kabellänge die ursprünglich im AVR-Testboard eingesetzten Schutzwiderstände R1-R3 mit 1K Ohm zu hochohmig sind. Ich habe sie auf 220 Ohm heruntergesetzt, was bei mir mit allen genannten Programmern funktioniert hat. Falls jemand Probleme mit Lesefehlern hat sollte er hier zu suchen anfangen. Die Widerstände könnten im Prinzip ganz entfallen, eine gewisse Schutzwirkung hat ja auch schon der Analogschalter.


Rettung bei versehentlich falsch gebrannten Fuses 

Vor lauter Begeisterung wenn der Brenner erst mal funktioniert, dauert es meist nicht lange, bis zum ersten mal mit der Fuse Bit Einstellung experimentiert wird. Von dort ist es nur ein kleiner Schritt, bis plötzlich nichts mehr funktioniert... Erster Veracht ist meist die falsch programmierte SPIEN Fuse (ATmega...), die jedoch im seriellen Programmiermodus sinnigerweise gar nicht programmiert werden kann. Meist hat ein Missverständnis beim einstellen der Taktquelle stattgefunden. Gemeint war ein externer Quarz, eingestellt wurde ein externer Oszillator. Da der ATMega dann aber nicht den Oszillator für den Quarz bereitstellt, sondern ein sauberes Taktsignal an XTAL1 erwartet, funktioniert erst mal nichts. Um das zu beheben, braucht man keinen High Voltage parallel Programmer und auch nicht gleich ein STK500 Board anzuschaffen, es reicht wenn man dem falsch gebrannten ATMega einen ordentlichen Takt anlegt. Da mir das auch schon zum wiederholten Male passiert ist, und ich jedesmal keinen Taktgenerator "zur Hand hatte", habe ich mir mittels eines ausgeschlachteten Quarzoszillators einen AVR-Preserver gebastelt:

Schaltplan
Layout: bei dem Layout reicht auch ein Stück Lochraster
Schaltplan


Layout
Ansicht
Stückliste: Fertig: eingeschrumpft und mit dem Y-Kabel
1* 10 Pol Wannenstecker liegend z.B. Reichelt WSL10W
1* Kondensator 100nF
1* Quarzoszillator z.B. Reichelt OSZI 4.000 (Frequenz unkritisch)
passender Schrumpfschlauch zum einschmelzen, damit es kkeinen Kurzschluss gibt

Zum Herstellen des "Y-Kabels":
30cm Flachbandkabel 10 Pol
2* Pfostensteckverbinder zum aufquetschen 10 Pol z.B. Reichelt PFL10
1* Wannenstecker zum aufquetschen 10Pol PFL10SK
Preserver+Kabel

Natürlich habe ich mir keine Platine dafür angefertigt, ein Stück Lochraster reicht vollkommen. Rechts wird ein Stück Silberdraht als "Prüfspitze" angelötet, die während des Programmierens auf den XTAL1 Pin des AVR gehalten wird. Wenn die Ursache allen Übels wirklich das falsche Fuse bit war, wird es jetzt wieder gehen! Die Frequenz des Quarzoszillators ist übrigens nicht sehr kritisch, solange sie >= 1MHz und im Bereich der erlaubten Maximalfrequenz des Controllers ist (oder natürlich darunter). Der 10 polige Wannenstecker hat die gleiche Pinbelegung wie der standart 10pol. ISP Adapter von Atmel. Mit einem kurzen Stück Flacbandkabel und drei Schneidklemmverbindern kann man sich eine praktische "Verlängerung" für das Programmierkabel herstellen, oder man presst gleich einen zusätzlichen Verbinder auf das Originalkabel.

Ein weiterer Vorteil hat die Schaltung auch noch: Da man ja weiss, warum man den "Preserver" aufgebaut hat, brennt man die Fuses jetzt sicher nicht mehr falsch!

16.03.2006 Hilfreich zum Thema "Fuses" ist auch der online Fusebitrechner von Mark Hämmerling! (fast) unentbehrlich für avrdude.

Für den Fall, dass es doch mal die Reset Pin Fuse war, die versehentlich falsch gesetzt wurde hilft doch nur noch die High Voltage Programmierung. Dafür habe ich mir mir gerade einen Brenner auf Basis eines abgespeckten STK500 Boards aufgebaut. Grundlage hierfür ist der HVProg von Tobias Hammer.

HV-Prog offen
HV-Prog
Adapter für HV-Programmmierung:

Eine sehr schöne Adapterplatine, ideal geeignet zum selber ätzen hat Dieter G. (DL8YES) entwickelt und für alle zur Verfügung gestellt. Vielen Dank dafür, Dieter!

Im pdf sind Schaltplan, Bestückungsplan und das Layout zum ausdrucken auf Folie enthalten: HV-Prog-Adapter.pdf

Der Adapter wird mit einem 20 poligen Flachbandkabel an den HV-Prog angesteckt.

Umschalten des HV-Schalters nicht vergessen und eine Spannungsquelle anschließen, die kurzzeitig ca. 500mA liefern kann.

Natürlich darf immer auch nur ein Controller gesteckt sein.

Die Platine wurde von Dieter getestet mit:  Mega16/32, Mega8, Tiny26, Tiny2313, Tiny15, Tiny13

Die Zuordnung der Sockel ist dem Schaltplan zu entnehmen.

Viel Spaß damit
HV-Adapter


            Letzter Update: 07.02.2010


Diese Seite ist Teil eines Framesets. Kein Inhalsverzeichnis? Mit Home gelangen Sie zum Index.