TH9x Mods (Turnigy 9X)

Status
Nicht offen für weitere Antworten.
Als Chip habe ich den ATmega64A gewählt, da der ATmega64 nicht zur Wahl steht. War wohl keine gute Idee.
Aber das erklärt aber auch nicht wirklich warum es mal geht und dann wieder nicht.
 

xnalpf

Krawallschachtel
Ja. Es gibt viele Möglichkeiten. Du kannst die ISP Clock runterdrehen, kürzere Kabel nehmen, einen bestimmten Kondensator auf der Platine entfernen, einen anderen Programmieradapter benutzen, einen anderen PC benutzen, ein anderes Programm benutzen, die Schalter an der Funke alle in die entgegengesetzte Richtung schalten. All das kann Einfluss auf den Flashvorgang haben. Aber insbesondere solltest du systematisch vorgehen und die Ruhe bewahren denn: Du kannst den Atmel unter normalen Umständen nicht zerstören! Es sei denn du drehst an den Fuses rum was du aber in keinem Fall machen musst. Die Fuses stehen ab Werk genau so wie sie stehen sollen. Gleiches gilt für die Lock Bits. Du musst nur Flash und Eeprom bearbeiten. Wenn du dich daran hältst kannst du dich dumm und dusselig flashen ohne wirklich etwas zu beschädigen. Es sei denn du flashst die Firmware öfter als ca. 100.000 mal. Dann kommst du langsam an die Grenze der Schreibzyklen für den Flash Speicher.

Also mit System:

1. Anderes Programm zum Flashen nehmen. Z.B. Companion9x oder LazyZeros Flashtool oder Avrdude von Hand oder...
2. Anderen Programmieradapter nehmen (wenn möglich)
3. Kabel so kurz wie möglich machen (Da wo es geht. Fang nicht an das Kabel von deinem Progadapter zu zerschnippeln)
4. Anderen Rechner nehmen. Am besten mit einem anderen OS
5. Einen USB-Hub benutzen. Klingt komisch, hilft aber an meinem recht neuen Lenovo T520 damit der USBAsp korrekt erkannt wird. Wenn ich den direkt einstecke wird er nur in 10% der Fälle korrekt erkannt und funktioniert nur mäßig. Stecke ich einen Hub dazwischen funktioniert er immer 100% zuverlässig
6. Die Sache mit dem Kondensator und den Schaltern. Da muss ich mal schauen, dass ich dir ein Foto mache und auf dem Schaltplan nachschaue, welche Schalter in Frage kommen. Fakt ist - mit meinem STK500 als Progger stört sowohl der Kondensator (kann dann nur langsam flashen) als auch einer der Schalter (zieht eine Leitung am ISP auf einen Pegel so dass ich gar nicht flashen kann)
7. Ergebnise berichten und weiteren Rat einholen
 

helle

Erfahrener Benutzer
Hy,

keine hecktik, der Fehler ist im 9Xforums schon zig mal beschrieben und die lösungen dazu auch.

9xforums ziemlich unten bei programmer


Helle
 
Ich hab jetzt nochmal die Kabel bis auf 10cm gekürzt und verschiedene USB-Ports getestet. Es ändert sich nichts.
Ich denke es liegt am Programmer, es scheint einer von denen mit den Schutzwiderständen zu sein. (mal wieder am falschen Ende gespart)
Diese sind definitiv zu klein als das ich sie durch Drahtbrücken ersetzten könne.
Also muß eine neuer Programmer her. Welchen würdet ihr nehmen?

@helle
sorry wenn ich etwas aufgeregt rüber komme.
Ich habe leider nur wenig Ahnung von Elektronik und Programmieren.
Dieselmotoren und CFK liegen mir mehr ;)
 
Er hat sich die FUSES geplättet ...
Wenn er beim Chip nicht aufpasst und die Warnungen ignoriert, dann passiert genau dies, das nun nicht mehr reagieren der Funke ist genau der Grund ...
Hatte ich beim ersten mal auch mit meiner Funke :D
Habe den AVRisp damals verwendet, der sonst immer gut lief, nur hier nicht :D

Mein neuer Programmer ist der USBasp von HK (eigentlich ziemlich der gleiche wie der von Dir) ...
Der funktioniert immer ... auch bei der neuen 9XR :D
Eventuell musst du "nur" die Taktrate dieses USBasp heruntersetzen beim flashen ...

Zum Retten der Funke:
Externen Takt auf das Board legen, Fuses auf default reseten lassen und mit eePe oder companion9x dann er9x oder open9x druf und fertig :p
Als Takt reichen locker 1MHz, ich hatte dafür einen 4MHz Quarzoszillator genommen ... Spannungsversorgung über die Funke (5V vom Board) Takt an den vorhandenen Quarz der Funke (an *hmmm* einen der beiden Kondensatoren), Programmer dranne (OHNE 5V !!!) und mit eePe (r351) (jaja veraltet :D) im Menu auf "Burn" und dort auf "Reset fuses to factory default" ...
DANN Unbedingt die neue Firmware flashen UND zuerst den "Bad ROM" formatieren lassen ... Jetzt erst ein/viele neue Modelle einstellen/einspielen ... ach ja, Kalibrierung nicht vergessen :p

Hoffe, das Dir das nu hilft, kann bestimmt der eine oder andere hier evtl. besser erklären :D
 
Nachdem ich mich nochmal durchs www gewühlt habe denke ich auch es sind die Fuses.
Ich werde mal nach dieser Anleitung: er9x.googlecode.com/svn/.../Fuse%20Brick.pdf versuchen die Fuses zu resetten.
Der Oszillator ist schon bestellt.
Falls noch Interesse besteht werde ich hier über Erfolg oder Miserfolg berichten.
Danke an alle die versuchen zu helfen.
 

xnalpf

Krawallschachtel
Wenn es die Fuses sind kann das hier eigentlich nicht sein:

Das ist merkwürdig, ich habe heute die Funke nochmal an den Programmer gehängt.
extreme burner konnte Dateien auslesen. Als ich den Chip löschen wollte, kam wieder die Fehlermeldung das es der Falsche Chip sei. Also habe ich es gelassen.
Dann habe ich mit eepe versucht die neue Software installieren. Das ging bis ca 90% dann brach das Programm ab und die Funke ist immer noch tot.
Hat jemand eine Idee was ich da noch machen kann?
Wenn du mit extreme Burner Daten lesen kannst und mit eepe immerhin 90% flashen kannst. solltest du mal die Fuses und Lock bits auslesen und das Ergebnis hier posten. Das halte ich für sinnvoller als auf eine vage Vermutung hin schon wieder an den Fuses rumzudrehen. Wenn es nämlich nicht die Fuses sind sondern irgendwas drumrum machst du es damit eher noch schlimmer.
 
Wenn es die Fuses sind kann das hier eigentlich nicht sein:
...
Das halte ich für sinnvoller als auf eine vage Vermutung hin schon wieder an den Fuses rumzudrehen. Wenn es nämlich nicht die Fuses sind sondern irgendwas drumrum machst du es damit eher noch schlimmer.
Eben NICHT, denn er sollte die FUSES nur auf "default" also WERKSEINSTELLUNG setzen (dem AVR entsprechend) ...

Das auslesen der "originalen" Firmware ging bei mir noch nie, weder bei der FlySky gelabelten, noch bei der Turnigy ... und auch bei der 9XR ging es nicht, weder mit eePe, noch mit Companion9X ... IMMER EEPROM ERROR ... Da sind zumindest bei mir hier immer Lockbits an gewesen ... Und wenn dann noch der "falsche" Mega ausgewählt wurde ... falscher ATMega = falsche Fuses eingespielt ...

Das die Funke "irgendwie" noch kommunizieren kann heist nicht, das die Fuses in Ordnung sind, tatsächlich reicht wenig aus, um in der 9X die Fuses zu verhunzen, besonders, wenn der verwendete Programmer NICHT unterstützt wird.
Das nicht Reagieren und das leere Display ist eindeutig dafür ein Indiz, solange er intern alles richtig gemacht hat und auch keinen "kurzen" produziert hat beim Umbau ...

Das ist mir damals mit dem TinyISP passiert, danach zwei Stunden googeln und grübeln, genervt sein, weil die Funke noch NIE einen Vogel in der Luft gesteuert hatte etc.
Es reicht sogar schon ein zu langes ICSP Kabel vom Programmer zur Funke in einer Computer, Smartphone und DECT gedöns verseuchten Umgebung, die Kaffeemaschine switched off etc. Elektrosmog ist da ganz freundlich zu den Fuses :p

Er kann auch ein Arduino-Board nehmen, um die Fuses und/oder die Firmware neu zu flashen, dort gibt es sogar die Möglichkeit, den Takt extern bereit zu stellen ...
 

xnalpf

Krawallschachtel
Eben NICHT, denn er sollte die FUSES nur auf "default" also WERKSEINSTELLUNG setzen (dem AVR entsprechend) ...
Du hast mich nicht ganz verstanden. Es ging mir nicht darum, die Firmware auszulesen. Ich finde es nur mutig die Fuses flashen zu wollen, wenn man nicht weiss, ob es nur die Fuses sind oder evtl. etwas ganz anderes in der Kette. Wenn er so wie du das machen willst die Fuses schreiben kann, dann kann er die Fuses auch lesen. Und erst mal schauen ob da was falsch ist. Das ist auf jeden Fall sicherer. Wenn er nämlich wie du ganz richtig schreibst die DECT Basisstation, das Handy, seinen WLAN Accesspoint und den Motor von der Drehbank geschickt um seinen Schreibtisch drappiert hat wird er sicherlich nie ordentliche Ergebnisse beim Flashen der Firmware erzielen. Die Wahrscheinlichkeit, dass er die Fuses falsch programmiert ist dann aber auch sehr hoch. Egal, ob er sie auf WERKSEINSTELLUNG flasht oder auf irgendwas anderes.
 

Hotzenplotz

Erfahrener Benutzer
Da ich bisher keine Antwort bekam, stelle ich hier meinen Beitrag nochmals ein:
So, es ist vollbracht, meine 9X srpicht jetzt auch ER9X.
Menü soweit verstanden, habe allerdings im DR/Expo Menü ein problem. Habe es laut Anleitung auf den Dreistufenschalter programmiert. Kann auch von High auf Midrate umschalten, aber nicht auf Low, in der Lowstellung zeigt das Display auch Mid an.
Habe jetzt zwar zwei begrenzte Flugzustände, komme aber nicht mehr auf die Stellung mit Vollausschlag.
Oder geht es wirklich nur mit zwei getrennten Schaltern, denn da bekomme ich es problemlos hin.
Kann mir jemand helfen????????????????????????????

Ist keiner in Forum der dieses Problem erklären oder beseitigen kann.
Vorab schon mal besten Dank.
Gruß
Lothar
 

helle

Erfahrener Benutzer
hy,

das ist so verblüffend einfach, dass man erst gar nicht drauf kommt.
Der 3 Stufen Schalter heist ID0 ID1 ID2
Im Dualrate / Expo Menu ist pro Ruder immer nur 1 Zeile aktiv, (egal wie viele dort stehen)
Darum läuft das so:

Im Menu Dualrate für das entsprechende Ruder 3 Zeilen eintragen (erst mal Kopieren)
Für jede Zeile dann in das Untermenu, dort die Werte für Dualrate und Expo eintragen und als Schalter jeweils ID0 ID1 ID2

Fertig das wars und schon hat man 3 verschiedene Dualratewerte und 3 versch. Expowerte.
Siehe Bilder,
Alles klar?

-----------------------
Das könnte man jetzt noch steigern in dem man dort wo bei Dualrate und Expo Festwerte stehen
diese durch Globale Variablen ersetzt, die man jetzt jederzeit beliebig im Flug verändern kann.
------------------------
Alles klar?



Andere Variante:
Statt mit 3 Stufen Schalter mit normalem Schalter arbeiten und 2 Dualrate und 2 Expowerte
das geht weil ein Schalter als ON oder als OFF verwendet werden kann
für OFF steht dann da ein "!" davor also ALE unnd !ALE
Somit 2 Zeilen einfügen und im Untermenu mal den Schalter als ALE und mal als !ALE eintragen
und schon hat man 2 Dualrate und 2 Expowerte frei definiert zum umschalten
Alles klar?
--------------------------
So nun bitte etwas damit spielen, dann ergeben sich noch weitere Ah-Effekte!


open9x ist einfach genial!!


Helle
 

Anhänge

Zuletzt bearbeitet:

Hotzenplotz

