PIC16F884 geht, PIC16F877A nicht.

Begonnen von misax, 11.11.2022, 18:31:42 CET

⏪ vorheriges - nächstes ⏩

misax

hallo;
Ich habe einen Programmier-Aufbau mit PICKIT3 für 884 und 877A. Der 884
funktioniert. Beim 877A bekomme ich die Fehlermeldung:
Address: 0 Expected Value: 120a Received Value: 3fff
Failed to program device
kann sich jemand erinnern in seinen ersten PIC-Tagen diesen Fehler auch
mal gehabt zu haben und weiß wie man ihn behebt ?
kann es mit dem Oszillator zusammenhängen : Ich habe 4MHz, 10MHz und
16MHz ausprobiert; immer das gleiche.
mal eine Verständnisfrage: Muss ich dem PIC nicht VOR der Programmierung
mitteilen welchen Oszillator ich drangemacht habe ? Zumindest den Typ
des Oszillators ? Also ob HS, XT, LP oder EXTRC ? Im Programm setze ich
FOSC auf HS, aber muss ich das nicht einen Schritt vorher machen damit
ich das Programm überhaupt laden kann ? Und falls ja, wie mache ich das
?
danke schonmal vorab für hilfreiche Antworten.

vloki

Für's reine Programmieren von PICs braucht es keinen funktionierenden Oszillator.
Beim Debuggen dann schon. Da muss das Ding laufen.
BTW: Wie soll dem PIC vor der Programmierung irgendwas "mitgeteilt" werden?


Wird der 877A überhaupt gefunden?
Poste doch mal die gesamte Ausgabe der IDE und die Schaltung dazu.


MPLABX  XC8  KiCAD

picass

#2
Deine Frage nach der zeitlichen/programmiertechnischen Berücksichtigung des Oszillators kann ich nicht recht nach vollziehen. Wenn du ein Programm geschrieben hast - Länge egal - , das du anschließend in den µC gebrannt hast: legst den dann weg und kümmerst dich nicht mehr drum? Dann gibt es keine dräuende Notwendigkeit, sich der O-Frage zu widmen - es sei denn, dass sich bereits das Brennprogramm/der Debugger beschwert.

Wenn du aber nach dem Brennen irgendwas mit dem µC veranstalten willst, der also irgend 'ne sinnvolle Funktion ausüben soll - wie z.B. das "hello world", dann willst du den doch arbeiten sehen. Und möglichst so, wie du es dir vom Programm her erhoffst! Also muss der Bursche dann auch wissen, welchen Oszillator er hat und wie schnell denn nun.....Das stellst du natürlich gleich in den Anfang deines Programmes.

Noch'n kleiner Tipp - als Wiederholung - zur Frequenz. Es mag sich bei µC-Usern "eingebürgert" haben, so'n Micro-Controller immer mit der technisch möglichen Höchst-Frequenz zu betreiben. Aber welcher Autofahrer steht mit seinem Benziner an der roten Ampel und lässt die Karre mit knapp 7.000 U/m röhren?! Die Programme, welche du als Anfänger bearbeitest, benötigen natürlich keine Grenzwerterfahrung im Frequenzbereich. Du kannst und darfst den µC gerne auch mit z.B. 100 kHz laufen lassen. Ganz sicher wirst du keinen Unterschied feststellen - außer, dass bei Zeitschleifen der Wert anzupassen ist.


Du sprachst von einem "Programmier-Aufbau"! Na gut, es gibt bei dir den PicKit3-Programmer. Aber in welcher Hardware sitzt denn nun der PIC?
Grüße, picass

misax

also das ist mein Aufbau.

Ich tausche ledoglich den Chip aus (und natürlich das Projekt in der IDE). Denn 884 kann ich programmieren und der 877A bringt:
The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x7ff
configuration memory
program memory
Address: 0 Expected Value: 120a Received Value: 3fff
Failed to program device

picass

#4
Das sehe ich doch einen externen Quarz?!
Au man, und das mit einer Brettboard-Schaltung und dann noch im GigaHerz-Bereich.
Tue dir und deinem PIC den Gefallen und greife meine Anregung auf: erstens keine externe Frequenz - das ist eine Störquelle höchster Potenz - und zweitens eine niedrige (interne) Frequenz. Du willst doch- so meine Vermutung - diverse Programme entwickeln? Oder ist es deine Absicht, Experimente mit externen Oszillatoren zu veranstalten? Wenn es um die Programme geht, dann reichen 100 kHz immer noch zu einer atemberaubenden Programm-Abarbeitung.

Die Verlegung der Leitungen sieht sehr sauber aus. Aber loben kann ich dich deswegen nicht. Für den Umgang mit µCs gelten andere Bedingungen, z.B. Leitungen so kurz wie möglich, keine evtuellen Kapazitäten ins Spiel bringen, fette Versorgungs-Leitungen - also für Plus und Minus - und - ach ja - eine niederohmige Spannungsquelle, die ebenfalls mit möglichst kurzen Leitungen am PIC angeschlossen ist. Ist meine Meinung: Lass vom Brettboard ab und nimm was Stabiles. Schau mal in den anderen, neuen Fred, den ich für ein anderes, dich interessierendes Prob eingestellt hatte.

Wenn ich die Fehlermeldung richtig interpretiere, dann schlägt bereits das erste Byte der Datenübertragung fehl. Da ist also Etliches im Busch.
Grüße, picass

pic18

Was für eine Eingangsspannung hast Du angelegt? (oder am Pickit programmiert falls möglich?)
Der 16F887 arbeitet mit 2-5,5V
Der 16F877A arbeitet mit 4-5,5V
Evtl. muß noch ein Pullup Widerstand an Pin1 (VPP) und Versorgungsspannung (VDD). Bin mir da aber nicht so sicher.

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau