Autor |
Programmieradapter |
|
|
|
|
BID = 418658
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
|
Hallo
Ich möchte einen Programmieradapter bauen. Dazu verwende ich PonyProg 2.06 und diesen Schaltplan, den ich leicht abgeändert habe:
http://www.lancos.com/e2p/avrisp-siprog.gif
Der Controller wird allerdings nicht über die ISP Schnittstelle angesprochen sondern sitzt direkt auf der gleichen Platine (via Sockel). Den Kondensator habe ich eingespart, da für die Stromversorgung sowieso ein 7805 mit einem 10µF ELKO zur Verfügung steht. Da mir die Funktion der Diode vollkommen schleierhaft ist habe ich diese vorläufig auch weggelassen. Quarz und Reset-pullup sind auch dran, weiß allerdings nicht ob ich die wirklich brauche?
Das Interface Setup und die Kalibrierung verlaufen noch erfolgreich. Wenn ich versuche zu schreiben wandert zwar der Balken, allerdings kommt die Meldung: 'Write failed'
Wenn ich versuche zu lesen kommen jedesmal andere Daten.
Was mache ich falsch? Ist mein Programmieradapter richtig aufgebaut?
Vielen Dank für alle Beiträge.
PS: anstelle des parallelen Kabels verwende ich ein Druckerkabel, müsste aber egal sein oder?
[ Diese Nachricht wurde geändert von: ffeichtinger am 31 Mär 2007 20:25 ] |
|
BID = 418669
Jornbyte Moderator
Beiträge: 7178
|
|
Wird der 74HC244 warm?
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten. |
|
BID = 418749
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Zitat :
| Wird der 74HC244 warm?
|
Nein, nicht spürbar. Auch der 7805 kaum, was bedeutet, dass sich die Stromaufnahme in Grenzen hält.
Ich hab die ganze Verdrahtung nochmal kontrolliert, aber das passt alles.
Ich habe inzwischen das Gefühl, den falschen Schaltplan nachgebaut zu haben, bei dem aktuellen steht dabei, dass er noch an SI-Prog angeschlossen werden muss, während der andere offenbar zum direkten Anschluss geeignet ist, siehe:
http://www.lancos.com/prog.html
Da sind dann noch Filter auf allen drei Datenleitungen angebracht, und Pullup-Widerstände an GA und GB.
Kann das den Ausschlag geben?
_________________
|
BID = 418765
Dombrowski Stammposter
Beiträge: 450
|
Moin.
Nimm erstmal ein einfaches Programm, das Bits am Parport setzt und löscht und liest. Check also den Adapter statisch durch. Nimm den µC aus der Fassung, damit die Testsignale keinen Unfug veranstalten.
Der Kondensator direkt an VCC und GND sollte drinbleiben. Die Pullups bewirken u.a., dass der HC244 sicher auf Hi-Z schaltet, wenn der Rechner nicht angeschlossen ist. Gerade wenn du die Adapterschaltung fest auf der fertigen Platine betreibst und nicht ständig Verbindung zum Rechner besteht, sollten alle Eingänge Pullups bekommen.
Was ist IYHO der Unterschied zw. einem parallelen Kabel und einem Druckerkabel?
D.
|
BID = 418841
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Zitat :
| Nimm erstmal ein einfaches Programm, das Bits am Parport setzt und löscht und liest. Check also den Adapter statisch durch. Nimm den µC aus der Fassung, damit die Testsignale keinen Unfug veranstalten. |
Da muss ich mich erst noch schlau machen, ich hab zwar schon Zugriff auf die COM Schnittstelle via Windows API, aber beim LPT kenn ich mich noch nicht aus. Wie machst du das?
Zitat :
| Gerade wenn du die Adapterschaltung fest auf der fertigen Platine betreibst und nicht ständig Verbindung zum Rechner besteht, sollten alle Eingänge Pullups bekommen.
|
Die Platine dient ausschließlich zum aufspielen des Bootloaders, und wird danach nicht mehr benötigt, sie wird also immer erst mit dem LPT und dann mit der Stromversorgung verbunden, da besteht also keine Gefahr.
Zitat :
| Was ist IYHO der Unterschied zw. einem parallelen Kabel und einem Druckerkabel? |
Der Unterschied beschränkt sich auf den Stecker auf Druckerseite. Dieser hat 36 Pin's statt 25, außerdem sind einige Pin's anders angeordnet, weshalb ich das erst mal durchmessen musste. Die passende Buchse konnte ich aus einem alten Drucker auslöten.
Wenn ich versuche zu schreiben läuft der Schreibvorgang vollständig ab, wenn ich aber den Controller herausnehme, kann PonyProg den Braten riechen und wirft sofort eine Meldung aus, bevor es zu schreiben beginnt. Es gelangen also Signale zum Controller, und Signale vom Controller zum PC, nur eben irgendwie die falschen.
Könnte das an den Filtern liegen?
_________________
|
BID = 418857
Dombrowski Stammposter
Beiträge: 450
|
Moin.
Zitat :
| Da muss ich mich erst noch schlau machen, ich hab zwar schon Zugriff auf die COM Schnittstelle via Windows API, aber beim LPT kenn ich mich noch nicht aus. Wie machst du das? |
Unter Linux mit ppdev und /dev/parportX. Unter DOS Direktzugriff auf 378h etc. Mit Windows habe ich nichts am Hut. Für Linux habe ich mir z.B. das unten im Bild gemacht.
Zitat :
| Der Unterschied beschränkt sich auf den Stecker auf Druckerseite. Dieser hat 36 Pin's statt 25, außerdem sind einige Pin's anders angeordnet, weshalb ich das erst mal durchmessen musste. Die passende Buchse konnte ich aus einem alten Drucker auslöten. |
Ahso, ja. Centronics statt Sub-D. Nee, das macht keinen Unterschied; die hier benutzten Pinnummern stimmen ja mit ihrer Funktion überein.
Zitat :
| Könnte das an den Filtern liegen? |
An den fehlenden Filtern? Hmm..jooa..eventuell. Oder irgendeine Masse vergessen?
Oder noch EPP od. ECP für den Parallel-Port eingestellt? Für elektronische Geräte, wie Brenner, Relaiskarten und ähnliches, soll es immer SPP sein. ECP geht u.U., wenn vor dem Start des betreffenden PC-Programms im Extended Control Register Mode 000b od. 001b eingestellt wird.
Nochmal zur Diode: Das hat C.Lanconelli leider nicht konsequent dargestellt. Die SI-Prog Prozessormodule erwarten, dass der Basisadapter die Betriebsspannung liefert. Der normale Basisadapter für den seriellen PC-Port macht das ja auch. Beim Adapter für den Parallel-Port hier wird jetzt wegen der eingezeichneten Diode so getan, als ob die Versorgung von den Modulen kommt. Und das passt eben nicht zusammen. Also genau genommen müsste auf avrisp-siprog.gif ein Netzteilanschluss/Spannungsregler hinzukommen - womit die Diode an dieser Stelle wegfallen kann.
D.
[ Diese Nachricht wurde geändert von: Dombrowski am 1 Apr 2007 17:50 ]
|
BID = 419041
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Zitat :
ffeichtinger hat am 1 Apr 2007 16:44 geschrieben :
|
Da muss ich mich erst noch schlau machen, ich hab zwar schon Zugriff auf die COM Schnittstelle via Windows API, aber beim LPT kenn ich mich noch nicht aus. Wie machst du das?
|
Da wird ein spezieller Treiber benötigt, ist z.B. beim SP12 Paket dabei...
Einfach mal googln nach "SP12" + "Programmieradapter"
|
BID = 419324
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Hallo
Ich hab jetzt meinen Adapter mit dem Tool: http://neil.fraser.name/software/lpt/lpt.exe
durchgemessen. Wenn die Eingänge GA und GB auf low sind werden alle Signale so wie sie sollen übersetzt. Nur wenn die besagten Pin's auf high sind scheinen die Ausgänge mehr oder weniger verrückt zu spielen. Nur werden diese Pin's von PonyProg eh' immer auf low gesetzt, wenn ich mich nicht irre? Oder ist das der Fehler?
Zitat :
| Für elektronische Geräte, wie Brenner, Relaiskarten und ähnliches, soll es immer SPP sein. |
Wie stellt man das ein?
_________________
|
BID = 419330
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Zitat :
| Wie stellt man das ein? |
Blöde Frage. Im Bios natürlich.
Bei mir steht da 'Standard' drin. Ist damit SPP gemeint?
_________________
|
BID = 419418
Dombrowski Stammposter
Beiträge: 450
|
Moin.
Zitat :
| Bei mir steht da 'Standard' drin. Ist damit SPP gemeint? |
Bestimmt. Wenn die anderen Einstellungen "EPP, ECP,.." heißen, ist es klar.
Wenn die Enable-Eingängen vom 244 auf Hi liegen, sind die Treiberausgänge hochohmig. Falls dann keine Pullups od. Pulldowns wirksam sind, können die Leitungen natürlich irgendein undefiniertes Potenzial einnehmen. Stimmen mit Lo an Enable die Logikpegel hinten, ist das schon in Ordnung so. Ponyprog schaltet die Enables zurück auf Hi, wenn der Zugriff abgeschlossen ist.
Zur Sicherheit auch die eine Leitung testen, die zum PC hin geht.
D.
|
BID = 419477
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Zitat :
| Zur Sicherheit auch die eine Leitung testen, die zum PC hin geht. |
Hab ich schon alles überprüft, die einzige Leitung die zum PC führt ist MISO. Wenn ich den entsprechenden PIN am Controllersockel auf Masse ziehe, kann ich beobachten wie das 'Häckchen' bei PIN 10 (Acknowledge) verschwindet bzw wieder auftaucht, bei den ausgehenden PIN's kann ich 5 bzw 0V messen wenn das entsprechende 'Häckchen' gesetzt ist.
Von der Logik der Schaltung müsste also alles passen, wo kann der Fehler sonst liegen?
_________________
|
BID = 419499
Dombrowski Stammposter
Beiträge: 450
|
Moin.
Also beim Auslesen von Signatur und Fuses kommen falsch-unsinnige und ständig wechselnde Daten? Mhm. Schlechte Delays/Clocks innerhalb Ponyprog eingestellt? Vielleicht mal die INI-Datei od. wie d. u. Windows heißt löschen und Ponyprog sich neu initialisieren lassen. Oder ein anderes Programmier-Tool probieren (nur zum Auslesen zunächst).
Der AVR ist noch im Urzustand und erzeugt sich einen ordentlichen Takt selber?
Auf dem PC Störungen durch Power-Management oder andere Programme, die heftig CPU-Zeit beanspruchen?
Ich glaub, mehr weiß ich dann auch nicht mehr.
D.
|
BID = 419626
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Hallo
Mein Problem hat sich nun etwas verändert: Sobald ich WriteAll ausführe erscheint sofort die Meldung 'unknown device usw' ich hab mir daraufhin den Vorgang mal mit meinem frisch entdeckten tool angesehen und entdeckt dass PIN 10 also MISO ständig auf high bleibt!!
(Ich stell mir das ganze so vor: zu Beginn wird RST auf low gezogen, daher weis der Controller: jetzt geht's los!. Dann wird über SCK und MOSI eine bestimmte Sequenz ausgegeben, auf die der Controller mit MISO antworten soll. Schafft er das aus irgendeinem Grund nicht so wird er nicht erkannt.)
Ich hab nun die gesamte Schaltung nochmal statisch durchprobiert, alles geht, der 74HC244 geht also noch. Dann hab ich den Controller selbst getauscht, falls der durch die vielen Fehlversuche schon einen Schaden davon getragen haben sollte, gleiches Ergebnis. Auch hab ich das ganze mit einem anderen Computer versucht, da möglicherweise mein LPT schon beschädigt sein könnten, gleiches Ergebnis. Auch hab ich alternative Stromversorgungen ausprobiert, um eventuelle verbleibende Oberwellen ausschließen zu können. Doch auch mit einem 9V Block kommt das gleiche Ergebnis.
Es ist zum Verzweifeln!!!
Um die beschriebenen Filter in den Datenleitungen nachbauen zu können, fehlt es mir an den nötigen Kondensatoren. (Wo soll man so kleine auslöten?) Außerdem halte ich es für unwahrscheinlich, dass darin der Fehler liegt, da meine Datenleitungen nur ca. 3-5cm lang sind. Andere berichten von einem Programmieradapter, der lediglich aus einem ISP-Kabel besteht, dass direkt an die entsprechenden PIN's vom LPT drangelötet wurde (ohne Filter oder anderen Schnick-Schnack)
Die ini Datei von PonyProg habe ich so belassen wie sie war.
Ach, ja: Ist der Quarz am µC erforderlich, oder nicht, oder gar schlecht? Ich glaube im Originalzustand ist ein interner Takt eingestellt, braucht man überhaupt einen Takt zum ISP Programmieren?
_________________
|
BID = 419632
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ja, ohne Taktquelle geht garnix.
Ich habe übrigens den gleichen Adapter, der läuft bei mir hundertprozentig.
Habe zwar ein paar LEDs für Kontrollzwecke eingebaut und den RESET-Ausgang mit einem Open-Collektor versehen, aber sonst ist alles gleich.
Da muss ein Fehler drin sein. Hast du in PonyProg alles richtig eingestellt? Schau mal in die ponyprog2000.ini o.ä. und stelle den Takt etwas runter, so wie Dombrowski das vorgeschalgen hat.
_________________
|
BID = 419657
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Erst mal danke, dass ihr mir immer noch bei steht.
Meine ini Datei sieht jetzt so aus:
PowerUpDelay=200
LanguageCode=Default
SoundEnabled=NO
ClearBufferBeforeLoad=YES
MDAWriteDelay=20
SPIResetPulse=100
SPIDelayAfterReset=50
BigSPIPageWrite=16
ATMegaPageWriteDelay=100
AVRByteWriteDelay=50
AVREraseDelay=100
I2CBusSpeed=NORMAL
SPIBusSpeed=NORMAL
MicroWireBusSpeed=NORMAL
PICBusSpeed=NORMAL
SDEBusSpeed=NORMAL
LogEnabled=NO
VerifyAfterWrite=YES
ClearBufferBeforeRead=NO
AutoDetectPorts=YES
I2CBaseAddress=0xA0
I2CBusPageWrite=16
COMPorts=3F8,2F8
LPTPorts=378
InterfaceType=AvrISP-I/O
PortNumber=1
ResetPolarity=TRUE
ClockPolarity=TRUE
DOutPolarity=TRUE
DInPolarity=TRUE
BogoMipsX1000=236887
DeviceType=ATmega16
DefaultFileType=INTEL-HEX
LastFile=D:\Microcontroler\Bootloader\Bootloader_ATmega16_SOEK\main.hex?ALL
SerialNumberVal=5
Was soll ich da ändern?
_________________
|