Forum: Mikrocontroller und Digitale Elektronik Pic 18F2550 Problem beim Brennen


von Henning J. (henning1004)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin ein Neuling in Sachen Microcontroller und ähnliches und möchte 
nach Anleitung ein USB-Interface mit dem PIC18F2550 bauen, bis jetzt 
alles auf Low-cost.

Ich hab mir nach angehängtem Schaltplan ein Pic Brenner gebaut, welcher 
über den Serialport mit dem Pc kommuniziert, so weit alles Gut, denn er 
wird erkannt :)

Nun aber das Problem:
Der Pic wird nicht erkannt, welcher wie auf dem Schaltplan zu sehen 
angeschlossen ist.

Ich habe die Programme WinPic und WinPicpgm ausprobiert, beide erkannten 
den Brenner, aber nicht den Pic und spucken beim beschreiben Fehler aus.


Ich bin dankbar für jede Hilfe.



MfG
Henning

von Henning J. (henning1004)


Lesenswert?

Ich hab nen bischen was ausprobiert und herausgefunden, dass sich der 
Pic auslesen lässt und anscheinend auch nicht leer ist. Wenn man sich 
allerdings den Code ansieht, steht überall nur FFFF.

von Frank M. (frank_m35)


Lesenswert?

Füge mal noch ein paar Bypass-Kondensatoren beim PIC hinzu.
Am besten einen 10uF Elektrolyt um die Spannung am PIC zu stabilisieren 
und dann noch ein 0.1uF direkt am Versorgunspin des uC um kurze 
Stromimpulse abzufangen.

Letztendlich wird es wohl am besten sein, wenn du den Kerl der diesen 
'Brenner' entworfen hat kontaktierst und ihn bittest dir dabei zu 
helfen, schließlich wird er wissen wie sein Teil funktioniert und was 
man dabei falsch machen kann.

Oder du kaufst dir einfach einen PIC Kit 3 von Microchip. Kostet nicht 
viel, und du kannst dann auch noch Debuggen und musst dir keine Sorgen 
machen, dass es nicht funktioniert. Schließlich wirst du vermtulich eh 
schon die MPLAB IDE von Microchip und C verwenden, da dort schon fertige 
und umfangreiche USB Bibliotheken verfügbar sind.

von Henning J. (henning1004)


Lesenswert?

Frank M. schrieb:
> Füge mal noch ein paar Bypass-Kondensatoren beim PIC hinzu.
> Am besten einen 10uF Elektrolyt um die Spannung am PIC zu stabilisieren
> und dann noch ein 0.1uF direkt am Versorgunspin des uC um kurze
> Stromimpulse abzufangen.

vielen Dank für die schnelle Antwort.

könntest du das in den Schaltplan einzeichnen, da ich noch nicht so viel 
Ahnung von der Materie habe?

von strom12 (Gast)


Lesenswert?

Als PIC-Anfänger empfehle ich dir auf jedenfall mal http://www.sprut.de 
anzuschauen. Hier werden dir die PIC-Mikrocontroller bestens erklärt mit 
allem drum und dran.

von egal (Gast)


Lesenswert?

Wie ist der Brenner angeschlossen? Direkt am PC (serielle Schnittstelle 
auf Mainboard) oder über einen USB-zu-COM-Adapter? Welches 
Betriebssystem wird verwendet?

Diese sogenannten "Quick&Dirty"-Brenner bereiten massive Probleme, 
gerade auch bei "unechten" Schnittstellen. Ich kann mich meinen 
Vorrednern nur anschließen, kaufe dir einen PICkit3. Der läuft auch 
unter Win7/8 und mit den aktiuellen PICs.

von Frank M. (frank_m35)


Lesenswert?

Henning J. schrieb:
> Frank M. schrieb:
>> Füge mal noch ein paar Bypass-Kondensatoren beim PIC hinzu.
>> Am besten einen 10uF Elektrolyt um die Spannung am PIC zu stabilisieren
>> und dann noch ein 0.1uF direkt am Versorgunspin des uC um kurze
>> Stromimpulse abzufangen.
>
> vielen Dank für die schnelle Antwort.
>
> könntest du das in den Schaltplan einzeichnen, da ich noch nicht so viel
> Ahnung von der Materie habe?

Na da fehlt dann aber einiges an Erfahrung.
Du wirst mit USB überfordert sein, zumindest so ganz ohne Hilfestellung.

Schau dich auf Sprut.de um, auch die Beispielprojekte.

Du kannst dir auch einfach ein Start-Kit von Microchip kaufen. (es gibt 
auch welche speziell um USB zu verstehen). Hat mir zumindest stark 
geholfen.
Ich würde dir auch immer noch raten, ein Pic Kit 3 dir zuzulegen, da du 
dann den uC Debuggen kannst (zumindest mit der Microchip IDE MPLAB, ich 
weiß ja nicht was du verwendest)

Zu den Kondesatoren:
Zwischen Pin 19 und 20, direkt am uC ein 0.1uF Keramikkondensator. 
Parallel dazu (kann auch weiter entfernt platziert werden) ein 1uF-10uF 
(irgendwas so um den Dreh, kann auch etwas größer sein) 
Elektrolyt-Kondensator.

von Henning J. (henning1004)


Lesenswert?

egal schrieb:
> Wie ist der Brenner angeschlossen? Direkt am PC (serielle Schnittstelle
> auf Mainboard) oder über einen USB-zu-COM-Adapter? Welches
> Betriebssystem wird verwendet?
>
> Diese sogenannten "Quick&Dirty"-Brenner bereiten massive Probleme,
> gerade auch bei "unechten" Schnittstellen. Ich kann mich meinen
> Vorrednern nur anschließen, kaufe dir einen PICkit3. Der läuft auch
> unter Win7/8 und mit den aktiuellen PICs.

Ich habe den Brenner an einem alten Win XP rechner mit echtem 
Serial-Anschluss angeschlossen, mit einem 1m Verlängerungskabel (falls 
das eine Rolle spielt).

von Henning J. (henning1004)


Angehängte Dateien:

Lesenswert?

Ich habs mal nachgebaut und Fotos gemacht, da ich ein bisschen Angst um 
meinen PIC hab :) und wollt fragen, ob das so richtig ist und ob ein 
100uF Elktrolyt mit 6,3V geht oder lieber einen mit 10uF, aber dann mit 
50V oder einen mit 22uF und 16V?

Kann es evtl. sein, dass ich den PIC bereits zerstört habe, durch die 
fehlgeschlagenen Programmierungs-Versuche?


Und noch so zur Info, wen es interesiert:
Ich bin jetzt fast 17 Jahre alt und möchte ein bisschen Experimentieren, 
da ich so etwas später vlt. mal beruflich machen möchte.
Es muss für mich möglichst günstig gehen, da ich von meinen Eltern, was 
dies betrifft, nicht wirklich unterstützt werde...

von Henning J. (henning1004)


Lesenswert?

Frank M. schrieb:
> Zu den Kondesatoren:
> Zwischen Pin 19 und 20, direkt am uC ein 0.1uF Keramikkondensator.
> Parallel dazu (kann auch weiter entfernt platziert werden) ein 1uF-10uF
> (irgendwas so um den Dreh, kann auch etwas größer sein)
> Elektrolyt-Kondensator.

Anscheinend bricht die Spannung immer wieder ein, was durch deine Idee 
etwas verbessert wurde, aber immernoch nicht wirklich geht, denn ich 
habe es nun geschaft zu mindest 0000 einzubrennen wo vorher FFFF stand.
Die LED flackert zuerst und geht letztendlich ganz aus.

Noch ne Idee das zu verbessern, dann müsste es geschaft sein ;)

Achja:
Das Projekt an dem ich arbeite:
http://www.sprut.de/electronic/pic/8bit/18f/programm/usbbootloader/usbboot.htm

von Frank M. (frank_m35)


Lesenswert?

Die auf dem Kondensator angegebene Spannung ist die maximal zulässige 
die der Kondensator aushält, 6.3V sind schon etwas kritisch, nimm lieber 
einen der mehr Spannung verträgt.
Nimmst du einen mit einer sehr hohen Kapazität, so läuft der PIC nach 
Ausstecken der Stromversorgung noch 'ewig' nach, also ich würde zum 10uF 
oder 22uF greifen.
Die Platzierung ist richtig.

Ein PIC ist sehr robust und schwer zu zerstören.

Die Programmierleitungen (Pin 27 Clock und 28 Data) sind sehr 
empfindlich was Übersprechen oder Störeinflüsse angeht, versuche sie 
kurz zu halten und nicht zu überkreuzen.
http://sprut.de/electronic/pic/icsp/icsp.htm#kabel
Achte dabei auch auf die Kabelführung auf deiner gelöteten Platine, vor 
allem eben der Clock Leitung.
Stecke auch die Kabel direkt neben den Beinen des PICs, nicht an's 
äußere Ende des Steckbretts und vergewissere dich dass sie guten Kontakt 
geben.

Wie der Programmer funktioniert kann ich dir leider nicht sagen, auch 
nicht was ein Fehler sein kann oder wo Problemstellen vorliegen könnten.


Hast du auch die richtigen Einstellungen in der Programmiersoftware 
vorgenommen, bspw. dass der interene Oszillator verwendet wird.


Schau dir das mal an:
http://sprut.de/electronic/pic/icsp/icsp.htm#2
Ist deine Schaltung so im Internet oder hast du sie für dich angepasst.
Ist die Schaltung für PIC18 ausgelegt oder für andere?

Du versorgst deinen PIC mit was für einer Spannung? 12V? Dann könnte er 
tot sein. Er verträgt nur 5V. Die 12V Programmierspannung liegen nicht 
an VDD an, die wirst du vermutlich seperat über einen Spannungsregler 
bereitstellen müssen.

von Frank M. (frank_m35)


Lesenswert?

Henning J. schrieb:
> Anscheinend bricht die Spannung immer wieder ein, was durch deine Idee
> etwas verbessert wurde, aber immernoch nicht wirklich geht, denn ich
> habe es nun geschaft zu mindest 0000 einzubrennen wo vorher FFFF stand.
> Die LED flackert zuerst und geht letztendlich ganz aus.
>
> Noch ne Idee das zu verbessern, dann müsste es geschaft sein ;)

Dann funktioniert es ja vermutlich. Dann liegt es vermutlich nur an der 
Spannungsversorgung, die du momentan von der Seriellen Schnittstelle 
entnimmst, die vielleicht geschalten ist und 12V liefert, du aber 
konstante 5V benötigst. Eine Vermutung, schau dir vielleicht nochmal den 
Originalplan des Programmers an, falls er anders als deiner ist.

edit:
also wenn ich mich jetzt nicht total täusche, dann ist Pin 5 der RS232 
Schnittstelle Masse, irgendwie kann das nicht funktionieren.

von Henning J. (henning1004)


Lesenswert?

Frank M. schrieb:
> Henning J. schrieb:
>> Anscheinend bricht die Spannung immer wieder ein, was durch deine Idee
>> etwas verbessert wurde, aber immernoch nicht wirklich geht, denn ich
>> habe es nun geschaft zu mindest 0000 einzubrennen wo vorher FFFF stand.
>> Die LED flackert zuerst und geht letztendlich ganz aus.
>>
>> Noch ne Idee das zu verbessern, dann müsste es geschaft sein ;)
>
> Dann funktioniert es ja vermutlich. Dann liegt es vermutlich nur an der
> Spannungsversorgung, die du momentan von der Seriellen Schnittstelle
> entnimmst, die vielleicht geschalten ist und 12V liefert, du aber
> konstante 5V benötigst. Eine Vermutung, schau dir vielleicht nochmal den
> Originalplan des Programmers an, falls er anders als deiner ist.
>
> edit:
> also wenn ich mich jetzt nicht total täusche, dann ist Pin 5 der RS232
> Schnittstelle Masse, irgendwie kann das nicht funktionieren.

Es scheint nun doch nicht mehr zu gehen...
Mit der Masse könntest du Recht haben, es müssten theoretisch an Pin 19 
und 20 Masse anliegen, was überhaupt nicht funktionieren wird.
Praxtisch ist es so: Auf Pin 19 liegt Masse und auf Pin 20 3V (während 
des Lesevorgangs, danach nicht mehr(auf Pin 20 Masse und auf Pin 19 
0,5V!).

Die 12V müssten doch auf Pin 1 (_MCLR) sein, oder?
-> Auf Pin 1 liegen aber nur 9,8V an.

Letztendlich ist die Spannung also nicht hoch genug.

von Frank M. (frank_m35)


Lesenswert?

Damit kannst du versuchen die Funktionsweise nachzuvollziehen, da macht 
es dann auch Sinn, dass VDD auf GND liegt.
http://www.talkingelectronics.com/projects/MultiChipPgmr/MultiChipPgmr-01-Intro.html

Es werden auch die Spannungen angegeben, zum nachmessen. Vielleicht 
findest du den Fehler, ansonsten überleg dir einen echten 
Programmer/Debugger zu kaufen.

von Frank M. (frank_m35)


Lesenswert?


von Henning J. (henning1004)


Lesenswert?

Frank M. schrieb:
> Damit kannst du versuchen die Funktionsweise nachzuvollziehen, da macht
> es dann auch Sinn, dass VDD auf GND liegt.
> 
http://www.talkingelectronics.com/projects/MultiChipPgmr/MultiChipPgmr-01-Intro.html
>
> Es werden auch die Spannungen angegeben, zum nachmessen. Vielleicht
> findest du den Fehler, ansonsten überleg dir einen echten
> Programmer/Debugger zu kaufen.

Gut gemachte Anleitung und Danke für diese Quelle :)

Ich hab nachgemessen, es ist überall die richtige Spannung und mit einem 
Interface-Test von WinPIC konnte ich die LEDs ansteuern, welche Ich an 
der Clock und an der Datenleitung angeklemmt habe. Diese funktionieren 
also.
ABER wenn ich die LED an der Clock anschalte geht die LED an der 5V 
Versorgung für den PIC aus.

Kann ich einfach extern eine Batterie anschließen um die Versorgung zu 
gewährleisten? (Ich weiss, dass der Kondensator diese Schwankungen 
ausgleichen sollte, was aber anscheinend auch nicht richtig geht, 
sondern nur kurz hält, bis dieser leer ist, da er nicht genügend 
nachgeladen wird während des laufenden Programmiervorgang.)

edit:
Ich glaube die Rote LED beim meine Programmer zeigt die 12V (13V) 
Stromversorgung an, die fürs Programmieren benötigt wird. Welche 
ebenfalls erlischt, wenn die Clock LED an ist.

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.