Forum: Mikrocontroller und Digitale Elektronik avr910 defekt?


von Jens P. (jmoney)


Lesenswert?

Hi,

ich hab hier ein Problem mit einem avr910 und kann es einfach nicht
lokalisieren. Ich erklär mal, die Situation, vielleicht erkennt ja
jemand anderes den Fehler.
Im Prinzip kann man aber den folgenden Text einfach überspringen und
gleich zur Zusammenfassung gehen ;)

Aaalso angefangen hat alles damit, dass ich den
avr910-Programmieradapter (fertig gekauft von shop.ob-elektronik.de und
auch schon mal benutzt, ging also mal) nach längerer AVR-Abstinenz mal
wieder ausgekramt hab. Natürlich hab ich prompt beim ersten Versuch in
der Zielschaltung die Versorgungsspannung verpolt. Das hat auch der
tiny im avr910 abgekriegt. Die Verpolung lag daran, dass ich beim
Erstellen der Platine vergessen hatte, die obere Lage beim Drucken zu
spiegeln. Daher sind auch die anderen SPI-Pins mal kurzzeitig falsch
angeschlossen gewesen.
Da sich der avr910 nicht gerührt hat (Fehler in uisp, avrdude), hab ich
ihn mal an die Serielle meines Windowsrechners gehängt. ->auch nichts.
Im Terminal zeigte er nur Mist an. Das lag daran, dass der Stecker
verpolt war und der tiny sich die Versorgungsspannung über SPI oder
Reset oder was weiß ich geholt hatte.
Dann hab ich endlich das Problem mit dem verpolten Stecker behoben, mit
dem Ergebnis, dass er jetzt bei beliebigen Baudraten exakt zurücksendet,
was er auf der Seriellen empfangen hat. Der Oskar an TX und RX direkt
verrät, dass RX (Pin3 auf der Buchse, TX des PC) in Ruhe auf -9,5V
liegt, bei Verkehr mit schön steilen Flanken auf +9,5 hoch geht. Tx
(Pin2, RX des PC) hingegen liegt nur auf etwa -4,5V. Die Flanken sahen
auch nicht so schön aus und hatten Ausschläge, fast wie
Induktionsspitzen. Da ich eine defekte Ausgangsstufe vermutete,
wechselte ich den BC857 (Q100 in
http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR910-schalt.jpg).
Ergebnis: Schöne Flanken aber immer noch nur -4,5V.
Diesmal konnte ich das Kabel als Übeltäter identifizieren. Es hatte
intern nur den Schild auf PC-Masse, nicht aber die Signalmasse.
Weiter also direkt am Com-Port, ohne Kabel.
Jetzt zeigt er wieder nur Müll an, und das auch nur auf 115kbaud. Ich
schließe daraus, dass die Zeichen, die er vorher brav zurückgesendet
hatte, nur vom eigenen Tx eingekoppelt waren.
Da der avr910 ums Verrecken nicht wollte, hab ich halt meinen alten
STK200 genommen. Die Zielschaltung war ruck zuck programmiert und
funktionierte auch. Also mal den STK200 an den avr910 geklemmt,
Spannung drauf, jumper gesetzt und mal uisp gestartet. Er hat
tatsächlich den tiny2313 erkannt und auch ausgelesen. Daher gehe ich
mal davon aus, dass der SPI-Port des tiny noch geht.

Zusammenfassung:
 - avr910 war verpolt
 - antwortet auf der Seriellen auf 115kbaud, aber nur Mist
 - lässt sich mit STK200 auslesen -> SPI ganz
 - LEDs des avr910 verhalten sich normal, also beim Einschalten zuerst
rot, dann kurz rot+grün, dann grün
 - Q100 getauscht gegen jungfräulichen bc857c
 - der Vollständigkeit halber noch Q2 getauscht gegen bc847c


Hat jemand ne Idee, was ich noch probieren könnte? Kann ein Defekt im
Tiny so ein Verhalten bewirken?

von Klaus L. (kllei)


Lesenswert?

Hallo Jens,

wann hast Du denn den avr910 gekauft? Die ersten waren meines Wissens
noch nicht default auf 115200 Baud eingestellt (ich glaube 19200).
Probier mal AVRProg(in AVRStudio enthalten), der sucht sich die
Baudrate selbst. Beu avrdude kann auch ein Fehler im avrdude.conf file
sein (z.B. Baudrate).

>Dann hab ich endlich das Problem mit dem verpolten Stecker behoben,
mit
>dem Ergebnis, dass er jetzt bei beliebigen Baudraten exakt
>zurücksendet, was er auf der Seriellen empfangen hat.

Ich denke mal das war bei gebrücktem Rx und Tx am ATTiny ?

Probiere mal andere Baudraten. Wenn die LEDs beim Spannungsanlegen
blinken, ist der Chip in Ordnung.

Hth,
Klaus

von André (Gast)


Lesenswert?

Welche Baustein willst du mit deinem AVR910 programmieren? Ich habe den
gleichen Programmer von besagter Firma und musste feststellen, dass das
mit dem Mega8 und Mega16 wunderbar funktioniert, nicht aber mit dem
Tiny2313 und ich kann mir nicht erklären wieso...

Gruß, André

von Jens P. (jmoney)


Lesenswert?

Hi,

hab grad schon mal einen Text getippt und dann aus Versehen auf ein
Banner geklickt, also nochmal in kurz:


Klaus:

>wann hast Du denn den avr910 gekauft? Die ersten waren meines Wissens
>noch nicht default auf 115200 Baud eingestellt (ich glaube 19200).
>Probier mal AVRProg(in AVRStudio enthalten), der sucht sich die
>Baudrate selbst. Beu avrdude kann auch ein Fehler im avrdude.conf
file
>sein (z.B. Baudrate).

Es ist Version 3.9 drauf. Da es auf deinen Webseiten nur 3.8b gibt,
nehme ich mal an, dass der shopbetreiber da noch dran gefrickelt hat.
Ich probier heut mittag mal die offizielle 3.8b. Wenn die geht, frag
ich den Shopbetreiber mal nach nem Listing, um es mit dem ausgelesenen
zu vergleichen.
Baudrate war auf 115000 eingestellt, ich hatte die aber mal im Terminal
auf 19200 eingestellt. Diese Funktion ist soweit ich das überblicke der
wesentliche Unterschied zwischen 3.8b und 3.9.
Das Menü, das damals kam, kommt aber auch nicht mehr.

AVRProg 3.7 meldet einen Fehler. Soll ich noch 4.0 probieren? Hab grad
kein AVRStudio. Würde es mir dann am Nachmittag mal runterladen.

avrdude.conf hab ich nicht angefasst, lediglich dan default_parallel
und default_serial. Deshalb hatte ich damals die Baudrate des
Programmers auf avrdude-default 19200 gesetzt. Ob ich das nochmal
zurückgesetzt hab, weiß ich nicht.

>Ich denke mal das war bei gebrücktem Rx und Tx am ATTiny ?

Rx und Tx waren nie gebrückt. Weder am Tiny, noch im Kabel. Ich könnte
mir allerdings vorstellen, dass das Kabel einen Bruch hat und das Rx
nur eine Einkopplung vom eigenen Tx war. Ist jedenfalls die einzig
sinnvolle Erklärung die mir einfällt.

>Probiere mal andere Baudraten. Wenn die LEDs beim Spannungsanlegen
>blinken, ist der Chip in Ordnung.

Standardbaudraten hab ich durch. Letzteres beruhigt mich ;)


Andr´e (sorry, mir fehlt ne geeignete locale oder so ;):

>Welche Baustein willst du mit deinem AVR910 programmieren? Ich habe
den
>gleichen Programmer von besagter Firma und musste feststellen, dass
das
>mit dem Mega8 und Mega16 wunderbar funktioniert, nicht aber mit dem
>Tiny2313 und ich kann mir nicht erklären wieso...

Das Ziel ist ein Mega8, der den Verpolungszwischenfall überlebt hat und
mittlerweile munter die Daten meines SNES-gamepads in USB übersetzt,
abgesehen von ein paar Fehlern, die wohl daher rühren, dass ich keinen
12MHz-Quarz mehr hatte, sondern nur noch einen Resonator.

Mit welchem Programm hast du programmiert und welche Software-Version
hat dein Brenner? Hast du die Notizen auf Klaus' Webseite zum Tiny2313
gelesen?

>4) Bei AVRProg statt ATTiny2313 den ATTiny26 einstellen. Für Flash
>write und AVRProg getestet.
>5) Mit Modifikation in avrdude.conf für avrdude zu verwenden.

von André (Gast)


Lesenswert?

Hallo Jens,

ich brenne eigentlich mit PonyProg2000, damit ließ sich der Mega8 auch
schon einmal brennen.
Aber ich habe gerade mal AVRProg verwendet und siehe da, es klappt ganz
hervorragend, so wie du es beschrieben hast.
Besten Dank für diesen sachdienlichen Tip von dir. Da ist jetzt jemand
überglücklich ;)

Gruß, André

von Klaus L. (kllei)


Lesenswert?

Hallo Jens,

die 3.9er Version ist auch von mir, und der Unterschied ist nur das
Umstellen der baudrate per Terminal.
Es muß dann aber entweder 19200 oder 115200 sein.

Wenn Du Pin 11 (PD6) des Tiny2313 auf Masse legst, sollten fest 19200
Baud eingestellt sein.

Wenn es dann nicht geht, brücke mal Rx und Tx am Chip und schau ob
wenigstens das Kabel und die Pegelwandlerstufe OK sind (echo).

@Andre: ob der ATTiny2313 Unterstützt wird, hängt vom Programm ab, mit
dem Du den AVR910 ansprichst. AVRProg kann den Tiny2313 leider nicht.
Der AVR910 kann ihn aber schon, z.B. zusammen mit avrdude.

Viel Erfolg,
Klaus

von Jens P. (jmoney)


Lesenswert?

Hi Klaus!

Ich bin litt gestern unter spontaner Lustlosigkeit, am avr910 weiter zu 
machen, sorry.
Pin11 auf Masse macht den Unterschied. Es kommt zwar kein Menü am 
Terminal (warum auch) aber jetzt kann ich mit yy und xx die LEDs 
umschalten und uisp findet auch brav den Mega8 in der Zielschaltung.
Vorher hab ich noch wie beschrieben Rx und Tx gebrückt (ohne Pin11 auf 
Masse).
115200 baud: "k" kam zurück, fast alle anderen Buchstaben provozierten 
den Tiny wohl zu einer Antwort, die dann durch die Brücke unendlich 
wiederholt wurde.
19200 baud: alle Tasten, die ich probiert habe provozierten o.g. 
Unendlich-Schleife.
9600 baud: Für jeden Buchstaben kam was zurück, was allerdings dem 
ursprünglichen Buchstaben nicht mehr sehr ähnlich sah, zb für "k" mal 
"e", mal "i" oder aber auch "k"

Dann hab ich wie gesagt Pin11 auf Masse gelegt. Komische Zeichen aber 
eben auch bei yy und xx das erwartete Wechseln der LEDs. Also vom Kabel 
ab und ran an die Linux-Box und siehe da es funktioniert soweit 
einwandfrei. Danke vielmals für den Tip!

Mein Fazit wäre jetzt, dass das Kabel wohl nen Knacks hat aber 
unabhängig davon auch der Tiny nicht ging, weil ich es ja auch ohne 
Kabel mit allen Baudraten durchexerziert hatte.
Jetzt interessiert mich natürlich, wie dieser Fehler provoziert sein 
könnte. Kann das Eeprom bei ungünstigen Spannungseinbrüchen oder etwa 
durch die Verpolung der Versorgungsspannung korrumpiert worden sein und 
deshalb ein unsinniger Wert für die Baudrateneinstellung drin gestanden 
haben?

von Klaus L. (kllei)


Lesenswert?

Hallo Jens,

ich denke Deine Vermutung mit dem korrupten eprom wird stimmen.
(Du kannst das eeprom es ja mal mit Ponyprog auslesen, entscheidend ist 
die eeprom Adresse 1 dort muß entweder 3 oder 23 (dez) drinstehen. Wenn 
es einanderer Wert ist, stimmt was nicht.

Wenn Du mit Pin 11 gegen Masse mal den Befehl -0 eingibst, müsste wieder 
115200 Baud geschrieben werden. (mit -1 gehts wieder auf 19200)

Viel Erfolg,
Klaus

von Jens P. (jmoney)


Lesenswert?

Hallo Klaus,

na dann lass ich dich mal mit dem Eeprom nicht zappeln.

$ uisp -dprog=stk200 --download --segment=eeprom
Atmel AVR ATtiny2313 is found.
Downloading: eeprom
S0090000656570726F6D6E
S1130000FF09FFFFFFFFFFFFFFFFFFFFEFFFFFFF02
S1130010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
S1130020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
S1130030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
S1130040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
S1130050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
S1130060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
S1130070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
S5030008F4
S9030000FC

Das ist der erste Versuch, also seit dem Zwischenfall noch nichts 
geändert. Auf Adresse 1d steht also 09h, welches ungültig ist. Außerdem 
steht auf 13d EFh

Mit Pin11 auf Masse sagte er dann bei 19200 Baud zunächst "fixed by 
Jumper". Wenn man ihn mit Jumper startet und den im Betrieb entfernt, 
lässt er sich einwandfrei einstellen. Also hab ich ihn per -0 auf 115200 
Baud gestellt.

Danach Ist das Eeprom schön auf FFh. Allerdings steht auch an Adresse 1d 
FFh.

Also nochmal an die Serielle, diesmal natürlich mit 115200 Baud -> geht.

Wieder zurück gestellt auf 19200 und wieder auslesen:
Jetzt steht in Adresse 1d 17h=23d

Spaßeshalber wieder auf 115200 umgestellt und alles ist wieder FFh.

Also:
 - Das Programm stellt Adresse 1d nicht auf 3d, sondern auf 255d für 
115200 Baud.
 - Mein Eeprom war an 2 Stellen verstellt, warum auch immer. Es ist aber 
immer noch beschreibbar.
 - Das Programm hat keinen Sicherheits-Check, ob der Inhalt von 1d auch 
Sinn macht ;)

Ich nehme mal schwer an, dass nicht das Programm diese beiden 
veränderten Bytes ins Eeprom geschrieben hat. AVRs scheinen da teilweise 
sensibler als zB PICs zu sein. Hab zwar nicht sehr lang mit PICs 
gearbeitet aber da hab ich sowas nie gehört, bei AVRs hört man sowas 
öfter..
(Bitte keine "Welcher µC ist besser"-Diskussion)

von TravelRec. (Gast)


Lesenswert?

Blödsinn mit (häufig) zufällig veränderten Bytes im EEPROM bei AVRs! Das 
größte Problem an der Technik liegt meist zwischen den Ohren des 
Anwenders ;-) Anstelle des Threaderöffners wäre ich längst beim 
nächstgünstigsten Internetshop vorbeigeschlendert und hätte mir den 
Original AVR-ISP nebst funktionierender Software besorgt, anstatt mir 
Tage und Nächte mit Möchtegernprogrammiergeräten um die Ohren zu hauen, 
die doch nicht gehen.

von Jens P. (jmoney)


Lesenswert?

TravelRec. wrote:
> Blödsinn mit (häufig) zufällig veränderten Bytes im EEPROM bei AVRs! Das
> größte Problem an der Technik liegt meist zwischen den Ohren des
> Anwenders ;-) Anstelle des Threaderöffners wäre ich längst beim
> nächstgünstigsten Internetshop vorbeigeschlendert und hätte mir den
> Original AVR-ISP nebst funktionierender Software besorgt, anstatt mir
> Tage und Nächte mit Möchtegernprogrammiergeräten um die Ohren zu hauen,
> die doch nicht gehen.

Klar hätt ich zum nächsten Laden gehen können, der nen AVR-ISP hat. Das 
wäre in meinem Fall Conrad in Saarbrücken, 20km entfernt und mit 
schlechten Parkmöglichkeiten. Die haben allerdings auch nur wahlweise 
STK500 für 115 Euro oder JTAG ICE für 450 Euro. Also 
Internetbestellung..
Da gibt's natürlich den AVR-ISP. Der kostet allerdings im Original 40 
Euro plus Versand. Den avr910, der auch quasi-offiziell von Atmel 
unterstützt wird (schließlich kommt die AN von denen), kostet mich nur 
die Hälfte und funktioniert im Normalfall genauso gut. Ich bin Student 
und habe die Kohle im Moment so gar nicht dicke, da nehm ich mir doch 
raus, selbst zu entscheiden, wie viel ich für nen AVR-Brenner ausgebe.

Dem Problem zwischen den Ohren des Anwenders stimm ich voll und ganz zu. 
Wahrscheinlich hätte es diesen thread nie gegeben, wenn ich nicht zu 
doof gewesen wäre, nen mega8 richtig an den avr910 anzuklemmen.
Dass sich bei AVRs im normalen Betrieb öfter mal was verstellt hab ich 
auch nicht gesagt, nur dass sie empfindlicher auf Fehlbedienung 
reagieren als andere Controller, mit denen ich in die Welt der 
Mikrocontroller eingestiegen bin (also wohl eher mehr Fehler gemacht 
habe als jetzt).

Auch dem zweiten Teil des letzten Satzes stimm ich zu. Ich hatte vorher 
wie gesagt nur einen STK200 und damit kann man sich wirklich manche 
Nacht um die Ohren hauen.

Funktionierende Programme gibt es allerdings für den avr910 genug, von 
avrdude über uisp bis hin zu AVR Prog (AVR Studio) ist da denk ich für 
jeden Geschmack etwas dabei..

von Klaus L. (kllei)


Lesenswert?

Hallo Jens,

freut mich, dass es jetzt klappt. In der tat prüft das Programm auf 
Inhalt 0xFF -> default Baudrate, oder übernimmt den Inhalt des eeProms. 
Dies um auch andere Baudraten einfach zu ermöglichen. Im eeprom soll der 
N Wert der seriellen Schnisttstelle stehen. Wenn der Inhalt nicht 
stimmt, hilft der Pin 11 weiter...

Ich vermute mal, das der BOD (brown out detection) Level nicht aktiviert 
ist. Dann kann ein falscher eeprom Eintrag passieren (laut Atmel App 
Note). Ich werde das mal an die Verkäufer weitergeben.

Viele Grüße,
Klaus


von Holger K. (krulli) Benutzerseite


Lesenswert?

Klaus Leidinger wrote:
> die 3.9er Version ist auch von mir, und der Unterschied ist nur das
> Umstellen der baudrate per Terminal.
> Es muß dann aber entweder 19200 oder 115200 sein.

Hallo Klaus,
ist es möglich, dass ich die V3.9 bekommen kann?

Gruß
Holger

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.