Ich bin neu hier im Forum und wollte mich mal im PIC programmieren versuchen. Ich habe keinerlei Vorkenntnisse und kann kaum Englisch. Verwenden möchte ich den PIC im RC-Modellbau um Funktionen zu steuern.
Mein Projekt:
Ich möchte einen einfachen 2-Kanal-Schalter aufbauen um über einen Steuerkanal am Sender 2 Funktionen unabhängig voneinander einzuschalten. Als PIC soll ein 12F629 zur Anwendung kommen.
Es handelt sich dabei um ein pulsweitenmoduliertes Singnal, welches eine Signallänge von 1-2ms hat. Bei 1,5ms ist die Neutralstellung und es soll nichts passieren. Zwischen ca 1-1,3ms soll Relais 1 anziehen und eine Funktion ansteuern, Relais 2 bleibt aus. Zwischen ca 1,8-2ms soll entsprechend Relais 2 anziehen und Relais 1 soll aus bleiben.
Schaltplan und Platine sind bereits fertig.
Wie weit ich gekommen bin:
Ich habe mir MPLAB X runtergeladen und installiert. Da bekam ich den ersten Frust. Laut Installationsmaske wurde ein Speicherplatz von 4,irgendwas GB gebraucht. Ok, dafür war genug Platz auf der Festplattenpartition. Nach wenigen Minuten wurde die Installation wegen Fehler abgebrochen. Ursache Festplatte voll. Nach erfolgreicher installation auf einer größeren Partition dann das große OHO.. keine 4,... sondern ganze 24GB.
Als PIC Brenner hatte ich mir das PicKit3 zugelegt, was auch nicht funktionierte. Nach einiger recherche...PicKit3 wird von dem neuen MPLAB X nicht mehr unterstützt. Jetzt wollte ich auch keine 80-100€ ausgeben also entschied ich mich für den MPLAB SNAP bei Reichelt. Da habe ich mir auch gerade die Bauteile für die Platine mitbestellt und ein Experimentalboard im Set mit Kabel und Energiemodul.
Als alles angekommen war, bekam ich keine Verbindung zwischen Snap und PC. Ein passendes USB-Kabel ist nicht im Lieferumfang und das was ich hatte war nur ein einfaches Ladekabel. Also noch ein Datenkabel besorgt und der PC erkannte ein neues Gerät. In der zwischenzeit hatte ich dann auch schon herausbekommen, dass der Snap nicht den PIC mit Spannung versorgen kann und zum Programmieren eine externe Spannung anliegen muss. Das war kein weiteres Problem, denn ich hab ja das Energiemodul für das Experimentalmodul. Das noch mit den Jumpern auf 5 V eingestellt wurde und gut.
Jetzt habe ich mir ein paar Videos angeschaut um das MPLAB X IDE zu verstehen und da fängt es jetzt bei mir an.
Wenn ich ein neues Projekt anlege komme ich bei Schritt 2 nicht mehr weiter. Gebe den PIC12F629 an und kann dann bei Tool nicht den Snap Adapter auswählen. Habe dann versucht über die Menüleiste - Debug - Hardware Tool Emergency Boot... den Snap Adapter zu konnekten. Das ging auch mit der Spielerei von Jumper brücken... (warum man da nicht wirklich einen kleinen Jumper oder Taster herstellerseitig verbaut ist mir Rätselhaft). Aber danach kann ich den Snap Adapter unter "neuem Projekt" immer noch nicht auswählen.
Mein nächstes Problem kommt dann, das ich die Programmiersprache C nicht kenne. Die groben Grundzüge sind soweit klar. Am PIC Ein- und Ausgänge definieren, dann einen Timer für das Signal auszuwerten und dann im Programm festlegen, was unter welchen Umständen passieren soll. Wie das aber in C formuliert wird hab ich noch keine Ahnung. Da das Programm aber nicht sonderlich umfangreich zu sein schien, habe ich das einfach mal mit einer KI versucht und wollte das testen.
Habe meine Beschreibung dort 2x eingegeben und die KI das 2x schreiben gelassen.
Bei der ersten Version passt der Anfang denke ich
/ ======================================
// PIC12F629: Pulsbreitenmessung an GP3
// Ausgänge:
// GP0 (Pin7),
// GP1 (Pin6)
// =====================================
Während bei Versuch 2 schon die Ausgänge falsch benannt sind
// ===========================================
// PIC12F629 – Pulsweitenmessung an GP3 (Pin 4)
// Ausgänge:
// GP1 (Pin 6) = Ausgang 1
// GP2 (Pin 7) = Ausgang 2
// ===========================================
Also fraglich wie es im gesamten abläuft.
Mir ist auch klar, dass mir hier keiner C beibringt, das wäre nicht möglich und viel zu umständlich.
Was ich mir jetzt erhoffe.
-Dass man mir helfen kann in MPLAB X weiter zu kommen bzw warum ich den SNAP Adapter nicht auswählen kann.
-Vielleicht auch, dass mir jemand für kleines Geld meine 3 ersten PIC´s brennen kann, damit ich in meinem Modellbauprojekt weiter komme.
Ach so, falls die Frage auftaucht, warum ich den Aufwand betreibe, obwohl man schon für kleines Geld solche Schalter fertig kaufen kann. Der Minimalismus schreitet soweit voran, dass man jetzt überall auch schon auf Befestigungslöcher verzichtet und ich möchte nicht alle Bauteile mit Klett- oder Klebeband ankleben. Schön sauber geschraubt gefällt mir besser. Zudem sind auch nur die Schaltkontakte ausgeführt. Ich gehe lieber mit der Versorgungsspannung (+ und -) zu meiner Platine und von dort zu meinen Verbrauchern, statt den Minus über den Schaltkontakt zu führen und jedem Verbraucher den Plus nochmal separat hinlegen zu müssen. Auch spare ich mir so gerne noch eine Verteilerplatine für den Plus.
Deine Antwort ist ja mal absolut nicht hilfreich aber ich gebe mal Antwort.
Warum PIC?
PIC war das erste wo ich drauf gestoßen bin. Hatte vor Jahren mal einen Arbeitskollegen (leider keinen Kontakt mehr) der hatte mit PIC´s hobbymäßig zu tun. Er hatte mir davon erzählt und ich fand die Sache damals wie heute interessant.
Zu meinen Vorkentnissen.
In der Schule vor ca 25 Jahren hatte ich mal kurz in Informatik mit Pascal zu tun und in der Lehre ein bisschen mit Siemens Simatic S5 und S7. Dachte das vom Programmieren das ganze etwas ähnlich sein wird, da ja immer der Zustand abgefragt wird auf den dann eine Reaktion passieren soll. Aber C ist da doch ganz anders.
Du sagst ich soll was anderes nehmen. Was?
Cartman E.
Danke für deine Antwort.
Ich habe gegooglet, was man zum PIC programmieren braucht und habe darauf halt einfach die aktuellste Version von MPLAB runter geladen. Da sind auch die ganzen aktuellen Compiler drin und wusste auch, das es auf meinem Rechner läuft. Bei älteren Versionen kann es ja zu kompatibilitätsproblemen kommen und wollte da nachher nicht noch ewig nach Patches oder irgendeinem Kram suchen müssen. Hätte ich gewusst, dass eine ältere Version läuft und der XC 8 Compiler für meinen PIC reicht hätte ich mich sicher erstmal für die Version entschieden.
Werde mich mal durch sprut.de durchlesen. Die Seite ist gut gegliedert wird aber sicher etwas dauern.
Auf Grund keiner weiteren Antworten auf mein Problem sehe ich mein Projekt für mich als sehr schwierig an... klar, alles in Englisch und kann kein Englisch und kein "C".
Wäre mir dann eventuell jemand in soweit hilfreich mir ein Programm zu schreiben und auf meine 3 schon gekauften PIC´s zu brennen? So landen sie wenigstens nicht unnötig im Müll.
Da soll also jemand einen Tag seiner Freizeit opfern, damit deine Mikrocontroller im Wert von 5€ nicht in den Müll wandern? Erzähle doch lieber mal, wie viel Geld dir diese selbstlose Rettungsaktion wert ist.
Was ich mir jetzt erhoffe.
-Dass man mir helfen kann in MPLAB X weiter zu kommen bzw warum ich den
SNAP Adapter nicht auswählen kann.
Du hast zu billig gekauft. Sorry. Der MPLAB Snap wird Deinen PIC nicht programmieren können, und das MPLABX weiß das auch. Der Grund dafür ist, dass das Snap zu billig ist. Dein konkreter PIC braucht am MCLR Pin eine Programmierspannung von 9 bis 12 V (den genauen Wert müsste ich nachschauen), um in den Programmiermodus zu wechseln. Die normalen PICKITs (2, 3, 4, 5, aber nicht der BASIC!) haben dafür einen DC-DC-Wandler, der die erforderliche Spannung aus den 5V des USB-Ports erzeugt. Der Snap sollte aber billig sein, und deswegen hat man diesen etwas aufwändigen Schaltungsteil dort weggelassen. Moderne PICs brauchen diese hohe Programmierspannung auch nicht mehr, aber Deiner ist ein sehr alter Typ. Das erkennt man daran, das hinter dem F in der Typenbezeichnung nur drei Ziffern folgen. Neuere PICs haben 4 oder 5 Ziffern hinter den F.
Du hast jetzt folgende Möglichkeiten:
Du besorgst Dir ein PICKIT5. Das kann alles, was Du brauchst. Ist halt nicht ganz billig.
Du deinstallierst Dein MPLABX 6.25 und installierst die 6.20. Die kommt dann auch mit Deinem PICKIT3 klar.
Du nimmst einfach einen zeitgemäßen PIC. Wenn Du unbedingt einen 8-Pinner haben willst, wäre der PIC16F18313 beispielsweise geeignet. Aus der gleichen Serie gibts auch den PIC16F18324 mit 14 Pins. Die können Low Voltage Programming und funktionieren dann auch mit Deinem SNAP.
Ich persönlich würde 3. wählen und dann zu einem 14-Pinner greifen.
fchk
PS: nachgeschaut: Dieser hier braucht 12V Programmierspannung. Andere brauchen 9.5V. Der DC-DC-Wandler im PICKIT muss in der Lage sein, eine variable Programmierspannung zwischen 6.5 und 13.5V zu erzeugen, und diesen AUfwand (und Kosten) hat man sich beim MPLAB Snap und beim PICKIT Basic gespart.
Am besten fängt man mit einem ganz
kleinen Projekt an. Z.B lass eine LED blinken.
Klingt einfach aber wird es nicht für dich sein.
Wenn es läuft hast du schon eine ganze Menge gelernt.
Und nicht gleich aufgeben sowas braucht Zeit und
viel Übung.
MPLAB V8.92 und der XC8 laufen auch ohne Probleme auf aktuellen
64 bit Windows Versionen. Die Sorge ist also unbegründet.
Statt zig GB braucht das MPLAB+XC8 hier ca. 1,5 GB und ca. 500 MB,
wenn man für den Ordner die Kompression einschaltet.
Die Versionen bei Microchip aufzustöbern, überlasse ich allerdings
dir. ☺
P.S.:
Wenn du diesen Weg einschlägst, solltest du statt MPLAB-Assemblers
/gleich/ mit dem XC8-Assembler arbeiten. Spätestens wenn du soweit
bist, und C und Assembler zusammen benutzen willst, nützt dir der
alte MPLAB-Assembler nichts mehr.
Für weitere Projekte solltest du den 12F683/16F684 ins Auge fassen.
Mit denen lassen sich auch batteriebetriebene Projekte sehr viel
besser umsetzen.
Am besten fängt man mit einem ganz
kleinen Projekt an. Z.B lass eine LED blinken.
Das ist ohne das passende Programmiergerät bzw. ohne die zum Programmiergerät passende Entwicklungsumgebung erstaunlich schwierig.
Hier hat sich der Threadstarter etwas selbst ein Bein gestellt, in dem er eine fossile und nur umständlich programmierbare Microcontrollerfamilie ausgesucht hat.
Hatte vor Jahren mal einen
Arbeitskollegen (leider keinen Kontakt mehr) der hatte mit PIC´s
Ist Jahre her. Möglicherweise längst veraltet - so als ob du dir ein 15Jahre altes Pedelec mit NiCd-Akku zulegen wolltest.
Wenn du mit so einem anspruchsvollen Hobby neu anfängst, nimm das, was alle machen. Das dürfte Ardurino sein. Einfacher zu handhaben und mehr Leute die du fragen kannst.
... nur umständlich programmierbare
Microcontrollerfamilie ausgesucht hat.
Ich würde behaupten, dass weitaus mehr 8 Bit AVRs wegen falsch
gesetzter Fuses in den Müll geflogen sind.
Die kaputte Ja ist Nein und Nein ist Ja-Logik hat da ihre Tücken.
Und umständlich ist die (ICSP-)Programmierung auch nicht.
Wenn man in der Lage ist, die richtige Familie auszuwählen, kann
kaum etwas schiefgehen.
Und ob "Ardurino"s nun unbedingt modellbautauglich sind?
@TO:
Das Pickit3 was du ja schon hast, wird natürlich auch vom
MPLAB V8.92 unterstützt.
Ich würde behaupten, dass weitaus mehr 8 Bit AVRs wegen falsch
gesetzter Fuses in den Müll geflogen sind.
Also ich habe den Fehler nur 2x begangen, danach konnte ich es richtig.
Schon zwei zuviel.
Es gibt bei PICs keinen Programmierzustand, in dem sie /nicht/
per ICSP neu programmiert werden könnten.
PIC-ICSP erfordert auch keine Taktquelle für den Controller.
Und ob "Ardurino"s nun unbedingt modellbautauglich sind?
Warum nicht? Was machen andere generische (z.B auf PIC basierte)
Mikrocontroller Boards diesbezüglich besser?
Die schleppen keinen Bootlader mit sich herum, und sind bei
vernünftiger Wahl des Controllertyps energetisch ausgesprochen
sparsam. Das was der TO als Problem lösen will, ist ein gutes
Beispiel für einfache Anwendungen, bei denen auch ein einfacher
Controller einsetzbar ist.
Auch vom Platzbedarf her: Den 12F629 gibt es auch in SO8.
Und ob "Ardurino"s nun unbedingt modellbautauglich sind?
Warum nicht? Was machen andere Mikrocontroller beim Modellbau besser, als die bei Arduino verwendeten? Zum Beispiel der hier genannte PIC12F629 versus ATtiny85. Oder nenne andere Beispiele, wenn du magst. Aber vergleiche dabei nicht Ruderboote mit Schlachtschiffen.
Wenn du mit so einem anspruchsvollen Hobby neu anfängst, nimm das, was
alle machen. Das dürfte Ardurino sein. Einfacher zu handhaben und mehr
Leute die du fragen kannst.
noch habe ich nach Arduinos gefragt.
Ich gedenke dieses Thema hier auch nicht weiterzuverfolgen.
Wenn dein gedankliches Spektrum nur von ATTINY85 bis Arduino reicht,
ist mir das egal.
Aber du darfst mir ja gerne erklären, was sie den nun besonders
modellbautauglich macht.
Für die Anwendung ist das gewählte Format des uC gut. In dem Fall ist halt nur blöd, daß er keinen passenden Programmieradapter hat. Aber es gibt ja passende PIC Modelle.
Ich würde den bereits genannten ATtiny85 nehmen, weil ich ihn kenne und dazu passende Programmieradapter habe.
Für die Anwendung ist das gewählte Format des uC gut. In dem Fall ist
halt nur blöd, daß er keinen passenden Programmieradapter hat. Aber es
gibt ja passende PIC Modelle.
Flasch. Hat er ja. Pickit3.
Er hat sich nur bei der Software bislang /vergriffen/.
Ich würde den bereits genannten ATtiny85 nehmen, weil ich ihn kenne und
dazu passende Programmieradapter habe.
Ich müsste welche kaufen. Würde ich aber nicht.
Statt des 12F629 hätte ich den 12F675.
Bei dem muss man nur den AD-Wandler nicht einschalten,
und die AD-Pins auf digital stellen.
Wie viele ATTINY85 bekmmt man eigentlich für 6 Euro?
Ich verwende MPLAB X IDE v5.10 und da ist pickit3 angeführt.
(nicht getestet weil ich kein pickit3 habe - sondern die hex-files mit einem "sprut"-brenner programmiere.)
Es spricht absolut nichts dagegen, pickit3 mit einer älteren Version von MPLAB X zu verwenden.
Auch der 12F629 ist für diese Aufgabe völlig ausreichend.
Wie bereits empfohlen: Deutsche Seite mit umfangreichen Erklärungen: sprut.de
Programmieren in ASM ist rasch erlernt und für die ganz kleinen PIC's gut geeignet. Da hat man auch absolute Kontrolle über die tatsächlichen Ausführungszeiten des Codes.
Anmerkung zum snap-programmer: Nur Low-voltage-programming möglich.
Da "verliert" man aber einen Pin!
Wechseln zwischen low- und hi-voltage-programmung kann mit dem snap auch nicht funktionieren - es fehlt die Programmierspannung.
Da soll also jemand einen Tag seiner Freizeit opfern, damit deine
Mikrocontroller im Wert von 5€ nicht in den Müll wandern? Erzähle doch
lieber mal, wie viel Geld dir diese selbstlose Rettungsaktion wert ist.
Also für jemanden der das programmieren beherrscht dachte ich, dass es nicht so viel Zeit in anspruch nimmt. Ein Eingang, zwei Ausgänge ein Timer. Einmal programmieren und das Programm 3x brennen. Es geht dabei nicht nur um die 3 PICs sondern auch um den Rest... 3x Platine, 6x Relais....
Da ich selbst jetzt so nach etwa 1 Monat damit beschäftigt bin und noch nicht mal das Programm im griff habe, lasse ich mich da auch gerne eines besseren belehren was die Programmierzeit bzw den Aufwand anbelangt.
Frank K.
Vielen Dank. Wirklich. Die erste Antwort, die mich weiterbringt. Ich hatte das so verstanden, dass der SNAP die 5 V Versorgungsspannung für den PIC nicht liefern kann. Aber wenn er die 12V am MCLR nicht kann ok.
Ich würde gerne bei den 8 Pin bleiben mit 14 Pins wird die Platine größer und brauche dort die Pins auch nicht.
Ich denke werde es erstmal mit dem PICKit3 und meinen vorhandenen PICs sowie einer älteren Version von MPLAB versuchen. Glaube man kann bei Microchip ein paar ältere Versionen noch runterladen.
Die Relais haben eine Spulenspannung von 5V. Das passt.
Ihr bringt noch das Arduino ins Spiel. Das wird auch im Modellbau eingesetzt. Da gibt es wohl auch tolle vorgefertigte Sensoren und so. Ich schätze das wird Geschmachssache sein wer was einsetzt. Das verwirrt das ganze jetzt aber auch etwas. Aber danke für das aufzeigen der Alternative.
Ich würde behaupten, dass weitaus mehr 8 Bit AVRs wegen falsch
gesetzter Fuses in den Müll geflogen sind.
Also ich habe den Fehler nur 2x begangen, danach konnte ich es richtig.
Schon zwei zuviel.
Es gibt bei PICs keinen Programmierzustand, in dem sie nicht
per ICSP neu programmiert werden könnten.
PIC-ICSP erfordert auch keine Taktquelle für den Controller.
Hier kann ich jetzt mal gar nicht folgen. Setzt man da beim Programmieren irgendwelche Sicherungen? Und was ist PIC-ICSP?
Beides halte ich bei einer Modelleisenbahm für irrelevant.
Nur am Rande, es geht um ein Modell-U-Boot. Platz ist da weniger als bei einer Modelleisenbahn. Hätte das auch ganz gerne in SMD aufgebaut allerdings nahm ich die DIP Bauform um den PIC in dem Experimentierboard einfach einstecken zu können.
Ich hab ihm doch geschrieben, was genau das Problem ist. Seinen
Allerwertesten hochbekommen muss er selber. Er hat sich hier auch nicht
mehr gemeldet.
Man hat am Tag auch noch andere Sachen zu tun.
Ich werde mich jetzt als nächstes auf jeden fall erstmal nach einer älteren MPLAB Version umsehen und es damit versuchen.
Das Pickit3 was du ja schon hast, wird natürlich auch vom
MPLAB V8.92 unterstützt.
Nein, wird es nicht mehr!
Die haben den ganzen alten Kram rausgeworfen.
Klaus du benutzt V6.05 mit PicKit3 und Jobst schreibt PicKit3 wird bei V8.92 nicht mehr unterstützt?
Meine aktuelle Version ist 6.25 und da wird es definitiv nicht mehr unterstützt.
Jobst, benutzt du eventuell ein anderes Betriebssystem wegen der höheren Versionsnr?
Programmieren in ASM ist rasch erlernt und für die ganz kleinen PIC's
gut geeignet. Da hat man auch absolute Kontrolle über die tatsächlichen
Ausführungszeiten des Codes.
ASM habe ich noch nicht gehört. Werde ich mir auf jeden fall ankucken. Danke für den Tipp.
ICSP ist /das/ Programmierverfahren für PICs.
Fuses sind /Optionen/ die den Controller konfigurieren.
Beim PIC sind sie Bestandteil der ICSP-Programmierung, und
können beim Programmieren immer wieder neu gesetzt werden.
Bei AVRs werden die Fuses getrennt programmiert, und können
wenn falsch gesetzt, eine weitere serielle Programmierung
verhindern. Dann hat man sich ausgesperrrrrrt, ☺ und braucht
einen HV-Programmierer.
Neuere PICs haben zum Teil /schlechtere/ Spezifikationen als
alte Typen. Man hat recht wenig eigenen Gewinn vom Neu.
Man darf die alten Typen also noch gerne, und eine Weile verwenden.
Für deine Aufgabenstellung, würde sogar der Urvater aller PICs,
der 16C50, geeignet sein. Neu spielt nur eine sehr untergeordnete
Rolle.
Für SMD (SO8/SO14) gibt es Adapter mit einem Nullkraftsockel.
In den SO14 passen auch SO8. Das spielt also überhaupt keine Rolle.
Ach ja: Ich schreibe hier nichts zweimal. Lies einfach aufmerksam.
MPLAB V8.92 und der XC8 laufen auch ohne Probleme auf aktuellen
64 bit Windows Versionen. Die Sorge ist also unbegründet.
Das Pickit3 was du ja schon hast, wird natürlich auch vom
MPLAB V8.92 unterstützt.
MPLAB X V6.20 ist genauso ein (GB-)Müllhaufen wie die aktuelle Version.
Unbedingt musst du dich schlaumachen bzgl. Servosignal detektieren,
das ist leider nicht so trivial wie es dir erscheinen mag.
Vielleicht bei einem PIC. Viele (andere) haben eine InpuCatureUnit, die man genau dafür programmieren kann. Einzig um die Fehlerbehandlung (zu lange oder zu kurze Impulsmessungen) muss man sich selber kümmern.
Wieso sollte es nicht trivial sein?
Mit einem PIC (AFAIR den ersten mit FLASH und der Möglichkeit sie über Ludipipo zu programmieren) habe ich vor zig Jahren mal einen Servo-Encoder programmiert. Ob ich auch die Decoder-Seite gemacht habe, weiß ich nicht mehr - AVR sind mir lieber.
Aber soooo kompliziert ist das auch nicht.
Den Eingangspost mit den aktuellen Kenntnissen des TE hast du gelesen?
Nö, aber irgendwann (je nach Lernwillen) ist es trivial.
Andere sind dazu übergegangen, das Signal per RC-Glied zu "analogisieren" und dann per AD-Wandler des 80535 zu messen.
1..2 ms sind doch für einen µC Äonen. Und wenn man ein konkretes Projekt hat, wird man sich auch entsprechend engagiert damit beschäftigen - notfalls im Forum fragen (früher gab es auch ein auf PIC spezialisiertes Forum: "Sprut", oder so?).
Er will ja (noch) keine Brushless-Vektorsteuerung programmieren.
Ich möchte einen einfachen 2-Kanal-Schalter aufbauen um über einen
Steuerkanal am Sender 2 Funktionen unabhängig voneinander einzuschalten.
Gab es von Conrad als Bausatz mit CMOS-Bausteinen.
[noch mehr Offtopic]
Mit einem AVR-basierten Arduino-Board (z.B. UNO mit steckbarem AVR) wäre mMn der Einstieg inzwischen wesentlich einfacher.
Damals (2005) gab es die noch nicht. Da war es auch verpöhnt, solche Entwicklungsumgebungen zu verwenden - "all from scratch"...
[/noch mehr Offtopic]
Ich würde dir auch empfehlen, für den alten PIC die alte MPLAB-IDE 8.x zu installieren und das PICKIT 3 zum Flashen zu verwenden. Ich habe PICs immer in Assembler programmiert, als Modellbauer hat man ja eine gewisse Liebe zum Detail.
Im Anhang das Programm eines 2-Kanal Schalters für den PIC 12F629, wie ich ihn seit Jahren selbst verwende (Assembler Source-Code, das ist noch in MPASM geschrieben (die MPLAB-X IDE unterstützt nur noch pic-asm). Heute würde ich das anders schreiben, das Ding ist ein Frühwerk von mir ... läuft aber.
Allerdings habe ich noch eine einstellbare Memory-Funktion über Jumper, eine Fehlererkennung mit Abschaltung der Ausgänge (falls das Empfänger-Signal mal ausbleibt oder ungültig wird) und einen Nullpunkt-Abgleich beim Einschalten implementiert. Wahrscheinlich musst du die IO-Ports an deine Leiterplatte anpassen, aber das geht relativ einfach, schreib mir, falls du da Hilfe brauchst.
Du kannst den Source-Code mit der MPLAB-IDE laden und übersetzen. Die .hex Datei kannst du dann mit dem PICKIT 3 flashen. Vielleicht kommst du so mit deinem Projekt voran. Die Details der Programmierung kannst du dir bei Interesse ja auch mal später ansehen.
Natürlich gibst bei den PICs Capture/Compare/PWM Module... ?-O
ja, es gibt auch welche mit USB-Host-Funktion.
Trotzdem ist PIC für mich gestorben, da es andere Controller gibt, die das auch alles können, und nicht untereinander inkompatibel sind.
@TO
Nachdem Dein Zeil eine eigene Platine ist, würde ich mich an Deiner Stelle nicht auf ein Board einlassen.
Such Dir einen halbwegs aktuellen 8-Biter raus. Deine Aufgabe ist so einfach, dass Du keine Besonderheiten brauchst. Nachdem ich einfach immer die aktuelle Version von MPlab-X hab und auch einen passenden Programmer (Pickit4) kann ich dir nur empfehlen, die Tips der Anderen zu lesen. Ist natürlich ein haufen "Müll" was MCHP ausliefert, insbesondere wenn man einfach alles nimmt (8 bit, 16 bit und 32 bit). Deine drei bereits gekauften PIC solltest Du wohl lieber wegwerfen, statt weitere Hürden aufzubauen.
Ich persönlich würde zu C greifen, Asm mach ich seit Dekaden nicht mehr.
Du kannst auch dein Programm simulieren (wobei ich das auch schon ewig nicht mehr gemacht hab).
Dein Problem ist so einfach, dass sich das ohne große Verrenkungen linear runterprogrammieren lässt, sogar ohne timer (die nur wieder zu einer Baustelle werden, insbesondere in Assembler).
Was an Deiner Platine fehlt ist eine ICSP-Schnittstelle.
So, dann leg los! Und frag! So ganz intuitiv wird es nicht für dich werden, also bis Freitag wirst Du damit nicht fertig. Aber danach wirst Du die Grundlage geschaffen haben, um weitere "Basteleien" für die Fernsteuerung hinzubekommen.
Dann kannst du ihm ja sicher die Lösung in 1/2 Stunde liefern
Ich gehe davon aus, dass der TO sich die Lösung -evtl. mit etwas Mithilfe- selbst erarbeiten möchte.
Irgendwas in Richtung Auftragsarbeit konnte ich jedenfalls nicht lesen.
Profis wie du schütteln das in 3 Minuten aus'm Ärmel!
Bei der passenden Controller-Famile guckt man einfach ins hauseigene Archiv.
Manche Controller werden auch derart von Bibliotheken unterstützt, dass z.B. eine "PulseIn"-Funktion schon vorgefertigt gibt (Arduino...).
Das wäre für ein einmaliges Projekt (oder als Einstieg) die einfachste Lösung.
Also noch immer nicht registriert, daß der TE ein blutiger Anfänger ist.
Daß PIC auch Captureeinheit hat, wurde ja schon geklärt.
Und Dank KI kann man mit GOOGLE was herbeizaubern, wenn --und das ist die Hürde-- man ein paar englische Fachbegriffe zu 'ner Art Frage formuliert:
detect frequency with pic12 microchip xc8 using ccp module capture
Das Ergebnis ist gar nicht schlecht.
Aber natürlich fehlt einiges drumrum, z.B. Hysteresewerte für die Frequenzen, jede Menge Zeitbedingungen und evtl. Fehlerbehandlung.
Für den Kenntnisstand des TE wird die Lernkurve trotzdem recht steil sein, und ohne direkte Hilfe (vorort) eher schwierig.
Einen Monat hat er ja bereits investiert, bevor dieser Thread gestartet wurde.
Profis wie du schütteln das in 3 Minuten aus'm Ärmel!
Es war ein "Profi" gemeint, der sowas vielleicht sogar schon in seinem Archiv vorliegen hat. Da braucht man nichts extra "aus dem Ärmel schütteln".
Ich behaupte mal, dass es heute einfachere Wege gibt, in die µControllerei einzusteigen. Manche Dinge (aka Arduino) wurden extra für Anfänger und Menschewn ohne direkten Technikbezug entwickelt.
Bevor man sich was kauft, weil man das vor zig Jahren im Vorbeigehen, kennen gelernt hat, sollte man sich mal mit aktuellen "µC-Einstiegsdrogen" beschäftigen. Das ist aber ein gern gemachter Fehler.
Ich finde es ja bemerkenswert, dass sich der TO direkt an MPLAB + PIC traut, doch durch die ganzen Hindernisse könnte es evtl. in Frust enden.
Bzgl. keiner C Kenntnisse und ebenso in Englisch, wundert es mich, dass noch niemand von euch Arduino erwähnt hat, da hätte er eine deutsche Community.
Und wenn er dann doch mal weitergehen möchte könnte er sich ein Programmiergerät kaufen, auf den Bootloader verzichten und trotzdem Arduino verwenden. Oder halt auf Microchip Produkte umsteigen.
War gerade so meine Idee, als ich mir die ganzen Probleme durchgelesen habe.
Vielen Dank für eure weiteren Antworten, Bemühungen, Lösungsansätze usw.
Da kann ich wieder einiges mitnehmen. Leider bin ich jetzt noch nicht dazu gekommen mich weiter intensiv damit auseinander zu setzen. Das wird jetzt auch sicher noch ein paar Tage dauern. Muss da auch den Kopf für haben um mich in Ruhe an den PC setzen zu können. Aber ich werde berichten wie es weiter gegangen ist.
Bzgl. keiner C Kenntnisse und ebenso in Englisch, wundert es mich, dass
noch niemand von euch Arduino erwähnt hat, da hätte er eine deutsche
Community.
Weiter oben wurde bereits Arduino erwähnt. Aber es steht bereits die Platine, Pic und PICKit3 sind vorhanden...
Es handelt sich dabei um ein pulsweitenmoduliertes Signal, welches eine
Signallänge von 1-2ms hat. Bei 1,5ms ist die Neutralstellung und es soll
nichts passieren. Zwischen ca 1-1,3ms soll Relais 1 anziehen und eine
Funktion ansteuern, Relais 2 bleibt aus. Zwischen ca 1,8-2ms soll
entsprechend Relais 2 anziehen und Relais 1 soll aus bleiben.
Bei solchen Tutorials muss man sich halt das heraussuchen was auf einen passt, da es ja meist um andere PIC geht.
Aber die ersten Infos sollte man so sammeln können.
Die ist bei RC-Signalen aber eher unwichtig, da es kein PWM-Signal im herkömmlichen Sinne ist, sondern nur die Pulslänge interessiert.
Bei klassischen Fernsteuerungen wiederholen sich die Signale alle 20ms.
Das ist heute nicht mehr unbedingt so.
Die Pulslänge sollte 1-2ms betragen. Die kann aber auch wieder etwas je nach Hersteller variieren.
Der ATtiny85 ist nicht mehr für Arduino geeignet. Die entsprechenden Plugins (cores) sind veraltet und funktionieren nicht mehr bzw. lassen sich nicht mehr installieren.
Aber es steht bereits die
Platine, Pic und PICKit3 sind vorhanden...
Werde sehen was raus kommt.
Falls du den Rat an nimmst, den Uralt PIC in die Tonne zu werfen, der kann eigentlich ohne Änderung der Platine
durch jeden PIC12 oder PIC16 mit 8 Pins ersetzt werden. Vergiss die blödsinnigen Behauptungen, die wären nicht kompatibel ;-)
strg[F] CCP -> 1/- (wurde ja weiter oben schon erwähnt, dass ein CaptureComparePWM Modul nicht schlecht wäre)
Die Treffer kann man dann rechts z.B. nach Preis sortieren. Die neueren sind wesentlich günstiger, als die Dinos.
Ich hätte hier noch ein paar 16F15214 rumgammeln, von denen ich nicht mal weiß, wofür die mal waren.
Sind SO8 SMD Gehäuse, aber einer ist schon auf einen DIP-Sockel aufgelötet.
Ob der ausgewählte PIC mit deinem Equipment kompatibel ist, kannst du oft auch rechts im Tab „Dev Tools“ sehen.
Ansonsten im Installationsverzeichnis von MPLAB-X unter …/MPLABX/v6.20/docs/DeviceSupport.htm
Ok, da das Eingangssignal auf einen CCP Eingang gelegt werden sollte, müsste man das noch von Pin4 nach Pin2 brücken, falls die Platine wirklich schon fertig ist.
Ansonsten noch ändern. Die Ausgänge gleich auch weg von den Programmier/Debug Pins6/7 und eine passende Stiftleiste für den SNAP ergänzen.
<EDIT> Uups, der 16F15214 hat ja sogar PPS (Peripheral Pin Select).
Somit könnte der CCP1 Eingang intern auf PIN4 gelegt werden.
Für einen absoluten Anfänger könnte es Sinn machen, den Einstieg gleich mit
dem in MPLABX integrierten MCC (Mplab Code Configurator) zu versuchen.
Generiert zwar evtl. eine Menge unnötigen Code, aber zumindest die Initialisierung müsste damit recht schnell gehen. (selber keine Erfahrung)
Wenn die neuen Versionen von MPLAB X IDE nicht mehr mit dem Pickit3 arbeiten können:
Die Programme kann man trotzdem erstellen und ein HEX erzeugen.
Das pickit 3 verwendet man dann mit der software
"PICkit 3 Stand-Alone Programmer App v1.0 "
(zu finden hier: https://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem)
um das hex zu brennen.
Hab das nicht getestet (kein pickit3 vorhanden) aber ich arbeite schon lange mit einem sprut-brenner und verwende das erzeugte hex-file mit einer zum Brenner passenden Software.
Wenn die neuen Versionen von MPLAB X IDE nicht mehr mit dem Pickit3
arbeiten können:
... dann ist das gar nicht schlimm, wenn man nicht nur ein PICkit3 hat, sondern auch noch einen SNAP ;-)
Das größte Problem des TO dürfte eher "kann kaum Englisch" sein.
Hier mal ein Link zu einem MCC Video das offensichtlich automatisch auf deutsch übersetzt wurde: https://www.youtube.com/watch?v=wzomxIs-Nzg
(die Aussprache ist oft gruselig, aber man sollte zumindest einen Eindruck bekommen, wofür MCC gut ist)
Ein Nachteil des SNAP ist, dass nur low voltage programming möglich ist.
In dieser Konfiguration ist MCLR automatisch immer aktiv und kann daher nicht als digitaler Eingang benutzt werden. -Dann muss man eventuell einen PIC mit grösserem Gehäuse wählen.
Originaltext:
"If LVP is enabled (LVP = 1), the MCLR pin is automatically enabled and cannot be disabled"
Man braucht halt ein einstellbares Netzteil oder eine 9v Batterie mit 3.3V supply rail, um daraus einen HV programmer zu machen.
Sollte keine grosse Aktion sein.
"If LVP is enabled (LVP = 1), the MCLR pin is automatically enabled and
cannot be disabled"
Guter Punkt, dann müsste das Eingangssignal bei Verwendung eines SNAP auf jeden Fall von /MCLR Pin weg. (Habe ich bisher noch nie drauf achten müssen, weil ich mir die zum Debuggen benötigten Pins immer frei halte)
Aber es steht bereits die
Platine, Pic und PICKit3 sind vorhanden...
Werde sehen was raus kommt.
Falls du den Rat an nimmst, den Uralt PIC in die Tonne zu werfen, der
...
Wozu sollte er das tun? Er hat doch alles da, was er braucht.
Ich verbastel die Reststange 12F675 hier mit dem PicKit2 und ner alten MPLAB-X. Der letzten für W7 und mit Assembler. Das funktioniert super. Flashen muss man das Hex halt mit der PicKit-Software, weil MPLab sich zu fein fürs 2er Kit ist. Naund? Debuggen geht ohne Zusatzhardware eh' nicht bei dem Zwerg, und für den Rest gibts die Simulation im Lab.
Wie weiter oben angemerkt macht es Sinn, nach der Installation das Recourcenverzeichnis mit den Headern zu komprimieren. Spart massig Platz und Ladezeiten.
Die ist bei RC-Signalen aber eher unwichtig, da es kein PWM-Signal im
herkömmlichen Sinne ist, sondern nur die Pulslänge interessiert.
Bei klassischen Fernsteuerungen wiederholen sich die Signale alle 20ms.
Ich hätte noch ein paar Tausend 16F688. (Würde ich gerne einige abgeben)
Welches Package?
Amgedachter Preis per 10/50/100?
Im SO-14 Gehäuse.Sind größtenteils nicht mehr im Band, hat mal irgendwer hier angeschleppt. Würde ich in Bastlermengen verschenken, bzw. gegen Portokosten abgeben.
Im SO-14 Gehäuse.Sind größtenteils nicht mehr im Band, hat mal irgendwer
hier angeschleppt. Würde ich in Bastlermengen verschenken, bzw. gegen
Portokosten abgeben.
Ja, das klingt nett, wäre mir aber zu wenig fasslich.
Ich betreibe keinen gewerblichen Handel mit meiner Bastelkiste.
Beim Chinesen mit MOQ 100 Stck bekomme ich die kleinen Midramge-PICs
je nach Typ für 6 bis 9 Euro + PP, und ich würde mir die tendenziell
dann eher dort bestellen. Die sind eventuell auch Schüttgut. ☺
Liefert er dann nur schön bedruchke Leergehäuse, könnte ich beim
Händler oder bei Paypal mein Glück versuchen.
Du könntest also schon einen Preis (inkl. PP) für 50 Stück ansagen.
Debuggen geht ohne Zusatzhardware eh'
nicht bei dem Zwerg
Der erste (8-bit) PIC der mit zugelaufen ist, war ein 16F819.
Den konnte man mit dem MPLAB und einem Pickit2-Clone debuggen.
Das habe ich zufrieden registriert, aber dann doch viel lieber
den Simulator benutzt.
Der liefert auch im Fall von Silicon- oder Designerrata /immer/
exakte Ergebnisse. Man denke nur an den Timer0. ☺
Die Peripherie ist zwischen den 8/14-Pinnern und dem 16F819
hinreichend ähnlich/gleich, dass man auch auf dem entwickeln
kann, und dann final den 8/14-Pinner benutzt.
Ich vermisse es also nicht besonders.
Meine gööte, welch ein Theater! Eine Woche Diskussion. TO längst verschollen.
Es geht doch nur darum, abhängig von der Kanalimpulslänge, eines von 2 Relais zu schalten. Also vor 50 Jahren war das, wenn auch nicht ganz optimal, noch recht einfach zu bewerkstelligen. ;-)
... Also vor 50 Jahren war das, wenn auch nicht ganz
optimal, noch recht einfach zu bewerkstelligen. ;-)
Die traurige Bilanz heute: Manche müss(t)en das immer noch so
aufbauen, weil sie die 35 Befehle nicht in das Organ zwischen
ihren Ohren gespeichert bekommen.
Hat Mann diese Hürde allerdubgs gemeistert, steht einem die ganze
Welt offen.