PIC – Microcontroller, Minimalversion für Steuerzwecke

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

Vorheriges Thema - Nächstes Thema

picass

Schon wieder ein Steuer-PIC, mag der eine oder andere Foren-User denken, da haben wir doch schon so Etliches im Angebot. Schließlich gibt es hier Entwicklungsboards mit teils vielfältigen Ausbaumöglichkeiten.
Nix, mir schwebt das Gegenteil vor: eine recht niedliche Platine mit einem physikalisch kleinen PIC, auf der nur noch wenige Bauteile mehr sind. Anlass für diesen Gedanken ist eine Platine, nein, es sind zwei, welche die Steuerung für einen Garagentorantrieb enthalten und die z.Z. zur Rep auf meinem Werktisch liegen. Die zweite Platine enthält von mir erstellte zusätzliche Funktionen und u.a. auch da haperte es gerade. Das Hapern ist fast überwunden, aber gut finde ich das Gemengelage dennoch nicht.
Da gelangen zwei Signale auf diese Platine, letztlich soll ein Last-Relais angesteuert werden. Dazwischen sitzt ein guter, alter LM555 und ein OR-Glied und nun sollte möglichst noch ein Flip-Flop dazu kommen. Der Drahtverhau würde wachsen und die Servicefreundlichkeit wäre verschütt.

Also der Gedanke, stattdessen ein PIC und weil ich kaum der Erste bin, der Logik-ICs durch µC ersetzen will, stelle ich das mal hier rein, dazu Fragen und eine Anregung. Wir hatten hier schon mal den Fall, dass für die Ausgestaltung – da ging es um ein Entwicklungsboard – um Vorschläge, bzw. Anregungen gebeten wurde. So auch hier: wer Vorstellungen hat, was da alles auf so'nem Board drauf sein sollte oder auch gerade nicht, der bringe seine Vorstellungen bitte ein. In ca. 2 Wochen werde ich eine Platine erstellen lassen, wobei: da die sehr niedlich ausfallen wird und mehrere zusammengefasst werden könnten, dürfen es auch zwei Versionen werden.

Die Fragen: zuerst nach dem PIC. Welchen Aktuellen könnte man nehmen?
Er soll halt klein sein. Bislang hatte ich noch nichts ,,Kleineres" als einen 16F84, mein aktueller Favorit ist immer noch der PIC18F14K22. Wenn nichts anderes passiert, nehme ich halt den in der SOIC-Version. Nur bräuchte der Anvisierte nicht mehr als 3 oder 4 Ports. Ein Kleinerer sollte aber einen ähnlichen Befehlssatz haben und möglichst aktuell sein.

Evtl. hat ja jemand auch ein fertiges Modell, rsp. fertigen Entwurf. Über Anregungen würde ich mich freuen. Ist klar, im einfachsten Fall nehme ich eine von meinen Platinen und lasse möglichst viel weg. Aber mal sehen, ob es von euch was gibt.
Grüße, picass

Peter

Hallo
Klein ist immer rellativ. Wenn du nur 3 bis 4 Ports verwenden willst,
dann kann man einen PIC 12F1840 nehmen. Da der einen weiten Spannungsbereich hat
könnte man ihn auch mit Battterie betreiben. Wenn du nicht viel drauf machen willst,
dann wird meistens ein Steckbrett genommen. Ist schnell aufgebaut und man kann es
ändern wie man will. Ob sich dann eine kleine Platine lohnt weis ich nicht so recht.
Kommt auch drauf an, an welche Zielgruppe soll sich die Platine richten ?
Wenn an Kinder dann möglich viel blinky blinky drauf an andere Personen dann eben
LCD oder GLCD drauf machen.Ob Bootloader noch sinnvoll ist muss man dann entscheiden.

picass

Hallo Peter!
Danke für den Tip auf den PIC12F1840! Die Bestellung von einigen Exemplaren - sowohl als DIP8 wie auch als SO8 - ist raus, bei Reichelt waren die vorrätig. Bei den meisten anderen Großhändlern war das nicht der Fall und bei Google gabs noch eine besonders reizende Überraschung, siehe Bild. In der ersten Sekunde dachte ich, der bekannte Liefermangel und das Putin-Verbrechen hätten arge Dellen in den Markt geschlagen: Fake news bei G!

Die Zielgruppe bin - pardon - erst mal ich. Da es sich nicht um eine sensationelle Neuentwicklung handeln wird, sondern schlichtweg - wie beschrieben - um lediglich eine minimalistische Board-Version, erwarte ich gar kein Interesse anderer, aber man weiß ja nicht?!
Steckbrett: klar, zum Austesten von z.B. äußerer Beschaltung ist sowas klasse. Für meine geplante Anwendung kommt allerdings nur eine Platine zum Einsatz. Hoffe, dass es bei Aisler möglich ist, einen eher winzigen Platinenentwurf mehrfach auf einer z.B. Europlatine unterbringen zu können, die dann später passend zersägt wird. Mal sehen, was da geht.
Grüße, Bernd

Peter

Kommt wohl bei AISLER drauf an wie groß die Platine ist, ob die die auf
eine Platine machen, um sie dann zu trennen. Hatte mal eine Platine die war 3x2cm und
davon dann 5 Stück. Die haben sie auf einen Layer gemacht und ich konnte sie dann ausschneiden.
Die fräßen dann um die Platinen rum und lassen einen Steck stehen.

picass

Das wäre natürlich super, wenn es denn so ginge.
Anbei ein erster Entwurf für Schaltung und Platine. Weil mir das Integrieren von externen Schaltplansymbolen via diesen vercryptisierten Einfügungs-Progs selten gelingen will, habe ich anstelle des Symbols für den avisierten PIC12F1840 so'n anderes, aber pin-gleiches Vorhandenes genommen. Das Reichelt-Paket ist unterwegs, mal sehen.... Falls jemand Anregungen zum Schaltungsentwurf hat, bitte sehr.
Grüße, Bernd

picass

#5
Schwitz....! Jetzt glaubte ich, fertig mit dem Entwurf zu sein, bin das auch, komme aber nicht weiter. Der fertige Entwurf sieht eine Platine mit den Maßen 1,9 x 3,9 Zentimetern vor. Von diesen wollte mehrere - so ca. 6 - Versionen auf eine größere Platine schieben, sodass dann am Ende eine bestellt, angefertigt und nach der Zusendung von mir dann in die ursprüngliche Größe zersägt wird. Aber wie kopiert man sein fertiges Miniprodukt in Eagle derart?
Oder ist es sinnvoller, auf dieses Zusammenschieben zu verzichten und dann bei Aisler 2 mal je 3 von diesen Winzig-Dingern zu bestellen?
Grüße, picass

Peter

Wenn du die 6 mal bestellst, dann machen die das sowieso auf eine
Platine und du musst es noch ausschneiden. Aber da am besten mal nachfragen
wie sie es handhaben. Wie oben schon geschrieben war es bei mir so.

Peter

Aber bestell doch 6 einzelne und dann biste immer auf der sicheren Seite.
Entweder kommen 6 einzelne Platinen und brauchst nichts mehr zu tun oder sie machen
es auf einer Platine dann musst du halt noch sägen.

picass

#8
Kurz nach meiner obigen Anfrage habe ich's schlicht ausprobiert und bei Aisler zu dieser Miniplatine die Preise angefragt. Gucke da, für gesamt 9 Stück und bei schnellster Anfertigung incl. Porto sollte das 20 € kosten. Da hab' ich nicht mehr überlegt und zugeschlagen. Allein die Vorstellung verursachte mir gruseln, das Zerschneiden selbst ausführen zu müssen, etwa mit so'ner Riesen-Stichsäge oder einer wackligen Japan-Säge. Da fehlt mir einfach eine entsprechend niedliche und dennoch präzise Schneidvorrichtung.
Die bestellte Version hat mit der ersten, oben gezeigten Platine nur Ähnlichkeiten, Alles wurde mehrfach umgekrempelt. Hatte ich z.B. einfach mal zwei Ports auf Verdacht mit Ausgangs-Transistoren versehen, machte das später hinzu gezogene Datenblatt darauf aufmerksam, dass es da einen Input-only gibt, und is klar, den hatte ich erwischt! Kaum zu glauben, was man selbst in solche Minimal-Version alles investieren kann. Auch an Lötstützpunkte für späteres Programmieren in der Schaltung wurde gedacht, auch an eine Art Schalter dafür, um das Versorgungs-IC nicht zu himmeln beim Programmieren. Das Einzige, was mir am Ende nicht gefiehl, war der unpassend große Elko. Alles winzig, der nicht oder halt wenig, obwohl er als SMD-Elko geführt wird.
Grüße, Bernd

picass

#9
Es gibt eine schlechte und eine gute Nachricht, die schlechte zuerst:
Die Arbeit an der o.g. Ministeuerplatine verschiebe ich auf eine gaaaanz lange Bank, obwohl die Platine bestellt und die PICs schon hier eingetroffen sind. Beim ersten Anlauf für ein Programm wurde ich seitens des Debuggers von einer Flut an Meckermeldungen überschwemmt. Da erst wurde mir klar, dass der PIC12F1840 wohl doch kein Vertreter der von mir als modern angesehen Art darstellt, sondern noch zur Zeitgeschichte etwa des PIC16F84 zählt. Sowohl die config settings sind inzwischen wieder ein Buch mit mehreren Siegeln geworden, das händische Eintragen der Werte aus dem Datenblatt brachte da keinen Durchbruch, als auch zahllose Assemblerbefehle, rsp. Ausdrücke sind "alt" und vergessen, nicht mal der PORTB ist bekannt und bei den Literal Operanden werden sogar die Kommas angemeckert.
Echt jetzt, die Einarbeitung ist möglich, wird mir aber zuviel.

Die gute Nachricht: ich habe mich wieder an den von mir geschätzten PIC18F14K22 erinnert. Dann habe ich kurzerhand aus der Miniplatine den 8-pinnigen PIC durch den 18-Pinnigen ersetzt, und weil der in der SO-Version ja auch recht niedlich ist, passt der ohne Probs auf die Platine. Dann sind halt die meisten Ports unbenutzt, aber egal.... Witz bei der Geschichte: beim Platz-Schaffen für den größeren PIC habe ich mal wieder fast sämtliche Bauteile neu plaziert und so ist die neue Platine sogar noch etwas kleiner als die vorige ausgefallen. Die Bestellung der neuen P ist auch raus, nun gilt es wieder zu warten. Aber wenigstens muss ich mich nicht mehr mit dem Debugger rum ärgern und kann auf eigene, vorhandene und funktionierende Progs zugreifen.
Grüße, picas

Peter

Welcher 8Pin Mikrocontroller hat einen PortB ?
Die gibt es nur mit PortA. Und welcher 8Pin Controller
hat das LAT Register ?
Also so alt kann er auch nicht sein.

vloki

Zitat von: picass in 08.03.2022, 17:33:22 CETDa erst wurde mir klar, dass der PIC12F1840 wohl doch kein Vertreter der von mir als modern angesehen Art darstellt, sondern noch zur Zeitgeschichte etwa des PIC16F84 zählt
Du irrst ;)
MPLABX  XC8  KiCAD

picass

Ein Teil der Meckermeldungen entstand zwecks meines "ökonomischen" Hantierens beim ersten Einarbeiten in ein "neues" Programm. Da beginne ich nicht komplett von vorne mit leerer Seite, sondern lade in das neue Projekt erst mal ein vorhandenes Prog. Das wird dann umgestellt, gekürzt, halt umgearbeitet. So kam in das für den 8-Pinner vorgesehene "neue" Prog erst das des 18-Pinners rein und dem Debugger gefiehl das wohl nicht.

Sollte der Befehlssatz des PIC12F1840 doch gleich mit dem des PIC18F14K22 sein, so wäre ich der Erste, der sich über einen möglichen Irrtum freuen würde. Werde ich heute Nachmittag mal prüfen, was bislang nicht passiert war.
Grüße, picass

vloki

Na ja, der 12F1840 ist zwar neuer als der 18F14K22 gehört aber zu einer "niedrigeren" Familie und hat so auch einen kleineren Befehlssatz.

Früher hat man die 8Bit PICs in Baseline (PIC10/12/16 mit 12Bit Befehlssatz), Midrange  (PIC10/12/16 mit 14Bit BS) und Advanced  (PIC18, 16Bit BS) Familien eingeteilt,
die einen unterschiedlichen Umfang an Befehlen haben. Diese Einteilung findet man inzwischen auf den MCHP Seiten so nicht mehr.

Der 12F1840 gehört zur "Enhanced" Midrange Familie, die z.B. LAT Register wie die PICs der Advanced Familie hat
und auch mehr Befehle als die alten Midrange wie z.B. der 16F84.
MPLABX  XC8  KiCAD

picass

Jetzt also wissen wir, warum es mit dem vermeintlich stone-alten Zwölfer-PIC nicht klappen wollte: solche feinen Unterschiede wie Midrange früher und heute, dann noch Diversifikationen....., das ist für einen einfachen Mann des Volkes wie mich kaum mehr zu durchschauen. ???
Eure Hinweise - teils auch (berechtigt) ironisch wie:"...welcher 8-Pinner hat schon PortB?...", haben mir neuen Mut eingeflößt, und so habe ich gestern meine Aktenordner mit weiterem Papier gefüllt, also noch mehr Seiten aus den Data-Büchern zugefügt, und heute gerade eben die MPLAB IDE mit dem fehler-strotzenden ersten Versuchsprog für den PIC12F1840 angeworfen. Is klar....PORTB raus, Operanden entfernt, die Timer-Steuerung wegen Komplett-Änderung erst mal außer Gefecht gesetzt, und dann die für mich unübersichtlichen Config-Settings angegangen. Is auch klar... wieder neuen Papierberg generiert, dann Versuch des Vergleiches des Settings mit dem des PIC18F14K22, dann mal einfach mutig unter dem Reiter "Production" die Config-Settings angeklickert, dort durch geklickert, die alten CS rausgeworfen und dann beschlug es mir die Lesebrille: keine einzige Meckermeldung mehr, stattdessen "Grünes". Der Debugger zeigt grün! :o

Ob das Prog tatsächlich auf einem realen PIC so laufen würde, kann natürlich eine gänzlich andere Frage sein, aber immerhinque...! Es wird aber noch Aufwand geben werden, da sind viele Register gänzlich anders aufgebaut, z.B. bei der Timer-Einrichtung. Na ja, in hatten Fällen muss wieder auf die Hello-World-Ebene zurück geschaltet werden.
Aisler schickte gestern die Meldung, dass die Platinen für diesen Zwölfer-PIC auf dem Weg seien, sobald die da sind, werden wir mehr wissen. Ach ja, danke fürs Mut-Machen.
Grüße, picass

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

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:
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Similar topics (5)