hallo; meine Wenigkeit mal wieder. 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.
Gast
#7249177
Takteinstellungen usw. werden bei den PICs üblicherweise mit den #pragma Anweisungen definiert (in deinem Code). Ganz zu Beginn. Das wird wiederrum compiliert und die entsprechenden Fuses werden gesetzt.
ja ich weiss, aber ich bekomme die Fehlermeldung zwar nicht beim Compilieren, aber beim Hochladen.
Gast
#7249182
Gast
#7249189
Wenn beim hochladen ein Fehler kommt ist das ein Problem zwischen PicKit und Device. Sicher dass du's richtig angeschlossen hast ? Auch nicht irgendwelche Komponenten in den Programmierleitungen ?
Bratmaxxe schrieb: > Siehe dazu auch: > https://www.sprut.de/electronic/pic/c/pic_c/pic_c90_pic_spezifisches.html Das hatten wir schon alles vor ein paar Tagen, mehrfach! ><())°>
ich habe in den configs: #pragma config FOSC = HS Zum Aufbau: wenn ich den PIC16F884 einsetze und ein Programm für diesen compiliere, kann ich es einwandfrei hochladen. Tausche ich ihn gegen den PIC16F877A ein und compiliere ein Programm für diesen, ist das Compilieren fehlerfrei, aber beim Hochladen kommt die Fehlermdlung.
Gast
#7249266
Die Konfiguration wird bei den PICs zusammen mit der Programmierung übermittelt, das läuft völlig anders als bei der Atmels. Der 877a und der 884 sind doch verschiedene µC, allein die Konfigurationen unterscheiden sich essentiell, ich habe mal die entsprechenden Konfigurationsbezeichnungen angehängt 877a:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
. . . 884:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
ja, aber die Fehlermeldung kommt doch schon BEVOR die Programmierung und damit das Setzen der Konfiguration überhaupt erfolgen kann. Anscheinend braucht doch der 877A beim Programmieraufbau was anderes als der 884. Was könnte das sein ?
Gast
#7249280
Michael S. schrieb: > kann es mit dem Oszillator zusammenhängen : Ich habe 4MHz, 10MHz und > 16MHz ausprobiert; immer das gleiche. Das hat auch nichts miteinander zu tun. So ein PIC hat ein Konfigurationswort, so etwa vergleichbar mit den Fuses beim AVR, wo drinsteht, was für ein Oszillator, ob und welcher Code auslesegeschützt sein soll, ob der Prescaler dem Timer0 oder dem Watchdog zugeordnet werden soll und so weiter. Sowas ist komplett außerhalb der Adreßräume des PIC und wird auch separat für sich programmiert. Es gibt da eine Konvention, um die Werte für User-ID, Konfiguration und ggf. EEPROM im Hexfile unterzubringen. Sie werden dort einfach außerhalb des adressierbaren Adreßbereiches angeordnet. Beim PIC16F88xx wimre Config auf 2007h und EEPROM auf 2100h..21ffh. Sowas weiß man, wenn man diese Dinger in Assembler programmiert. Ob da dein C-Compiler dieses richtig tut oder nicht, mußt du selber herausfinden. Vielleicht ist da bloß irgend ein Kringel in einem Konfigurationsfile verkehrt. Ansonsten gibt es da noch etwas zu bemerken, wenn dein Chip einen internen RC-Oszillator hat. Dann sollte beim Programmieren Vpp vor Vcc eingeschaltet werden, damit der interne Oszillator nicht bereits den Adreßzähler weitergestellt hat, bevor Vpp die zum Umschalten in den Programmiermodus erforderliche Höhe erreicht hat. W.S.
OK, einen noch. Der PicKit3 erwartet einen anderen µC. Hast du da zwei Projekte angelegt oder was stellst du da in MPLAB um?
Kann auch sein das der µC nicht vom PicKit unterstützt wird. Oder die passende Firmware dazu nicht auf dein PicKit geladen ist.
Gast
#7249741
usuru schrieb: > ;----- CONFIG Options -------------------------------------------------- > _FOSC_LP EQU H'3FFC' ; LP oscillator Tja, immer wieder die Leiden der jungen C-Programmierer mit endlosen Wüsten aus nur jeweils einmal zu brauchenden Konfigurationsbezeichnern. Da kommt Konfusion auf, weil offenbar niemand mal ins Manual guckt, um herauszufinden, was da wofür gut ist. Für den PIC16F877A siehe Bild. Vielleicht hilft's. W.S.
Gast
#7249803
Zeig doch mal Deine beiden Konfigurationen für den 877a und den 884
W.S. schrieb: > Tja, immer wieder die Leiden der jungen C-Programmierer mit endlosen > Wüsten aus nur jeweils einmal zu brauchenden Konfigurationsbezeichnern. > Da kommt Konfusion auf, weil offenbar niemand mal ins Manual guckt, um > herauszufinden, was da wofür gut ist. Für den PIC16F877A siehe Bild. > > Vielleicht hilft's. Viel schlimmer, MPLAB generiert dir diesen Scheiß. Hab den TO schon letzte Woche x mal drauf hingewiesen, Dabla, Tutorial (Sprut) ... Nix, er will die Leckerlis zugeworfen bekommen! usuru schrieb: > Zeig doch mal Deine beiden Konfigurationen für den 877a und den 884 Das hat nichts mit der Configuration zu tun! Der PicKit3 meldet bereits, das ein falscher µC angeschlossen ist und verweigert die Mitarbeit. Kann auch von Kontaktproblemen herrühren. Dieses Problem hatten wir letzte Woche bereits gelöst. Er hat nur das Project nicht auf den neuen Processor umgestellt..... 99%
Teo D. schrieb: > letzte Woche x mal drauf hingewiesen, Dabla, Tutorial (Sprut) ... Nix, > er will die Leckerlis zugeworfen bekommen! Na, hier werden sie ihm auch immer wieder nachgeworfen....
hier die vom 884:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
und hier die vom 877a:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
aber ich verstehe nicht wieso das an den Configs liegen könnte denn MPLAB kann ja das C-Programm und die Configs gar nicht erst hochladen ? und der Aufbau ist immer der gleiche, ich tausche nur den Chip aus, der eine geht, der andere nicht.
Ich tausche lediglich 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
Hmmm, hast noch nen zweiten 877A.... MPLABx hat(te) schon so seine Macken. Starte die mal nach dem Wechsel auf den 877er neu!??? ... Sitzt der evtl. etwas anders im Breadboard, die Pins.... Das kann auf solchen Teilen, manchmal auf Kleinigkeiten ankommen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.


