Configuration, Programmierung und Oscillator beim PIC18F8722

Begonnen von picass, 09.03.2026, 11:58:19 CET

Vorheriges Thema - Nächstes Thema

picass

Habe nun - ach - mit Bemühen diesen Riesentrümmer PIC18F8722 mit seinen neun (!) Ports erstmals in Betrieb nehmen können, allein - so recht kommt keine Freude auf, weil die Testsignale des Testprogs nur "irgendwie" und anscheinend unregelmäßig kommen. Da liegt was im Pfeffer.
Zunächst bin ich jüngst unsicher, für welche Entwicklungsumgebung der überhaupt gedacht ist. in seinem Datenblatt auf S. 373 steht was von "MPASM Assembler" und PICkit 2 Programmer. Selbst war ich - ggf. vorschnell - davon ausgegangen, dass es sich um einen erweiterten Bruder meines PIC18F14K22 handeln würde, der also mit dem "mittleren" Assembler unter MPASM X bis vers. 5.35 sich bearbeiten lassen würde.

Dann legt mir die doch veränderte Configuration Rätsel auf. Da heißt es auf S.304, dass eine Auswahl der Bit-Breite für den Adressbus zu treffen ist und die reicht von 8 bit bis 20 bit ?! Auch der Takt - sonst ein simpler Selbstläufer bei "meinem" PIC -gerät hinterfotzig. Um die erwünschten 31 kHz zu erreichen, müssen wohl diverse Abhängigkeiten beachtet werden, so soll komischerweise erst der Timer1 aktiviert sein müssen laut S. 40 , bevor...... alles komisch oder anders gesagt, da blicke ich noch nicht recht durch.

Das Prüfprogramm ist "eigentlich" recht einfach: zuerst wird über den üblichen movwf LATX ((also LATA bis LATJ)) - Befehl jeder Port mit "1" befüllt, dann 'ne kurze Paus eingelegt, dann die Lats mit "0" befüllt, Pause und das Ganze in Wiederholung. Also sollte eine Rechteck-Spannung an (fast) allen Portanschlüssen zu sehen sein. Meistens ist sie das auch, aber nicht an allen und dann gibts auch noch andere Signalformen und nach etlicher Zeit ist gar nichts zu beobachten. Da stimmt mit der Ansprache, der Inititalisierung was nicht. Die Leitungen selbst hatte ich mehrfach kontrolliert, die waren anfangs nicht alle, nach einer Korrektur nun aber doch alle durchgängig in Ordnung.
Grüße, picass
Nachtrag: das Prog wird nachgereicht, wenn die Bearbeitungszeit abgelaufen sein sollte.
memo01.pdf


pic18

Zitat von: picass in 09.03.2026, 11:58:19 CETdass eine Auswahl der Bit-Breite für den Adressbus zu treffen ist und die reicht von 8 bit bis 20 bit
ich denke, dass ist für dich uninteressant, hier kannst Du externe Speicherbausteine mit den Ports ansteuern. Evtl. wird noch ein 74373 benötigt.

Zitat von: picass in 09.03.2026, 11:58:19 CETrecht einfach: zuerst wird über den üblichen movwf LATX ((also LATA bis LATJ)) - Befehl jeder Port mit "1" befüllt
so einfach ist es nicht ganz. Es muss auch das ADCON1 Byte auf digital gesetzt werden bei PORTA und PORTF

Zitat von: picass in 09.03.2026, 11:58:19 CETso soll komischerweise erst der Timer1 aktiviert sein
das sehe ich nicht so, Du musst den internen Takt von 8 MHZ durch 256 teilen. OSCON Register Bit 6-4

picass

#2
Die Gemengelage wird immer unübersichtlicher.
Zunächst hatte ich das Datenblatt zu Rate gezogen und festgestellt, dass es sich bei diesem PIC um keinen "normalen" handelt. Stattdessen ist er von vornherein auf Datenkommunikation zu externem Speicher und/oder für Parallel-Anschluss von was-auch-immer getrimmt. So sind von vornherein Ports mit diesen Spezial-Funktionen vom normalen I/O-Betrieb ausgeschlossen. Da kann man ruhig mit TRIS arbeiten, aber dieser Befehl wird dann intern schlicht überschrieben. So muss man - um dem zu entgehen - den Microcontroller-Mode verwenden, dann sollte es fluppen. Soweit die Theorie im Datenblatt.

Dieser erste, vewendete PIC18F8722 arbeitet aber grundsätzlich nur, wenn er gerade Lust hat. Auf jeden Fall ist seine Lust sehr von der Spannungshöhe abhängig. Bei seiner Soll-Spannung von 5 Volt passiert in der Regel nichts. Klemmt man das Powerkabel ab, kann man am Oszi sehen, dass kurz drauf die "normale" Arbeit aufgenommen wird. Dies zuverlässig aber nur auf den Ports B,D u.E. Auf J klappt es oft auch mit den vier oberen Bits, nicht aber den unteren. Bei allen anderen Ports kommt es manchmal zu Signalen, aber da ist keine Regel erkennbar. Es schien zwischendurch mal, als ob bei 4 Volt der "eher-wahrscheinlichste" Betrieb möglich wäre. Aber in dem Durcheinander ist es fast unmöglich, eine Regel abzuleiten. Zwischenzeitlich kam der Verdacht auf, es könne sich um eine 3,3 V- Variante des PICs handeln. Aber das nützt ja auch nichts, weil die ja auch bei höheren Spannungen noch arbeiten soll. Insgesamt also völlig unzuverlässiger Betrieb. PIC doch defekt ?
Grüße, picass

pic18

Der "F" Type arbeitet normalerweise mit 5V (4,2V-5,5V)
Um Port J richtig zu schalten, muss im MEMCON Register Bit 7 EBDIS auf 1 stehen. Evtl muss noch Config3L Bit 1-0 auf 11 gesetzt werden. Außerdem muss wie schon gesagt das ADCON Reg. auf digital für deine Ports geschaltet werden.
Das mit der MEM Umschaltung finde ich gut, das fehlt mir bei meinem Prozessor noch. Besser wäre es aber wenn man einen SPI Speicher anschließen könnte.

picass

Danke für deine Hilfsangebote. Das Setzen des Bit 7 im ADCON1 hatte ich ausgeführt. Hat leider nullkommanull Änderung bewirkt. Dein anderer Hinweis hätte ja keine Wirkung auf die Ports A, F und H (als Beispiele) und gerade bei denen liegt es voll im Argen, da tut sich wenig bis gar nichts. Gehe inzwischen davon aus, dass der Chip defekt sein muss. Versuche gerade, den zweiten mitgelieferten Chip zu verlöten. Da hat es aber einen unangenehmen Rückschlag gegeben, weswegen es noch 'ne Runde dauert, bis....
Grüße, picass

pic18

Zitat von: picass in 12.03.2026, 09:36:40 CETDas Setzen des Bit 7 im ADCON1 hatte ich ausgeführt
Um alle Ports auf digital zu schalten, muss ADCON1, PCFG<3:0> auf 15 gesetzt werden, also ADCON1= 0x0F

^Cobra

#6
Hast du alle VDDs und VSS verbunden oder nur einen? Sollte nur einer benutzt werden kann es sein das der nicht an allen stellen wo er braucht auch Versorgt wird...

Komperatoren abschalten:
    MOVLW '0x0F'
    MOVWF ADCON1  // PCFG-Bits auf 1111 setzen für rein digitale I/O
    MOVLW '0x07'
    MOVWF CMCON   // Komparatoren abschalten (falls vorhanden/nötig)

Ansonsten wüsste ich grade auch nicht woran es noch liegen könnte... wäre sehr Ärgerlich wenn der erste schon Schrott ist

Edit: schnell noch im Datenblatt geschaut: min 4,2-5,5V will der haben
Edit2: Dein Memorybus ist Standardmäißg eingeschaltet!
setze mal das Bit: bsf MEMCON,EBDIS
Dadurch sollten die Ports C, D, E, F, G, H und J suaber laufen.

picass

#7
Ja, hatte ADCON mit h'0f' befüllt und mich dabei nach einem Beispiel im Datenblatt orientiert.
Ja, alle Versorgungspinne sind angeschlossen. Das MEMCON Register kann im Microcontroller Mode nicht beschrieben, also benutzt werden laut Datenblatt, daran kann es auch nicht liegen.

Der Erste muss Schrott sein. Es gibt keine Befehle/Anweisungen, welche von der Spannungshöhe abhängig sind. Bestellt hatte ich via AliExpress 2 Stück. Den Zweiten hatte ich bis gerade eben jetzt im Klinch: wieder ein Griff in den Orkus. Der PICkit 3 Programmer akzeptiert das Programm, verweigert aber das Programmieren mit Hinweis auf Fehler im Chip oder einer Verbindungsleitung.

Die Verbindungsleitungen hatte ich zweimal überprüft. Einmal mit dem Milli-Ohm-Meter durch gepfiffen und danach die Spannungen an allen wichtigen Pinnen. Tatsächlich zeigte sich noch eine nicht gelungene Lötung. Nach deren Korrektur war aber nichts besser.
Dieses irre Procedere, 80 Pinne zu bepfeifen und dann noch alle notwendigen Spannungen abzufragen, schafft einen, zumindest dann, wenn man es fünfmal ausgeführt hatte und kein Erfolg in Sicht ist.
Das begann schon damit, dass Aisler einen möglichen Defekt vermeldete, den aber nicht präzis beschrieb. Und eine der drei Platinen hatte auf beiden Seiten ein großes "X", um wohl anzukündigen, dass mit der was nicht stimmen würde. Das ist diejenige Platine, welche ich gerade heute Vormittag mit dem erneuten Misserfolg in Arbeit hatte. Aber gerade wegen der Aisler-Ankündigung hatte ich akribisch alle Leitungen getestet und konnte keinen Fehler wie Unterbrechung oder Kurzschluss finden.

Es gab noch ein weiteres Prob, dass ich aber im Moment außen vorlasse. Jetzt müsste ich zwei weitere ICs bestellen und "eigentlich" auch wieder neue Platinen bei Aisler.
Bin im Moment konsterniert, weil nur für den Versuch, eine Platine mit einem IC zu bestücken und das zum Laufen zu bekommen, eine unverantwortliche Menge an Zeit drauf gegangen ist. Betrübter Abtritt.
Grüße, picass

^Cobra

Zitat von dem Datenblatt:
These registers and/or bits are not implemented on 64-pin devices and are read as '0' . Reset values are shown for 80-pin devices;
individual unimplemented bits should be interpreted as '-'.

und weiter unten steht dann R/W-0

Habe nichts gesehen von wegen sei nicht beschreibbar. Ich würde es zumindest mal versuchen.


picass

#9
Zitat von Seite 100:
"7.1
External Memory Bus Control
The operation of the interface is controlled by the MEMCON register (Register 7-1). This register is available in all program memory operating modes except Microcontroller mode. In this mode, the register is disabled and cannot be written to." Zitatende

Im Microcontroller-Mode ist dieser Bus disabeld und diesen Mode hatte ich verwendet.

Endgültig gescheitert:
Ausgehend vom orig. Microchip Datenblatt mit der Darstellung der Pin-Belegung der 80-pin-Version hatte ich zunächst dies mit dem Device verglichen, welches im EAGLE-Prog verwendet wird: totale Übereinstimmung. Dann alle Extra-Leitungen überprüft, also Plus, Minus, die Programmier-Leitungen. Dann akribisch und teils mehrfach von Pin 1 angefangen oben am Pinübergang in das IC abgegriffen und bis zum Anschluss des zutreffenden Port-Ausgangs am Rande der Platine abgeklingelt auf Durchgang und anschließend auf Kurzschlüsse zu seinen Nachbarleitungen. Das dann bis Port 80. Und - Tusch - tatsächlich auch noch eine etwas wacklige Verbindung erwischt. Die war aber eh unbedeutend, irgendein Provinz-Port.

Dann neuer Programmierversuch und wieder der Hinweis auf defekten Chip oder Fehler der Zuleitungen. Da Letzteres nun wirklich ausgeschlossen werden kann, bleibt nur Chip-Defekt.
Dafür spricht auch, dass danach das IPE-Prog genutzt wurde. Nach Einstellung des richtigen Prozessors ließ sich das auch starten, aber dann: der Blank-Check ergab: nicht blank. Dann halt erasen, das mit  Erfolg. Der nächste Blank-Check - ihr ahnt es - zeigt wieder nix mit Blank, dann nochmal.... und nu ist Hängen im Schacht. Da habe ich zumindest Stand jetzt zwei defekte ICs hier.
Gehe jetzt zum Kaffeetrinken und danach überlege ich mir, ob ich - diesmal - bei Microchip himself 2 neue ICs kaufen sollte. Den vorhandenen Platinen traue ich jetzt auch nicht mehr über den Weg. Voll der µC-Horror.
Grüße, picass

^Cobra

Argh wie konnte ich das übersehen  :-\
Hms, dann weiß ich auch nicht mehr weiter.

Mal ne andere Frage: Was willst du mit 80 Pin denn anstellen? :o

picass

#11
Die Platine und der PIC18F8722 sind für mein Projekt "memo" vorgesehen. In dem werden 48 einzelne Felder je mit einer Taste und einer Lampe (kein LED) angesteuert. Mehr dazu im parallelen Fred.

Die Bestellung von zwei neuen ICs ist raus. Diesmal wurden es die "kleineren Brüder" des og. PICs, nämlichPIC18F8527. Die haben weniger Speicher, aber der sollte reichen, und sie sind erkennbar preiswerter. Neue Platinen wird es auch noch geben. Da möchte ich aber das bisherige Layout nochmal kritischt beäugen und für den Programmieranschluss auch die Belegung ändern. Der wird aber nur gespiegelt, sodaß das PICkit 3 nicht - wie bislang - verdreht, also quasi "unten" angeschlossen werden muss.
Entweder waren sowohl das bisher aufgewendete Geld wie auch die Zeit alles für die Katz, oder es wird erneut reingebuttert, um vielleicht doch noch ins Ziel zu kommen. Danke für eure begleitenden Worte. Diese und die Portion Kaffee eben bewirken den neuen Anlauf. Die PICs wird es recht fix geben, aber die Platinen brauchen, wie ihr wisst.
Grüße, picass

picass

So: auch ein Satz neuer Platinen ist bei Aisler in Auftrag gegeben. Das Layout hatte ich noch ein wenig verändert, was aber nur kosmetische Details betraf. Ende dieses Monats kommen sie und dann geht es hier weiter.
Grüße, picass

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

🡱 🡳