PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR-Funk-Evulationsboard von pollin - Problem



thewulf00
22.11.2007, 07:28
Hallo!

Nachdem ich hier einen Thread fand, der dieses Board und die Module RFM01/RFM02 angepriesen hatte, bestellte ich mir diese Dinger kurzerhand.

Dann kamen das 2xBoard und ein paar Module. Ich lötete also ein Board zusammen und gleich 2 Module drauf und teste zuerst die ISP, also ob PonyProg den IC erkennt und auslesen kann, aber keine Chance (Power-LED leuchtet, am Controller liegen 5V an). Hm.
- Dann habe ich angenommen, dass der Board-ISP möglicherweise anders geschalten ist, als der ISP-Stecker vom RN. Durchgemessen (PIN an ISP zum richtigen PIN am IC - ohne eingesteckten IC) und festegestellt: alles ok. Hm.
- Also einen anderen Atmel von einem anderen, selbstgelöteten Board genommen, der dort funktioniert. Und? Nix. Hm.
- Also angenommen, dass die ICs vielleicht nicht richtig takten (sie sind eh noch auf internen Takt), also auf dem anderen Board den Pin zum Togglen programmiert, der auf dem Pollin-Board eingebaut ist. IC umgesteckt, Strom an - LED blinkt wie erwartet. Hm.
- Spannung am ISP gemessen: Alles ok.

Was soll ich jetzt tun? Der ISP-Stecker scheint alle Verbindungen zum richtigen IC-Pin weiterzuleiten und die Spannung stimmt auch (gemessen und die LED leuchtet). Die ICs gehen auf dem einen Board, aber auf dem Pollin-Board nicht. Ich denke, es hat was mit der zusätzlichen Hardware zu tun, die noch auf dem Pollin-Board ist. (da sind 2 verschiedene ISPs dran, mit unterschiedlichen Bauteilen)

Hubert.G
22.11.2007, 09:46
Hast du das serielle ISP probiert, tut sich am Reset etwas wenn du programmieren oder lesen probierst.

thewulf00
22.11.2007, 10:20
Ich nutze die Parallele ISP, d.h. LPT1 am Rechner und ISP-RN-Stecker am Board. PonyProg ist das Programm und dort ist alles richtig eingestellt, denn der SELBE Stecker des SELBEN Kabels funktioniert mit dem SELBEN IC auf meinem anderen (selbstgebauten Board mit RN-ISP-Stecker) wunderbar - er erkennt den IC selbst, und kann ihn lesen und schreiben.

Den Reset hatte ich gestern auch probiert und das Programm, das auf dem IC lief, um die LED zum Blinken zu bringen, lies sich durch den Reset-TASTER auf dem Board unterbrechen (neu starten), d.h. die Blinkerei begann von vorn. Mit einem STRG-T (Reset) im PonyProg änderte sich nichts.
Die Kontaktierung auf dem Board ist aber korrekt. (hab ich mit dem Multimeter, Prüfmodus "Piepen bei Verbindung", durchgemessen)

Hubert.G
22.11.2007, 10:48
Mit dem Reset meinte ich etwas anderes. Wenn du vom PonyProg lesen oder schreiben startest, dann wird der Reset-Pin des Kontroller vom Programmer auf GND gezogen. Ob das passiert meinte ich sollst du überprüfen.
Probier auch mal die serielle Kommunikation mit PonyProg.

thewulf00
22.11.2007, 11:06
Die serielle Kommunikation im PonyProg hab ich damals nicht hinbekommen, seit dem meide ich sie.

Wenn das manuelle Reset im PonyProg nicht geht, geht auch der Programmierreset nicht. Das grenzt das Problem auf das Resetten ein. Aber die Leitung ist korrekt angeschlossen, woran kanns dann liegen? Falscher Widerstand?

Hubert.G
22.11.2007, 11:13
R2 sollte 10k sein, mal nachmessen.

thewulf00
22.11.2007, 11:53
Das werde ich tun. Aber das wird nicht das Problem sein, schätze ich. Was kann noch so ein Problem verursachen?

Hubert.G
22.11.2007, 12:50
Das erste ist das Reset auf GND gezogen wird. Sonst mit einem Oszi auf den LPT schauen ob die Takte auch kommen.

thewulf00
22.11.2007, 15:44
Die Takte kommen ganz sicher, da ich den Stecker einfach auf das andere Board stecke und Reset (STRG+T) und programmieren/auslesen geht.

Aber ich habe keinen Oszi, und ich denke, auf dem Pollin-Board ist ein Bauteil, was den Resetimpuls zerstört.

Hubert.G
22.11.2007, 16:15
Den Resetimpuls kannst du auch mit einem Multimeter messen, der ist lang genug. Probier es mal ohne das ein Kontroller vorhanden ist.
Sonst noch D1. D2 und T1 kontrollieren ob nicht was verkehrt herum drinnen ist.
Die Leitungen MISO, MOSI, SCK und Reset gegen GND und +5V messen ob sich nicht doch ein Kurzschluss versteckt.

thewulf00
23.11.2007, 21:46
Also:
Die drei Datenleitungen sind nicht mit GND oder VCC gekoppelt. Und da ja der Resetimpuls erwiesenermaßen nicht am µC ankommt, fangen wir dort mit der Suche an.

Zum Thema: R2 ist knapp 10k. Zwischen Reset vom Sockel (ohne IC) und VCC liegt der selbe Widerstand an: knapp 10k.

Messungen mit dem Multimeter zeigen bei beiden Boards ähnliches Verhalten. Zwischen Reset und GND knapp 4V Spannung, und bei einem Reset gehts auf meinem Board auf knapp 1V, beim Pollin-Board auf mehr: Zwischen 1V und 2V.

D1 und D2 sind Zenerdioden und liegen richtig herum: Und zwar mit ihrer Masse nicht an der Spannungs-Masse, sondern entgegen. Das Multimeter bestätigt deren Funktion. Die Markierungen auf dem Board sehen auch gut aus, denn auf der positiven Seite der Dioden sind die Masseflächen angeschlossen. Also soweit korrekt.
T1 ist ne Sache für sich. Der ist eingelötet, wie bedruckt. Mit hilfe des Datenblattes lässt sich herausfinden, dass der Emitter auch an Masse angeschlossen ist - korrekt. Der Kollektor geht an die globale Reset-Leitung - korrekt.

thewulf00
23.11.2007, 22:09
So, ich hab den Transistor ausgelötet. Jetzt kommt der Reset-Impuls durch, aber PonyProg bekommt noch immer kein Signal. Hm.

