Kram 2025

Anderer Kram:

AVR-ISP mkII Original und Clone

Problem: Vermeintliches AVR-Programmiergerät „AVR-ISP-mkII“ aus China erweist als (zu teurer) Klon, der überhaupt nicht funktioniert. Zumindest nicht mit avrdude, dem Arbeitspferd von Arduino und WinAVR.

Besser: Beim nächsten Mal nicht in China kaufen. Eines können die Chinesen: Täuschend echt aussehende Gehäuse herstellen! Es unterscheidet sich vom Original nur durch die fehlenden Schriftzüge „AVR“ und „Atmel“. Alternativen:

Untersuchung: Durch die Universität kommt mir auch mal ein Original-Programmiergerät in die Pfoten, und dieses funktionierte sofort. Na gut, ebenfalls erst nach Treiberinstallation. Lästig ist dabei, dass es nicht ohne (externe) Speisung des Controllers funktioniert; der UCC ist datenblattgemäß ein Eingang, der die Programmierspannungspegel (5 V, 3,3 V oder auch weniger) nachführt.

Fotos

Frisur am Original: Um den Controller auch mal speisen zu können habe ich den allfälligen Schalter zwischen USB-Busspannung und UCC gelegt. Das geht aber nur für ATtiny und ATmega, nicht für xMega! Da der Programmer nicht mir gehört, ohne Modifikation am Gehäuse.

Frisur am Clone: Netterweise ist zur Speisung des Targets ein Jumper vorgesehen, wenn auch nicht bestückt. Hier habe ich nun eine „zweipolige Stiftleiste“ zur UCC-Speisung (roter Jumper) bestückt. Die bereits vorhandene ist für Reset und Urlader des STC-Controllers. Der bekommt seine Firmware über die dreipolige serielle Schnittstelle mit R-T-G. Auch das zehnpolige Kabel ist für mich unbrauchbar, ich habe es durch ein sechspoliges ersetzt.

Fehlersuche: Mit einem Oszilloskop, aber auch nur mit einem Oszilloskop ist der Fehler schnell gefunden: Es findet ein Kommunikationsversuch mit dem (bereits programmierten) Mikrocontroller statt, aber die Antwort ist wirr: Der Programmer „vergisst“ Reset auf Low zu ziehen! Und da „antwortet“ das Programm und nicht der ISP-ROM-Code.
Reset mit GND verbinden, und es funktioniert alles. Daher habe ich nun einen Umschalter für die Reset-Leitung eingebaut (gelber Jumper). Das erweist sich als etwas hakelig, bei gelegentlichem Programmierversagen muss der Controller ab- und angesteckt werden. Nicht toll, aber so ist der Clone für WinAVR- und Arduino-Benutzer brauchbar. Möglicherweise beschwört der Hersteller des Clones die volle Funktion durch eine undokumentierte Reset-Aktivierungssequenz innerhalb der Atmel-Studio-Software.

Vergleich: Der Aufwand, den Atmel für ihr Programmiergerät betreibt, ist schlicht gigantisch! Andererseits gibt es keinen Atmel-Controller, der das USB-Interface mit EP2IN und EP2OUT nachbilden kann, und so gesellt sich neben dem ATmega128 ein extra USB-Chip aus den Anfangstagen von USB, nicht von Atmel, sondern PDIUSBD12 von Philips. Bei so viel Aufwand verwundert es, dass es nicht gleich HVSP und TPI-HV beherrscht.
Der China-Clon erscheint minimalistisch, und ihr STC-Controller kann EP2IN und EP2OUT feilbieten. Warum bei immer noch freien Pins keine Speisespannungs-Zuschaltung realisiert, keinen Taktausgang anbietet und kein TPI-HV anbietet erscheint unverständlich. Mit der Nicht-Funktion hat das nichts zu tun! Für xMegas ist der Clon offiziell nicht geeignet, weil Pegelumsetzer für 3,3 V fehlen. Funktionieren wird bzw. könnte es trotzdem, habe keinen zum Testen.

Siehe auch: