Mikroprozessor PDF Drucken E-Mail

Herzstück der hier vorgeführten Schaltungen ist jeweils ein programmierbarer Mikroprozessor von Atmel. Er empfängt per serieller Schnittstelle die Steuersignale vom Computer und setzt diese in ein so genanntes PulsWeitenModulationssignal (kurz PWM) um. Dieses PWM-Signal wird schließlich zu den TRIAC-Gates geleitet, welche letztendlich die Scheinwerfer in der Leistung steuern.

 

Bei der Wahl des Mikrocontrollers für die Dimmer gewann der ATtiny2313 (abwärtskompatibel zum AT90S2313) aufgrund seiner kleinen Abmaße und des geringen Preises. Um nun die Firmware in den Mikroprozessor zu bekommen, wird ein Programmieradapter für den Computer benötigt. Über diesen Anschluss wird die Firmware in Form einer Hex-Datei in den Prozessor gebrannt. Für diesen Zweck kann z.B. das Atmel STK500 Programmierkit verwendet werden. Wem dieses Paket zu teuer ist, kann aus einem der folgenden Adapter auswählen und entsprechend den Prozessor programmieren.

 

 

Grundsätzliche Infos/Links zu Programmieradaptern für den PC (externe Links)


Um einen Überblick über die Vielfalt im Internet erhältlicher Baupläne für Programmieradapter für den PC zu bekommen, hier nun eine kleine Lektürenauswahl diverser Artikel und Bauanleitungen für ISP-Adapter für Atmel-Prozessoren:

  • USB-Programmer (-bereits programmierter Prozessor nötig, +Spannungsversorgung durch USB, +klein, +schnell)
    http://www.fischl.de/usbasp
    (USBasp)

Generelle Informationen
http://www.mikrocontroller.net/articles/AVR_In_System_Programmer

 

 


Eine universelle Lösung um einen Atmel zu programmieren stellt wohl der AVR910-Programmer von Klaus Leidinger dar (www.mikrocontroller-projekte.de). Dieser Programmer nutzt einen internen AT90S2313 bzw. ATtiny2313, um andere AVR-Controller, wie den ATtiny2313 bzw. den ATmega8, zu beschreiben und zeichnet sich durch seine hohe Schreib-/Lesegeschwindigkeit und Zuverlässigkeit aus. Leider wird ein bereits beschriebener Prozessor innerhalb der Schaltung benötigt, sodass diese Programmieradaptervariante nur für diejenigen geeignet ist, die jemanden kennen, der einen Prozessor für sie beschreiben können. Hier einmal der Schaltplan:
avr910isp_kleinEs muss eine Verbindung zwischen den sechs Pins (MOSI, RST, SCK, MISO, VCC und GND) und dem zu programmieren Prozessor hergestellt werden. Es empfiehlt sich, ein kleines Gehäuse zu nutzen, es mit einem kleinen Stecker zu versehen und diesen dann in die fertige Schaltung zu stecken, in der der Prozessor später auch arbeiten soll. Die Schaltung muss dann zum Zeitpunkt des Programmierens eingeschaltet sein. Dieses so genannte ISP (InSystemProgramming) erleichtert das Arbeiten mit µProzessoren unwahrscheinlich. Nach dem Aufbau der Schaltung und dem Verbinden mit der RS232-Schnittstelle des Computers, kann man den Programmer mit den Tools AVRProg oder AVRDude testen. Diese Tools können dann auch gleich die Prozessoren beschreiben.

Dazu einfach eine passende hex-Datei laden, "ATtiny26"(!) in AVRProg oder "ATtiny2313" in AVRDude auswählen und auf brennen oder "flash" klicken. Die Tools sind größtenteils selbsterklärend - einfach ausprobieren, oder im hiesigen Forum um Support bitten :)

Ebenso kann AVRdude mit folgendem Kommando genutzt werden:
avrdude.exe -p t2313 -c avr910 -P com1 -U flash:w:"C:\blabla.hex":a
(com1 kann auf den richtigen Com-Port abgeändert werden)

Damit die PC_DIMMER Firmware mit dem neuen ATtiny2313 läuft, müssen nun die Low-Fuses des Tiny2313 neu gesetzt werden. Dies kann derzeit am einfachsten mit AVRDude gemacht werden (es wird auf die AVRDude-GUI verzichtet, da es nur eine einzige Codezeile ist).
'In der Datei attiny2313patch.zip sind alle nötigen Dateien vorhanden. Am einfachsten entpackt man alle Dateien nach c:\temp. Dann gibt man unter Start Ausführen "command" bzw. "cmd" ein (je nach Betriebssystem) und gibt auf der Kommandozeile folgende Zeilen ein:

1) "cd\temp"
2)
"avrdude -c avr910 -p t2313 -P com1 -U lfuse:w:0xed:m" (com1 kann auf den richtigen Com-Port abgeändert werden)
3) "
exit"

ABER VORSICHT: beim ATtiny2313 kann man mit falschem Setzen der Fuse-Bits den Prozessor sperren. Will man einen externern Quarz nutzen, so muss bei AVR-Prog "Extern XTAL" und nicht "Extern Oscillator" gewählt werden!

 


Die Informationen stammen zum Großteil von "http://www.xs4all.nl/~sbolt/e-index.html"

Der ATtiny2313 kann mittlerweile auch mit dem SP12-Programmer AVRDude programmiert werden. Diese Schaltung ist von einem Bekannten getestet worden und scheint gut zu funktionieren.Hier die (sehr simple) Schaltung:

 

sp12isp

 

Es ist darauf zu achten, dass der Programmer keine Spannungsversorgung und keinen Takt liefert. So muss der Prozessor mit +5VDC und GND, sowie mit einem externen Quarz ausgestattet werden (1 MHz bis 8 MHz). Ebenso muss die Masse des LPT-Ports mit der Masse des Prozessors verbunden werden. Nun muss noch eine Verbindung zwischen den sechs Pins (MOSI, RST, SCK, MISO, VCC und GND) und dem zu programmieren Prozessor hergestellt werden. Es empfiehlt sich, ein kleines Gehäuse zu nutzen, es mit einem kleinen Stecker zu versehen und diesen dann in die fertige Schaltung zu stecken, in der der Prozessor später auch arbeiten soll. Die Schaltung muss dann zum Zeitpunkt des Programmierens eingeschaltet sein. Dieses so genannte ISP (InSystemProgramming) erleichtert das Arbeiten mit µProzessoren unwahrscheinlich.

Dieser Befehl sollte mit dem SP12-Programmer und AVRdude funktionieren, um eine Firmware zu laden:
avrdude.exe -p t2313 -c sp12 -P lpt1 -U flash:w:"C:\blabla.hex":a

Damit auch hier die PC_DIMMER Firmware mit dem neuen ATtiny2313 läuft, müssen ebenfalls die Low-Fuses des Tiny2313 neu gesetzt werden. Dies kann auch mit AVRdude gemacht werden (es wird auf die AVRdude-GUI verzichtet, da es nur eine einzige Codezeile ist.) In der Datei attiny2313patch.zip sind alle nötigen Dateien vorhanden. Am einfachsten entpackt man alle Dateien nach c:\temp. Dann gibt man unter Start Ausführen "command" bzw. "cmd" ein (je nach Betriebssystem) und gibt auf der Kommandozeile folgende Zeilen ein:

1) "cd\temp"
2)
"avrdude -c SP12 -p t2313 -P lpt1 -U lfuse:w:0xed:m"
3) "exit"

Bitte noch einmal checken, ob das mit dem SP12 so einwandfrei funktioniert, da ich wie gesagt die Schaltung bislang nicht gebastelt habe :)

AUCH HIER GILT: beim ATtiny2313 kann man mit falschem Setzen der Fuse-Bits den Prozessor sperren. Externer Quarz ist nicht gleich "Ozillator"!

 

Sehr gut zu benutzen ist der USBasp-Programmer. Er verwendet einen ATmega8, um ein USB-Endgerät zu simulieren. Man schließt also den Atmel direkt an den USB-Port des Computers und kann direkt andere Atmel-Prozessoren flashen. Hier einmal die Schaltung, die sehr stark an das PC_DIMMER DMX512-Interface erinnert, da fast die identische Schaltung verwendet wird. Das USBasp verwendet zudem ebenfalls die USB-Firmware von ObjectDevelopment. Firmware und weitere Informationen gibt es hier: http://www.fischl.de/usbasp

usbasp_circuit

 

 

Pin-Belegung der Atmel-ISP-Schnittstelle:

 

Dies ist die genormte Pinbelegung eines AVR-ISP (InSystemProgrammable) Anschlusses auf einer µProzessor Platine und sollte möglichst übernommen werden, um keine Probleme mit anderen Schaltungen aus dem Internet zu bekommen:

 

Nach erfolgtem und vor allem erfolgreichen Programmieren sollten beim Einschalten beide LEDs der PC_DIMMER-Platine leuchten. Nach Empfangen eines Datenpaketes (Frames) über den RS232-Bus erlischt die Receive-LED an PD1 des Controllers und blinkt ab dann bei jedem empfangenen Frame.
Ab Version 2.3 der Firmware kann man den Bootvorgang (und die Software selbst) auch mit einem Diagnoseprogramm über die RS232-Schnittstelle überwachen.

 

 

Sollte das Programmieren des Chips auch nach mehrfachen Versuchen nicht funktionieren, so kann ein fertig programmierter Chip über mich bezogen werden.