PS: Wichtige Frage: Ich sehe gerade, einige der ISP-Leitungen gehen auch an die Funkmodule. Kann es sein, dass dadurch das Signal zerstört wird, weil diese UND der AVR antworten wollen? Dann könnte man den AVR aber nur ohne eingelötete Module programmieren. :-(
Edit: Die letzte Meldung kann ich selbst ablehnen, da die Spannung der Module über den Optokoppler gesteuert wird, so dass sie im Normalfall keine Spannung bekommen. Ich habe nachgemessen und es liegt keine Spannung an den Modulen an.

thewulf00
23.11.2007, 23:03
So. Lösung:

Ich habe die entsprechenden Kontakte von den Modulen mal abgelötet und siehe da - PonyProg erkennt den Mega32. (Den Tiny allerdings nicht *g*)

Ist es also tatsächlich nicht möglich, die µC mit angelöteten Modulen zu programmieren? Ärgerlich...

Edit: Den Tiny erkennt er jetzt auch. Meine alte Version von PonyProg kannte noch keinen AtTiny2313... Die neue Version kanns und es geht.

Also Lösung insgesamt:
- Neuestes PonyProg
- Transistor auslöten
- Module vom SPI ablöten

Hubert.G
24.11.2007, 09:13
PonyProg Version ist klar.
Der Transistor müsste defekt, falsch oder falsch eingelötet sein, nach der Schaltung dürfte er keinen Einfluss haben.
Das die Funkmodule ohne Spannung die SPI-Schnittstelle blockieren ist eigenartig, aber es ist möglich das sie über die Schutzdioden an den Eingängen, wie beim AVR, so halb versorgt werden.
Ich wollte mir so ein Board und Funkmodule bestellen, jetzt bin ich aber wieder am überlegen.

thewulf00
24.11.2007, 18:35
Also ich denke, der Transistor war nicht schuld, und wenn ich ihn jetzt wieder einlöten würde, würde es immernoch gehen.

Aber das Problem mit den Funkmodulen hab ich ja erst später gefunden.

thewulf00
26.11.2007, 08:20
Neue Frage:
Ich habe gestern erstmals versucht, den MAX232 zu nutzen. Die Übertragung an sich funktioniert und ich habe auch einfach das RN-Wissen Beispiel genutzt.
Die Baudrate habe ich dann eingestellt, aber es kommen falsche Zeichen aufm Rechner an. Das Kabel selbst ist ein Fertigkabel von pollin und der Max232 war ja beim Board inklusive.

Dann habe ich mal die C-Werte verglichen mit dem Board, was ich mir vor einige Zeit mal gelötet hatte, mit dem Ergebnis, dass auf dem Pollin-Board die C-Werte für den Max nicht identisch mit meinen sind und meine Schaltung funktioniert.
Auf dem Pollin sind -glaub ich- 4x 10µF und bei mir 4x 1µF oder umgekehrt.

Kann es daran liegen oder gibt es noch andere Fehlerquellen für eine falsche Zeichenübertragung?

Hubert.G
26.11.2007, 09:24
Was hast du für eine Baudrate genommen, bei 8MHz geht nicht alles. Die Kondensatoren haben nur Einfluss wenn sie zu klein sind, 1µ passt schon. Kabel kann es nicht sein, sonst wird nichts übertragen (Kurzschluss, Adernbruch ausgenommen). Terminaleinstellung 8bit, kein parity, 1 Stopbit, keine Flußkontrolle.

thewulf00
26.11.2007, 12:00
> Kabel kann es nicht sein
Genau das wollte ich damit sagen :-)

> Terminaleinstellung 8bit, kein parity, 1 Stopbit, keine Flußkontrolle.
Korrekt.

> Was hast du für eine Baudrate genommen
38400, wie im Beispiel gegeben.

> bei 8MHz geht nicht alles.
Dann wird es daran liegen. Der µC läuft noch auf 1MHz (int. Oszillator)

Hubert.G
26.11.2007, 12:11
Bei 1MHz gehen nur 2400 oder 4800 Baud, bei 8MHz sollten die 38400 funktionieren.
Also entweder Oszillator oder Baudrate umstellen.

thewulf00
26.11.2007, 12:13
Alles klar - dann wird das die Lösung sein. Ich danke Dir für Deine UNGLAUBLICH schnelle Antwort :-)

Hubert.G
26.11.2007, 12:17
Bin gerade vom Mittagessen gekommen, da ist man voll motiviert und konzentriert O:)

thewulf00
26.11.2007, 12:31
Das kann ich mir vorstellen ;-)

Zum Thema: Ich nehme an, je weniger Baud, desto mehr Zeit benötigt man für das Übertragen JEDES Zeichens?

Hubert.G
26.11.2007, 12:40
Richtig, allerdings steigt auch die Fehleranfälligkeit, speziell mit internem Oszillator. Bis 28k8 sollte es aber keine Probleme geben.

thewulf00
26.11.2007, 12:42
Alles klar, ich danke erneut!

Bleibt nur die Frage, warum mein PonyProg die FuseBits und SecurityBits nur dann ausliest, wenn es Lust hat.

Hubert.G
26.11.2007, 16:25
Mein PonyProg funktioniert sehr gut, über die parallele und serielle Schnittstelle. Ich habe mit aber trotzdem den USB AVR-ISP von www.ullihome.de/index.php/Hauptseite#USB_AVR-ISP nachgebaut um direkt aus dem AVR-Studio programmieren zu können.

thewulf00
27.11.2007, 07:18
Also programmierst Du ALLES in Assembler?

Hubert.G
27.11.2007, 09:32
Nein, ich programmiere alles in C. Das AVR-Studio4 kann beides.