PIC – Microcontroller, Minimalversion für Steuerzwecke

Begonnen von picass, 02.03.2022, 17:47:28 CET

⏪ vorheriges - nächstes ⏩

picass

#15
Is ebenso klar: Die Freude war verfrüht!
Da erinnerte ich mich daran, den Zwölfer-PIC auch in der DIL-Version bestellt zu haben, und wollte einem Exemplar rasch das Blinken beibringen, aber nun hat der Debugger das Meckern wiederbelebt: das vermaledeite Configuration Word ! >:(
Die o.g. Einstellmethode war ja ganz nett, aber weder wird eine solche Einstellung direkt ins Programm übernommen, noch in den PIC. Also muss das wieder ins Prog geschrieben werden, und nun nimmt er die Schreibweise nicht.
Die Verwendete findet sich in der Anlage, zuerst die für den PIC12F1480, dadrunter als Beispiel für eine Passende die als Kommentar aufgeführte für den PIC18F14K22.

Die Einstellungen für den Zwölfer müssten passen, nur die Schreibweise wohl nicht.
Hilfe tut mal wieder not.
Grüße, picass

;motoren ansteuern
;zum schlafen
;------------------------
#include <p12F1840.inc>
    ;config settings ; hier die Neuen für den 12F1480
    
    ;config1:

    CONFIG FOSC = LP, WDTE = OFF, PWRTE = OFF, MCLRE = OFF, CP = OFF, CPD = OFF
    CONFIG BOREN = OFF, CLKOUTEN = OFF, IESO = OFF, FCMEN = OFF
    
    ;config2:
    CONFIG WRT = OFF, PLLEN = ON, STVREN = OFF, BORV = LO, DEBUG = 1, LVP = OFF
    
    
    ; hier die Alten für den PIC18F14K22
    ;CONFIG IESO = OFF, PLLEN = OFF, FOSC = IRC, FCMEN = OFF, PCLKEN = OFF
    ;CONFIG BOREN = SBORDIS, BORV = 19, PWRTEN = OFF, WDTEN = OFF
    ;CONFIG MCLRE = OFF, HFOFST = OFF, DEBUG = OFF, STVREN = ON
    ;CONFIG XINST = OFF, BBSIZ = OFF, LVP = OFF
    ;CONFIG CP0 = OFF, CP1 = OFF
    ;CONFIG CPD = OFF, CPB = OFF
    ;CONFIG WRT0 = OFF, WRT1 = OFF
    ;CONFIG WRTB = OFF, WRTC = OFF, WRTD = OFF
    ;CONFIG EBTR0 = OFF, EBTR1 = OFF
    ;CONFIG EBTRB = OFF

    errorlevel -302             ;surpress the 'not in bank0' warning

GPR_VAR         UDATA    
dat             RES   1    ;orig-eingabe über bus o taste
rupi            RES   1    ;ports einlesen
zwisch          RES   1
zaehler         RES   1
counta          RES   1 ;äußere schleife
counti          RES   1 ;innere    "
roll            RES   1
merker          RES   1
;--------------------------------
     Org    0x0000    
     bra    START
     Org    0x0008      ;vector für high priority irq
     bra    ruptus    
     
START:                  ;Setup main init
                        ;
     movlw  b'00000010' ;set cpu clock speed of 31KHz !!!!!!
    --------

ADMIN: Wenn du oben in der Leiste beim schreiben auf CODE gehst dann wird er so eingefügt wie
hier zu sehen ist. Damit braucht man ihn nicht runter zu laden und ist direkt lesbar.

picass

Hier noch als Nachtrag ein im Inet gefundenes Config-Word für den PIC12F1840 in "C", siehe PDF als Anhang.
Grüße, picass

picass

Hab's gerade rausgefunden! Ist erschütternd einfach, zumindest, wenn man aus dem Rathaus wieder raus ist! Wie oben schon mal beschrieben gibt es in der MPLAB IDE oben einen Reiter "Production". In der aufklappenden Spalte runter auf "Config-Settings", und in dem entsprechend neuen Fenster (nF-S) diese Settings angeklickert, falls von den Voreinstellungen abgewichen werden soll. Dann schien es nicht weiter zu gehen, weil es nicht im Editor des ASM-Files (des Programms) erschien. Dabei war im nF-S in der linken Spalte unten ein Button "in den Editor übernehmen". Dadrauf clickern und schon stand der passend formatierte Text im Programm. Dem Debugger gefiehl das und er schaltete wieder auf "Grün". Na gut, jetzt hab' ich noch was zu meckern: das Config1-Wort ist derart lang, dass es nicht in die voreigestellte Breite der Layout-Seite passt. Die Abkürzung, rsp. Verteilung auf zwei Spalten ist noch nicht geregelt, aber zumindest kann es erst mal weitergehen. Danke für eventl. Bemühungen, das debug-freundliche Config-Word ist im Anhang zu bewundern.
Grüße, picass

vloki

Nett, dass die Config Bits auch über das Menü Production erreichbar sind und nicht nur über
Window->Target Memory Views wusste ich gar nicht.

Auch den Insert Knopf links habe ich noch nie bemerkt und immer den fetten
"Generate Source Code to Output" unten benutzt ;-)

Der Interrupt Vector liegt übrigens auf 0x0004 und nicht auf 0x0008 wie bei den PIC18.

Kommt da keine Warnung, wenn man ORG anstelle von CODE verwendet, oder hast du
in den Projekt Properties unter "mpasm (Global Options) den Haken "Build in absolute mode" gesetzt?
MPLABX  XC8  KiCAD

picass

Die nächste Debug-Front ist eröffnet: Mit ein und derselben Programmier-Umgebung und demselben Prog: am Port B - oder war es doch A ? ;D - Pinne 0 und 1 sollen je die LEDs blinken - und derselben Platine mit meinem Lieblingswort "PICkit Low Pin Count Demo" blinkert es beim PIC18F14K22, nicht jedoch bei seinem kleineren Brüderchen. Der Debugger hält die Füße still, nix Warnung, aber auch keine solche genannte Einstellung. Jetzt hebt wieder das an, was ich vermeiden wollte: stundenlange Grundlagenforschung. :(
Grüße, picass

vloki

Dir ist wohl nicht klar, dass die Pins A0,1,3 nicht verfügbar sind,
solange die IDE sie als ICSPDAT, ICSPCLK und Vpp verwendet ;-)

(Im endgültigen Programm dann natürlich schon - also wenn das PICkit dann weg ist)
MPLABX  XC8  KiCAD

picass

Nur 'ne ganz kurze Zwischenmeldung: der PIC12F1840 hat seine Arbeit aufgenommen! Noch nicht ganz wie erwartet, aber immerhinque! Der "Rest" müsste zu schaffen sein! Und gettz kommt was voll Schäbbiges: die Aufklärung gibt es - aus Zeitgründen - erst später!
 :)  ;)  ;D
Grüße, picass

picass

#22
Der ,,Zwölfer" picct! :)
Zwar zu schnell, statt wie sein größerer Pendant mit ca. 0,5 sec Periodendauer jetzt mit 80 Herz, aber lass ma....
Bei der vormittags angekündigten Grundlagenforschung blieb keine Zeile des Micro-Programms nicht erforscht, die Datenblätter rauschten. Dann Komplett-Überarbeitung des Progs, allein, es half nichts, auch nicht die Änderung der Port-Nutzung: anstelle von A0 und A1 nun nur eine LED an A2. Die leuchtete zwar sofort los, was auch zu erwarten war,  denn bei Messungen vorher führte dieser Port im Gegensatz zu allen anderen eine ,,1", aber halt konstant, nix Blinken.
Dann als letztes Mittel etwas, das mir als irgendwie unsinnig erschien, und das brachte die Mutter aller Fehler/Irrtümer beim Assembler-Programmieren ins Licht: die Port-Initialisierung!
Vor JEDEM Befehl, der mit dem Port was zu tun haben könnte, stand in dem Exambel des Microchip-Datenblattes das Wörtchen ,,BANKSEL" ! Das also stumpf abgetippt, und schon ging das Piccen los! Da war es wieder, was ich anfangs mit meinem Wunsch nach ,,modern" vermeiden wollte, das zumindest für mich nicht durchsichtige Hantieren mit der Banken-Auswahl!

Ich lass das Abgetippte jetzt einfach mal so im Prog stehen, weil ich mich aufs Freuen konzentrieren möchte. Die zu hohe Geschwindigkeit werde ich ihm noch abgewöhnen, aber danach kann es an die praktische Nutzung gehen.
Und wenn man schon mal Glück hat, kommt noch weiteres hinzu: Aisler hat heute geliefert und die exakt passenden Platinchen – siehe Foto – sind zum exakt passenden Zeitpunkt eingetroffen. Es fehlt nur so'n Mini-Elko, aber das wird schon, sonst kommt da anfangs ein Tantal rein.
Bin jetzt erst mal im Stand des Glücklichen, weil das angepeilte Ziel doch erreicht werden kann. Mit diesem Kleinen habe ich viel vor, die erste Anwendung – der Ersatz von Logik-ICs – wartet schon.

Vloki, so wie du das darstellst, war mir nichts klar. Nach meiner Praxis beginnt der jeweils in der Fassung des PICkit Low Demo Boards steckende Programmierling sofort mit seiner Arbeit, sobald der Debugger die Daten via den PICkit 3-Progadapter übertragen hat. Sobald das Geblinker seiner vielen LEDs aufhört und letztlich die Status-LED noch leicht grün blinkt, legt der PIC mit seiner Abarbeitung los. War auch gestern beim PIC18F14K22 und seiner Portbelegung mit A0 und A1 der Fall. Der Durchbruch heute kam, als zuletzt als einzige Änderung die Port-Initialisierung abgetippt wurde. Da fiel mir nach der ersten Sekunde der Enttäuschung, weil wieder nur die LED leuchtete, auf, dass diese weniger hell leuchtete als vorher, und da  fiel der Groschen: den Oszi ran geschaltet, aber schon vorher war klar, dass die LED sehr schnell blinkte.
Danke für den Beistand, nu' kann endlich die ,,normale" Arbeit beginnen.
Grüße, picass

Volker

Beim 14k22 kannst du A0 im Debugmode blinken lassen?
Bzw. geht das auch beim 1820, wenn du wirklich im DEBUG bist?

PICkel

Zitatdas Wörtchen ,,BANKSEL"

Hallo picass,
beim 16F84 konnte mit den Befehlen der gesamte kleine Adressraum angesprochen werden.
PICs mit mehr Speicher und 14-Bit Befehlen haben einen in 2k-Bänke segmentierten Speicher, der mittels BANK SEL(ection) adressiert werden muss.
Die PIC18 (16-Bit- Befehle) haben einen linear adressierbaren Speicher und benötigen diesen Befehl nicht.
Deshalb brauchtest Du beim 16F84 und brauchst beim 18F... diesen Befehl nicht.

GuggsDu bitte auch bei Sprut: https://www.sprut.de/electronic/pic/grund/adress.htm

MfG
Johannes (alias PICkel)




picass

#25
Möglicherweise habe ich mich zwecks des Blinkens im Debug-Modus nicht korrekt formuliert. Deshalb gebe ich mir jetzt mehr Mühe und bebilder das auch. Wenn ich ein Prog geschrieben habe, dann werfe ich den Schalter 1 an, den "Hammer und Besen" = clean and build projekt. Wenn das dann grünes Licht gegeben hat, dann betätige ich Schalter zwei: make and program device. Dann beginnen die "Active" und "Status"-LEDs im PICkit 3-Programmer zu blinken, ein Warnhinweis erscheint, dass man doch bitte beachten möge, dass es die PICs in 3,3 V und in 5 V Versionen gibt, nach dessen Bestätigung (o.k.) blinkert es wieder, dann leuchtet die Status-LED grün, zuckt nur leicht dabei und der PIC in der Fassung tut dann das, war er für richtig hält, und zwar sofort. Externe Power ist aber nötig.

Das Bild zeigt den nunmehr auch still vor sich hin plinkernden Zwölfer, jetzt auch mit 0,5 Hz. Es war auch in diesem Fall wie bei der vorher nicht korrekten Initialisierung des Port's B, ähm, doch A: auch vor dem Befüllen des OSCCON-Register im Programm muss das Wörtchen "banksel OSCCON" voran gestellt werden, sonst wird das O-Reg, bzw. das Befüllen ignoriert. Und weil dieses O-Reg für die Takt-Einstellung verantwortlich zeichnet, hört der PIC erst dann auf den gewünschten Takt.
Was ein Spass, dauernd vor alle möglichen Befehle so'ne Voranstellung auszuführen. Spricht nicht dafür, dass die MPLAB-Umgebung so clever ist, das selbst zu merken..... sag' ich mal so als "Verbraucher".
Mit dem Bänkewechseln muss ich mich mal heute Nachmittag beschäftigen.... falls meine Frau mich lässt. Die möchte mich nicht bei Sprut, sondern im Garten am Rackern sehen! :(
Grüße, Bernd

picass

#26
Nachdem das Timern des PIC12F1840 nun auch möglich wurde, ist die niedliche Platine für Steuerzwecke nochmal überarbeitet worden. Hauptsächlich wurde sie nun wirklich von allem, was nicht existentiell war, befreit und ist damit wirklich winzig geworden. Aber genau das war das Ziel. Damit bekommen die Jungs und Mädels bei Aisler wieder etwas Arbeit, denn ein kleiner Vorrat kann nicht schaden.
Im Schaltbild ist leider immer noch das Symbol für den LDO-Regler falsch. Es ist aber nur das Symbol falsch, denn der echte SMD-Laderegler lässt sich auf der Platine korrekt in seine vorgegebenen Fußpunkte einlöten und die Schaltung funktioniert auf diesem Board bereits in mehreren Versionen. Mal sehen, ob sich das "richtige" Symbol nicht noch nachtragen lässt.
Grüße, picass

picass

Ein Ergebnis der Erstellung von kleinen Steuerplatinen: der PIC18F14K22 hat nun eine kleine, gelbe Sortier-Schachtel als Gehäuse spendiert bekommen. Müsste für die gesicherte Einsatzumgebung in warmen Keller aber reichen. Neben dem Gelb-PIC parkt das Netzteil. Für so was nutze ich gerne ehemalige Gehäuse von defekten PC-Netzteilen. Innen drin sind gleich zwei NTs installiert, eines für den PIC und ein zweites für die Soundschaltung, welche der Modelleisenbahn entnommen wurde (siehe Fred: Maulwurf-Bekämpfung). Beide benötigen unterschiedliche Spannungen, und damit möglichst keine gegenseitige Störung auftritt dann halt gleich 2 NTs. Der PIC erzeugt nun im dauernden Wechsel je eine Arbeitsphase von 10 min, gefolgt von einer Pause. Die erste ist 10 min lang, die zweite 20, die dritte dann 30 min.
Grüße picass

Schnellantwort

Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.

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