Hallo zusammen,
ich habe eine Schaltung entwickelt nach Vorbild des
http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=dv164139-2
Entwicklungsboards . Leider kriege ich jedoch mein Testprogramm per
MPLABX IDE über das PICKIT 3 nicht Programmiert.
Es taucht folgende Fehlermeldung auf "Target Device ID (0x0) does not
match expected Device ID (0x3024)." Ich habe das ganze mit externen
Spannungsversorgung von 3,3V versucht und mit Versorgung direkt über das
PICKIT 3, beides mit dem selben Ergebnis.
Der Controller ist Brandneu und wurde nie zuvor programmiert. Daher
schließe ich einen Fehler aufgrund von Programmierung aus. Desweiteren
habe ich mehrere dieser Boards herstellen lassen, alle weisen den selben
Fehler auf. Die Pinbelegung der Programmierschnittselle habe ich
ebenfalls mit dem Durchgangsprüfer getestet.
So sieht meine confg.h header File aus für die Konfigurationsbits aus
1
// PIC16LF1454 Configuration Bit Settings
2
3
// 'C' source line config statements
4
5
#include<xc.h>
6
7
// #pragma config statements should precede project file includes.
8
// Use project enums instead of #define for ON and OFF.
9
10
// CONFIG1
11
#pragma config FOSC = INTOSC // Oscillator Selection Bits (INTOSC oscillator: I/O function on CLKIN pin)
Wie Schalter schon geschrieben hat gehen die Kontakte noch an die USB
Buchse. Ansonsten sind die beiden Leitungen mit nichts verbunden. Bisher
habe ich nicht versucht den anderen Port zu benutzen da in allen
Anleitungen sowie dem Entwicklungsboard die Pins 12+13 Genutzt werden.
Dank der SMD Bauform ist das umändern der Schaltung auch nicht ganz
einfach. Evtl könnte ich mit Fädeldraht was machen.
Der zweite Port wird aktuell für die Verbindung zu einem RFM12B und
einem Wiznet W5500 genutzt.
Schalter schrieb:> Nico .. schrieb:>> Gehen die ICSP-Leitungen noch irgendwo ran?>> Das sieht man doch. An die USB-Buchse.
Ich meine ob die Signale noch irgendwo hin gehen!?
Es gibt im Schaltplan ja auch noch SPI-Signale die nirgendwo hinführen.
Ich denke das ist nicht der komplette Schaltplan!
Schalter schrieb:> Interessant wäre noch zu wissen, ob an der USB-Buchse beim Programmieren> etwas dranhängt.
Stimmt, in dem Fall könnte es Probleme geben. Auch gut möglich: ICSPCLK
und ICSPDAT vertauscht.
Übrigens wird auf dem von dir erwähnten Entwicklungsboard für den PIC16
RC0+RC1 als ICSP genutzt, nicht RA0+RA1!
Trotzdem sollten laut Datenblatt aber beide Ports funktionieren.
Über die ICSP Leitungen am USB Port kannst den Chip nur im LV Modus
programmieren. Ich hoffe das kann man beim PIKKIT 3 irgendwie
einstellen.
Wenn du im HighVoltage Modus programmieren willst musst du die anderen
ICSP Leitungen (Pin 9 + 10) benutzen. Nur im HV Modus kannst zum
Beispiel den MCLR Pin als IO-Port programmieren.
Andy
Nico .. schrieb:> Trotzdem sollten laut Datenblatt aber beide Ports funktionieren.
Ja, aber Andi hat auch recht: Im Datenblatt steht auf Seite 127 unten,
dass RA0 und RA1 "LVP only" sind. Bei diesem PIC hier wird der LVP-Modus
durch einen 32-Bit-Key über ICSPDAT eingeschaltet, nicht über einen
LVP-Pin. Das User's Guide des PICkit3 schweigt sich aber leider darüber
aus, ob diese Methode unterstützt wird :-(
Danke für die zahlreichen Antworten.
Die beiden Kontakte die ich für die ICSP programmierung benutze, gehen
nur auf auf die Schnittstelle fürs PICkit3 und auf die Anschlüsse der
USB Buchse.
Die andere Schnittstelle ist wie schon erwähnt für SPI verwendet. Dort
ist das RFM12B angeschlossen sowie der W5500 Ethernet Controller.
Ich habe auf folgende Weisen probiert das Board zu programmieren:
- Spannungsversorgung (3,3V) per PICkit 3
- Spannungsversorgung per MicroUSB Netzteil
- Spannungsversorgung per MicroUSB Netzteil und per PICkit 3
Keine Methode hat funktioniert, alle haben das selbe Fehlerbild
aufgezeigt. Die Spannung aus dem Regler habe ich überprüft, sie ist wie
gewünscht 3,3V.
Aktuell stehe ich echt kurz davor die zweite SPI schnittstelle einfach
mit nem Dremel aufzutrennen, evtl. sogar dort mit Fädeldraht oder
ähnlichem den Kontakt aufzubauen für das PICkit um die schnittstelle zum
programmieren zu testen
Ja hab ich. Selbst wenn ich den falschen ausgewählt hätte, würde er ja
zumindest eine andere Target Device ID im Return anstatt 0x0 anzeigen.
"Target Device ID (0x0) does not
match expected Device ID (0x3024)."
Die Versorgung über ein Micro-USB-Netzteil könnte problematisch sein, da
diese meist zu Laden von Smartphones gedacht sind und dabei die
Datenleitungen gebrückt oder mit diversen Spannungsteilern belegt sind!
Das würde Probleme machen für die Takt- und Datenleitung der
ICSP-Schnittstelle.
Aber wenn Du schon mit externen 3,3V eingespeist hast, dann liegt das
Problem noch woanders!
Zeig doch mal dein Layout oder ein Foto vom Aufbau, vielleicht fällt uns
dann noch was ein!
Martin schrieb:> Ja hab ich. Selbst wenn ich den falschen ausgewählt hätte, würde er ja> zumindest eine andere Target Device ID im Return anstatt 0x0 anzeigen.>> "Target Device ID (0x0) does not> match expected Device ID (0x3024)."
Du hast Doch schon die Info bekommen, dass Du über die USB-Pins NUR per
LVP programmieren kannst. Default ist HVP. Heißt also: Gehe in den
Einstellungen auf PICKIT3, dann rechts auf "Program Options", und da
gibts einen Punkt "Enable Low Voltage Programming" Da musst Du dann Dein
Kreuz setzen, und dann sollte es funktionieren, wenn es daran lag.
fchk
Wahnsinn,
wie ich solche trivialen Fehler hasse. Vielen Dank für das Feedback das
Problem ist damit gelöst. Jetzt muss ich mich dran begeben den Rest
meiner Platine durchzutesten. Ein Programmierbarer Controller heißt noch
nicht, dass er auch funktionieren wird.
Ich halte euch auf dem laufenden.
Vielen Dank an alle