Erfahrener Benutzer
@helle
Danke für die schnelle Antwort,es funst. Muss mich wohl doch noch etwas mit der Software beschäftigen.
Andere Frage: Habe dir vor einigen Tagen eine PN geschickt, betrifft diesen Tred (T7AH-2400 ZD Sender und Empfänger für ca 30-40€ very nice System!).Hast du da noch Empfänger zu verkaufen,benötige dringend zwei. Falls ja, ne PN an mich.
Nochmals besten dank für alles
Gruß
Lothar
 

Hotzenplotz

Erfahrener Benutzer
@helle
Zu früh gefreut, geht doch nicht. Bekomme mit dem dreistufenschalter nur zwei Einstellungen.Von ID2 nach ID1 kann ich umschalten von ID1 nach ID0 tut sich nichts. Sender geöffnet, Schalter durchgemessen, Schalter ist ok. Nächster versuch, Schalter als Geber zugeordnet und siehe da, Servo bewegt sich nur in eine Richtung in die andere geht nichts. Also kann die Umschaltung ja auch nicht gehen. Was soll den das??????????????????
Gruß
Lothar
 

xnalpf

Krawallschachtel
Das ist allerdings sehr merkwürdig denn laut Schaltplan sind nur ID1 und ID2 an den Atmega geführt. Die Schalterstellung ID0 wird also scheinbar aus dem Zustand "weder ID1 noch ID2 sind aktiv" gefolgert. Kann also eigentlich kein Hardware-Problem sein.
 

xnalpf

Krawallschachtel
Ah, meine Annahme ist nur halb richtig. Hier ist der Code:
Code:
    case SW_ID0    : return !(PING & (1<<INP_G_ID1));
    case SW_ID1    : return (PING & (1<<INP_G_ID1))&& (PINE & (1<<INP_E_ID2));
    case SW_ID2    : return !(PINE & (1<<INP_E_ID2));
Es gibt zwei Quellen für den Switch. Eine heisst INP_G_ID1 und entspricht dem PIN ID1 auf dem Schaltplan, die andere ist INP_G_ID2 und entspricht ID2 auf dem Schaltplan. Der Code wertet das aber so aus: ist INP_G_ID1 "gesetzt" wird SW_ID0 zurückgeliefert. Ist INP_G_ID2 gesetzt wird SW_ID2 zurückgeliefert. Sind INP_G_ID1 und INP_G_ID2 nicht gesetzt wird SW_ID1 zurückgeliefert. Beid dir funktionier ID0 nicht was ein Indiz dafür sein kann, dass INP_G_ID1 nicht ankommt. Das ist auf dem Schaltplan ID1 was am Atmel PG3 oder Pin 18 ist. Da solltest du mal messen.
 

Hotzenplotz

Erfahrener Benutzer
@xnapf
Das mit dem Schaltplan habe ich auch schon überprüft, werde jetzt doch mal den Schalter wechseln vieleicht hat er ja doch ne macke. Werde dann weiter berichten.
Lothar
 

helle

Erfahrener Benutzer
Hy,

also ich habe das so wie oben programiert und das geht,
Kontrolle kann man im Limitmenü machen,wenn man die DR-Werte weit auseinanderlegt.
sieht man bei gleicher Knüppelstellugn die Werte in us springen.

im DR/Expo Hauptmenu wird die jeweils aktive Zeile ID0 ID1 ID2 fett dargestellt. (hier sieht man die 70 als fett)

Habe open 9x r1726 oder neuer drauf, bin gerade nicht zu Hause, kann gerade nicht nachschauen.

Nicht gleich aufmachen , erst mal so testen:

2. Sache in den Mixern was verbogen, begrenzt
3. Sache in den Limitmenüs Servowege begrenzt

4. ID0 ID1 ID2 in den programimerbaren Schalter belegen,
dann sieht man auch wenn diese Schalter aktiv werden (fett dargestellt)

Mehr kanns dann nicht sein

Man kanns auch in Companion9x simulieren und testen.

Helle
 
Zuletzt bearbeitet:

xnalpf

Krawallschachtel
Um zu schauen, ob der Schalter grundsätzlich funktioniert kann er auch einfach auf den entsprechenden Statusscreen umschalten. Zumindest in der open9x, die ich auch benutze gibt es den angefügten Statusscreen. Rechts unten wird ID0, ID1 oder ID2 angezeigt. Und das ganz unabhängig von irgendwelchen Mischern usw.
 

Anhänge

Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten