Die Programmierschnittstelle

Abgesehen von der Programmierung über einen Bootloader, unterstützt das Mocca-Board drei verschiedene Methoden, um das Programm auf den Mikrocontroller zu laden.

ISP (In System Programming)

ISP ist DER Programmierstandard für Atmel AVR Mikrokontroller. Über ISP können sowohl der Flash-Speicher als auch der EEPROM und die Fusebits des Mikrokontrollers im System programmiert werden. ISP ist auf allen Atmel Kontrollern aus der AVR Serie standardmässig aktiviert.

Eine ausführliche dokumentation des ISP-standard ist in der Atmel Application Note AVR910 zu finden.

Achtung: Zu grosse Kapazitäten an den betroffenen Leitungen (PB1 bis PB3) können die Programmierung über ISP verlangsamen oder stören. Falls eine externe Peripherie an den PORT B angeschlossen wird, ist darauf zu achten, dass diese keine Ausgänge auf die Pins PB1 bis PB3 führt. Des Weiteren sollte an diesen Pins keine Peripherie angeschlossen werden, die durch ein falsches Signal an einer diesen Pins zerstört werden kann. 

JTAG (Joint Test Action Group)

JTAG ist eine universelle Schnittstelle, die ursprünglich zum Testen von Lötstellen auf Leiterplatten nach dem Herstellungsprozesses entwickelt wurde. Über JTAG kann, wie über ISP, auf die internen Speicher des Mikrokontrollers zugegriffen werden. Ergänzend dazu ist über JTAG das Debuggen des Mikrokontrollers, bzw. dessen Software, möglich.

Die Programmierung über JTAG ist nicht standartmässig aktiviert. Um JTAG zum Programmieren verwenden zu können, muss zuerst ein Fusebit gesetzt werden. Dafür wird ein ISP Programmiergerät benötigt.

Achtung: Wenn JTAG aktiviert ist, sind die Pins PF4 bis PF7 belegt und können nicht mehr anderweitig verwendet werden!

DebugWIRE (Wird von den älteren AVR Controllern wie dem Atmega2560 nicht unterstüzt)

DebugWIRE ermöglicht es den Mikrokontroller über ausschliesslich die Reset-Leitung programmieren und debuggen zu können. Da nur die Reset-Leitung verwendet wird, die in den meisten Anwendungen ohnehin nicht verwendet wird, bleiben auch beim Debuggen, anders als bei Verwendung von JTAG, alle anderen Leitungen frei.

DebugWIRE ist nicht standardmässig aktiviert. DebugWIRE sollte nicht manuell in den Fusebits aktiviert werden. AtmelStudio verwaltet die Aktivierung von DebugWIRE selbständenig.

Achtung: Sobald DebugWIRE aktiviert wurde, kann der Mikrokontroller ausschliesslich über DebugWIRE programmiert werden. Um DebugWIRE wieder deaktivieren zu können, wird also ein Programmiergerät benötigt, dass DebugWIRE unterstützt. Die Deaktivierung über ISP ist nicht möglich!

Parallel / High Voltage Programmierung

Notfalls kann der Mikrokontroller auch mit einem Parallelprogrammer programmiert werden. So können zum Beispiel falsch gesetzte Fusebits korrigiert werden, falls der Kontroller nicht mehr über ISP, DebugWIRE oder JTAG ansprechbar ist.

Um den Parallelprogrammer verwenden zu können, muss der Lötjumper SJ3 aufgetrennt werden.

Achtung: Der Parallelprogrammer arbeitet mit 12V Pegeln am Reset Eingang. Wird die Diode V14 nicht entfernt, so kann dies zu Schäden am Programmiergerät oder am Mocca-Board führen! Der Parallelprogrammer sollte wirklich nur verwendet werden, wenn eine Programmierung über eine andere Schnittstelle nicht mehr möglich ist.

Für weitere Informationen siehe das Datenblatt des ATmega2560 Kapitel: Memory Programming, Abschnitt: Parallel Programming, ab Seite 339.