Turnigy 9XR mit Open9X flashen mittels ArduinoISP

Eine nette Eigenschaft der Turnigy 9XR neben Ihrem günstigen Preis ist die Tatsache das man Sie mit einer OpenSource FW flashen kann. Das fügt der Funke einige Funktionen hinzu, und übersetzt das OSD z.B. ins Deutsche. Auch macht diese FW es möglich (nach HW Modifikationen an der Funke) Telemetriedaten von FRSky Empfängern oder GPS Daten auf dem Display anzeigen zu lassen.

Ausserdem soll die orginal Turnigy 9XR FW ja auf einer recht alten Version der er9x Software  basieren ohne das Hobbyking etc. den Quelltext releasen oder den Entwicklern in irgendeiner Art (Credits etc.) danken. Und das ist von Hobbyking ganz schön scheisse.

Naja auch egal, machen wir uns daran die Turnigy 9XR zu flashen. Die Funke hat, im Gegensatz zur 9X den Anschluss zum Programmieren des Atmega schon heraus geführt. Was blöd ist, ist das weder in der Anleitung, noch auf der Turnigy Website irgendwo steht wie die Anschlüsse auf dem Pfostenstecker verdrahtet sind. Das bedeutet , das man womöglich den Atmega grillt wenn man die Anschlüsse falsch verbindet.

Also habe ich zur Vorsicht erstmal die Funke aufgeschraubt um zu sehen welches Pinout jetzt das richtige ist, dabei stellt sich heraus das jenes hier passt:

ISP 6 way pinout

Wenn man die Funke auch schon offen hat dann kann man direkt schauen was für ein Atmega verbaut ist, das kann nämlich entweder ein Atmega64 oder ein Atmega128 sein. Bei mir war es die 128er Version, das wird nachher beim flashen wichtig.

Jetzt brauchen wir natürlich erstmal die richtige Hardware um unsere Funke zu flashen. Leider hatte ich gerade keinen USBasp zur Hand, aber was man immer im Haus haben sollte ist ein Arduino Board. Die Dinger sind ja für alles gut, z.B. auch um einen AVR Programmer zu bauen der das STK500 Protokoll (zumindest Teile davon) unterstützt.

Das erste was wir jetzt also machen müssen ist das Arduino Board (habe hierfür ein UNO Board verwendet) mit der ArduinoISP Sketch zu Bespielen, diese findet man in der Arduino IDE unter Datei->Beispiele->ArduinoISP.

Bevor Ihr das Sketch auf den Arduino ladet sind zwei Anpassungen nötig:

Sucht nach folgenden Stellen im Sketch und löscht das „*2“

uint8_t write_eeprom(int length) {
 // here is a word address, get the byte address
 int start = here * 2;
char eeprom_read_page(int length) {
 // here again we have a word address
 int start = here * 2;

Nachdem das Sketch herauf geladen wurde trennen wir das Board vom Rechner und machen uns an das verkabeln. Welche Ports auf dem Arduino mit denen am Pfostenstecker korrespondieren steht oben im Sketch (in meinem Fall: Reset->10, MOSI->11, MISO->12, SCK->13).  5V und GND dürft Ihr natürlich auch nicht vergessen.

Nun muss man unbedingt noch den Autoreset des Arduino deaktivieren, dafür gibt es verschiedene Möglichkeiten, wie man hier nachlesen kann. Ich habe einfach einen 120R Widerstand zwischen Reset und 5V geklemmt und es hat funktioniert. Wenn man gerade keinen passenden Widerstand zur Hand hat kann man auch mehrere parallel schalten, es sollten am Ende nur zwischen 110 und 124 Ohm bei raus kommen. Es gibt scheinbar noch die Möglichkeit das ganze mit einen 10uF Kondensator zwischen Reset und GND zu machen, aber lest es selbst nach.

So sollte das ganze dann funktionieren, ich hoffe das ich die parallelen Widerstände (hier 2x 220Ohm richtig verdrahtet habe), zur Not am besten noch mal nachmessen.

avrisp_turnigy_Steckplatine

Wahrscheinlich bau ich mir noch nen AVR Flasher auf einem Arduino Nano Board in einem Gehäuse auf, damit ich was zur Hand habe um schnell Einstellungen zu ändern etc.

Und nun zur Software, da ist wesentlich weniger Arbeit nötig, denn hier heisst das Zauberwort Companion9X, ein geniales Stück Software.

Was man hier machen Beschränkt sich im Endeffekt da drauf die richtigen Optionen für den Programmer einzutragen (Brennen -> Einstellen), anpassen müsste Ihr die mcu und natürlich den Com Port.

Configuration AVRDUDE _ SAM-BA

Unter Datei -> Einstellungen könnt Ihr euch dann eure passende FW zusammenklicken, je nach bedarf:

Einstellungen

Nach dem Klick auf Download wird euch dann direkt das flashen angeboten, kurze Zeit später läuft eure 9XR mit open9x bzw. OpenTX und Ihr könnte euch an das Einstellen machen.

Viel Spass dabei.

6 thoughts to “Turnigy 9XR mit Open9X flashen mittels ArduinoISP”

  1. Ich weiß nicht, ob mein Arduino Nano Clone einen Auto-Reset hat.. Was passiert denn wenn doch? kann ich was kaputt machen?

    Grüße

    1. Soweit ich weiss haben alle Arduino’s diesen Autoreset. Was jetzt aber passiert falls diese ausgelöst wird kann ich dir nicht sagen.
      Du solltest aber auf jeden Fall probieren welche Schaltung zum deaktivieren des Autoreset bei dir funktioniert. Ein alter Arduino von mir funktionierte mit der Widerstandschaltung, mein Nano Clone braucht die Schaltung mit dem Kondensator zwischen Reset und GND.

  2. Ich Versuche die Turnigy 9XR mit einem USBasp vom Gulshop.
    Mein rausgeführtes Layout ist nicht an MISO und MOSI gelötet sondern an RXD0(PDI) und TXD0(PDO).
    Der Chip ist ein Atmega128A.
    Das flashen schlägt immer fehl.
    Muss ich denn die RXD0 und TXD0 ab und an MOSI und MOSI löten?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.