Kann mir jemand ein brauchbares Tutorial für PIC16 in C empfehlen? Deutsch oder Englisch ist egal, Video oder schriftlich auch. Es sollte vom Ansteuern von Ports beginnen und auch PWM, I2C, Interrrupts umfassen. Edit: Das genaue Modell ist PIC16F1829, falls das noch wichtig sein sollte.
:
Bearbeitet durch User
Hallo keine Ahnung, wo es ein Tutorial gibt. Hast du schon mal gekugelt? Microchip bietet auf jeden fall ne kostenlose IDE und nen kostenlosen C-Compiler (XC8). Dann gibts die seite von sprut (www.sprut.de) und das Forum von Microchip (https://www.microchip.com/forums/Forums) Da wird dir geholfen, wenns hakt. Was hast du jetzt denn? hast du MPLAB und XC8 schon? Und wie siehts mit der Hardware aus? hast du nur den PIC oder auch ne Platine dazu? Gruß Gerhard
Franko P. schrieb: > Was hast du jetzt denn? hast du MPLAB und XC8 schon? Hab ich, das aktuelle MPLAB X inkl XC-Compiler. Platine hab ich selbst eine gemacht (hab das PicKIT4), funktioniert auch soweit mit Button einlesen und LED anschalten. Aber dann hörts halt auf ohne gescheite Einführung. Mir wäre etwas, das man systematisch durcharbeiten kann ganz recht. Damit wollte ich es eigentlich probieren, aber die Unmengen an flackernder Werbung lässt einen durchdrehen: https://deepbluembedded.com/interrupts-in-pic-microcontrollers/ sprut.de schien mir jetzt auf den ersten Blick veraltet (letzte Änderung teils 2007). Weiß nicht, ob das für den aktuellen Controller noch taugt.
Teo schrieb: > Franko P. schrieb: >> von sprut www.sprut.de > > So is es besser, wa?! ;) Oder auch nicht.... In der Vorschau wars noch als Link dargestellt. :( .... Sorry Franko
Wenn du nix findest, dann überleg dir ein projekt. Im datenblatt steht ja eigentlich alles drin. Den Anfang hast du ja schon gemacht. Vorschläge für Anwendungen: - Kommunikation mit PC über UART (und UART-USB-Wandler) - Anschluss von nem LCD-Display (über I2C, 1602, oä) - Roboter (Anschluss von H-Brücken zum Betrieb von 2 Motoren, div. Sensoren Das ist eigentlich die Königsklasse) gerhard
Ich hab ein Projekt. Aber ohne ordentliche Grundlagen das in Angriff zu nehmen halte ich für ein Fass ohne Boden. Notfalls läuft es aber da drauf hinaus.
Immer Schritt für Schritt, das wird schon. Das geht alle so. Zuerst Projekt analysieren, einzelne Aufgaben herauskristallisieren, und dann die in Angriff nehmen. Das problem bei Tutorials ist, dass die meist einen bestimmten PIC als beispiel nehmen, du natürlich einen anderen hast. Und leider sind die PICs meist nicht so ganz kompatibel untereinander. Manchmal hilft aber MCC. Den kannst du installieren. Schafft aber auch in problem: Der Code wird unübersichtlich. :-)
:
Bearbeitet durch User
Ich würde auch https://www.sprut.de empfehlen, damit habe ich PICs programmieren gelernt. Da werden zwar fast nur ältere PICS besprochen, aber man kann sich gut einarbeiten. Ich nehme auch gerne den PIC16(L)F1825, das ist einer der kleineren Brüder des 1829, da sind etliche Pins kompatibel zum 1829, letzterer hat halt 6 mehr GPIOs.
Uschi schrieb: > Ich würde auch https://www.sprut.de empfehlen, damit habe ich PICs > programmieren gelernt. Sind die Beispiele da mit meinen uC kompatibel oder gehts da mehr drum wie man das prinzipiell macht und ich müsste dann die jeweiligen Bits, Register usw. im Datenblatt raussuchen?
> ohne ordentliche Grundlagen Die ordentliche Grundlage wird uebrigens mit installiert! Das XC8-Manual. Das solltest du ausgiebig studieren. Der XC8 nat naemlich so seine Eigenheiten, die andere Compiler entweder nicht kennen oder nicht brauchen. Daher sollte man auch vorab ein paar kleinere Fingeruebungen in XC8-Assembler absolvieren. So potent ist ein PIC16F1829 naemlich nicht, als das man ihm und dem Compiler jeden Unsinn vor Fuesser werfen koennte. Mit der Einstellung "Es muss C sein" wirst du da nicht weit kommen.
> ich müsste dann die jeweiligen Bits, > Register usw. im Datenblatt raussuchen? [x]
Markus L. schrieb: > Uschi schrieb: >> Ich würde auch https://www.sprut.de empfehlen, damit habe ich PICs >> programmieren gelernt. > Sind die Beispiele da mit meinen uC kompatibel oder gehts da mehr drum > wie man das prinzipiell macht und ich müsste dann die jeweiligen Bits, > Register usw. im Datenblatt raussuchen? Das erst mal grundsätzlich, die PIC-Familie ist SEHR vielfältig und Du must dann das Datenblatt des jeweiligen ICs heranziehen.
PIClig schrieb: >> ohne ordentliche Grundlagen > > Mit der Einstellung "Es muss C sein" wirst du da nicht weit kommen. > Da widerspreche ich. Oder anders formuliert: Diese PIC16 sind für Assembler zu lernen schier ungeeignet, da zuviele "Spezialitäten" und Einschränkungen. Auch sind die Zeiten von Assemblerprogrammierung dank funktionierender Compiler vorbei. Ich rate hier zu folgender Suche bzw. Informationen: Gooligum midrange pic microchip programming Gruss
> Diese PIC16 sind für Assembler zu lernen schier ungeeignet
Du musst aber ein kleines Hirn haben, wenn die 35/49 Befehle
da nicht hineinpassen.
Der Abschnitt ueber Assemblerprogrammierung, ist sogar
regelmaessig Teil des Datenblatts.
Auch die Sequenzen um Funktionsregister zu setzen sind
in den Datenblaettern in (MPASM-)Assembler.
Wenn man mit dem XC8 etwas reissen will, sollte man sich allerdings
gleich an die Syntax des XC8-Assemblers gewoehnen und MPASM
links liegen lassen.
PIClig schrieb: > Du musst aber ein kleines Hirn haben, wenn die 35/49 Befehle > da nicht hineinpassen. Da mach' Dir mal keine Sorgen. Mein Sprachumfang diverser Programmier- und Fremdsprachen geht durchaus über 35 Worte hinaus, jeweils. Und genau deswegen und in jahrelanger praktischer beruflicher Erfahrung u.a. genau mit dieser PIC "midrange" Architektur habe ich obigen gutgemeinten Ratschlag abgegeben. Eines meiner mitentwickelten Produkte (Stückzahl 6-stellig pro Jahr) ist erstellt mit exakt Null Zeilen in Assemblerschreibweise. Weil es dortige Norm der Branche verlangt und ansonsten seitenweise Begründungen für eine Ausnahmeregelung nötig gewesen wären. Gruss
> Weil es dortige Norm der Branche verlangt Hast du evtl. Allmachtsfantasien? Den Rest der Welt duerfta das kaum interessieren. Nebenbei bemerkt, dass Alter der PIC14/16-Architektur laesst vermuten, dass diese Familie die ersten Jahre fast ausschliesslich in Assembler programmiert wurde. Und ebenso sei angemerkt, dass die Architektur sich auch nicht besonders gut als Zielplattform fuer C eignet. Im uebrigen habe auch ich schon Software geschrieben, die fuer einen Einsatz noch vom TUeV zertifiziert werden musste. Nicht fuer einen PIC16 sondern fuer einen X86. Und natuerlich ganz ueberwiegend (> 99%) in C. Aber es brauchte trotzdem 1% Assembler... Das hat die Zertifizierung aber in keinster Weise behindert.
Einspruch, Euer Ähren. Auch die PIC's haben sich weiterentwickelt. Und so resourcenschwach wie in der Anfangszeit waren sind sie schon lange nicht mehr. Microchip hat im 8-Bit Bereich zuerst die PIC18-Reihe aufgelegt, die sehr gut für Hochsprachen geeignet sind und anschliessend die PIC16-Reihe aufgebohrt. Die können heute locker mit der Konkurrenz mithalten. Gruß
:
Bearbeitet durch User
Markus L. schrieb: > Kann mir jemand ein brauchbares Tutorial für PIC16 in C empfehlen? Ein Tutorial in C? Wie soll das aussehen? Um mit den PIC16 zurecht zu kommen, lies dir das zugehörige Datenblatt gründlich durch. Das sollte für das Verstehen der PICs reichen. Was dann noch übrig bleibt, ist das Lesen der Dokumentation zu deinem Compiler, wenn du partout Assembler umgehen willst. Ansonsten neige ich zu den Ansichten eines Vorredners: Ich programmiere diese Sorte von µC in Assembler und benutze für größere Projekte eine andere Architektur. Das Problem der heutigen Programmierer ist, daß sie Erfolge haben wollen, ohne sich der Mühe des Programieren-Lernens unterziehen zu wollen. Daher der beständige Ruf nach Hersteller-Libs und maschinenunabhängigen Programmiersprachen. W.S.
W.S. schrieb: > Ein Tutorial in C? Wie soll das aussehen? Etwa so: https://deepbluembedded.com/pic-programming-tutorials/ Nach dem ich den Adblocker drin habe ist es auch erträglich. Ob das Tutorial was taugt weiß ich noch nicht. Macht aber bisher keinen schlechten Eindruck. Assembler tue ich mir bestimmt nicht mehr an jetzt zum Einstieg, evtl. wenn es später mal für spezielle Probleme notwendig sein sollte. Ich hatte im Studium vor fast 20 Jahren übrigens auch Assemblerprogrammierung auf einem 8051, aber ich glaube kaum, dass das heute noch im Studium vermittelt wird.
Franko P. schrieb: > Einspruch, Euer Ähren. Auch die PIC's haben sich weiterentwickelt. Und > so resourcenschwach wie in der Anfangszeit waren sind sie schon lange > nicht mehr. PIC16 waren noch nie ressourcenschwach, aber ihre Stärken werden von Leuten, die nur C können und die Controller nicht kennen lernen wollen, einfach nicht wahrgenommen. Das ist der Punkt. Im Grunde kann ich das verstehen, denn maschinenunabhängige Programiersprachen wie C können nicht auf spezielle Dinge von bestimmten Architekturen eingehen. Und so werden eben diese Dinge, die oftmals die Stärken der jeweiligen Architektur sind, weitestgehend ignoriert. W.S.
Markus L. schrieb: > W.S. schrieb: >> Ein Tutorial in C? Wie soll das aussehen? > Etwa so: https://deepbluembedded.com/pic-programming-tutorials/ Die Tutorials sind in englisch und nicht in C, wie es der TO haben wollte. W.S.
W.S. schrieb: > die nur C können und die Controller nicht kennen lernen wollen, > einfach nicht wahrgenommen. Für den Einstieg ist es halt ein immenser Aufwand und daher demotivierend. Ich denke mal, Sensor per I2C anbinden und ähnliches, da braucht man kein Verständnis von Assembler. Für spezielle Probleme oder Optimierung sieht das anders aus, aber wie gesagt gehts mir jetzt mal um den Einstieg.
W.S. schrieb: > Die Tutorials sind in englisch und nicht in C, wie es der TO haben > wollte. Ich bin der TO. Englisch ist kein Problem und das Tutorial ist auch in C. Also für meine Belange ok, falls es inhaltlich dann was taugt. Das wird sich bald zeigen.
Markus L. schrieb: > sprut.de schien mir jetzt auf den ersten Blick veraltet (letzte Änderung > teils 2007). Weiß nicht, ob das für den aktuellen Controller noch taugt. Das hast du richtig erkannt, dein ausgewählter uC ist neuer, wenn auch bereits 10 Jahre alt. Das sieht man immer am "Errata Sheet" des uC Suche: Microchip errata sheet "pic16f1829" Dort schauen wann der erste Fehler berichtet wurde ("Rev. A"); am Endbuchstaben der Datei erkennt man zudem sofort, wieviele Versionen der Errata es gibt. Teils sind bestimmte "Macken" niemals korrigiert worden und nur mittels "work around" um schiffbar. Die Revision des jeweiligen Chips wird im Programmer angezeigt. Gruss von dem der mehr als 35 Befehle kennt.
Markus L. schrieb: > Kann mir jemand ein brauchbares Tutorial für PIC16 in C empfehlen? Das hab ich mit MikroC gelernt. https://www.mikroe.com/mikroc-pic Sehr einfach aufgebaut, super Beispiele und Tutorials direkt in der Hilfe. Ist aber in english und hat ein paar nicht ANSI konforme Zusätze. Aber einer bestimmten Codesize muss du eine Lizenz kaufen.
Markus L. schrieb: > Kann mir jemand ein brauchbares Tutorial für PIC16 in C empfehlen? Der Grund für C ist ja, daß man unabhängig von der Architektur ist. Du kannst also einfach jedes C-Programm nehmen, z.B. für AVR oder 8051, um Dir Anregungen für eigene Projekte zu holen. Nur die Hardwarezugriffe muß man anpassen (Timer, IO-Pins, Interrupts usw.). Das macht man am besten mit dem jeweiligen Datenblatt. Eine Besonderheit der PIC16 ist, daß sie keine Interruptvektoren je Quelle haben. Man muß also erstmal umständlich ausklamüsern, welcher Interrupt denn nun zugeschlagen hat. Eine andere Besonderheit ist, daß sie bei Bitbefehlen das Portlatch mit dem Inhalt des Eingangsregisters schreiben können, was zu unerwarteten Effekten führt.
Peter D. schrieb: > Eine andere Besonderheit ist, daß sie bei Bitbefehlen das Portlatch mit > dem Inhalt des Eingangsregisters schreiben können, was zu unerwarteten > Effekten führt. Quatsch! Sie beschreiben das Port-Register definitiv mit den dort anstehenden Logik-Pegeln. Daher wurde ein Latch-Register eingeführt. Bei den alten Typen ohne, muss das halt gegebenenfalls per SW nachgebildet werden. Portzugriffe sind da halt immer Read-Modify-Write-Befehle, daher das Latch, auf dass das Port-Register NIEMALS schreiben kann.
PS: Dieser "Bug" tritt natürlich nur dann auf, wenn man die GPIOs außerhalb ihrer Elektrischen-Spezifikationen betreibt, überlastet, Fremdspannung, LEDs ohne VR.... #-\
Es gibt inzwischen unzählige Tutorials für die Microchip PICs. Google hilft da gerne. Hier nur ein paar Beispiele: https://www.studentcompanion.co.za/category/tutorials/ https://www.electronicwings.com/pic/inside https://microcontrollerslab.com/category/pic-microcontroller-tutorials/ Auch Youtube hat einiges zu bieten z.B.: https://www.youtube.com/watch?v=KSI6fzOPVz0&list=PLtuqBdbsL-DtSo1a9pS4sLkoaU3Or2pl3
Nach einem Tutorial für einen bestimmten PIC-Typen zu suchen ist übrigens nicht erforderlich, da die wesentlichen Module stets kompatibel sind und sich von der Art und Weise wie man sie programmiert in der Regel nicht unterscheiden.
Markus L. schrieb: > W.S. schrieb: >> die nur C können und die Controller nicht kennen lernen wollen, >> einfach nicht wahrgenommen. > Für den Einstieg ist es halt ein immenser Aufwand und daher > demotivierend. Tja, etwas wirklich zu erlernen, ist zumeist mit Mühen verbunden. Hingegen das was alle machen, selber auch zu machen, ist relativ leicht, denn das kriegt man mit c&p hin. Als ich in den frühen 90er Jahren mit dem damaligen PICALC unzufrieden war, hatte ich mir meinen eigenen Assembler geschrieben und als ich die PICs für Meßzwecke eingesetzt hatte und mir eine Gleitkomma-Arithmetik gefehlt hatte, hab ich mir selbige auch selbst geschrieben. Von wegen "demotivierend". Wenn man hingegen alles bereits vorgekaut haben will, damit man nicht einmal die eigenen Beißerchen zu gebrauchen nötig hat, dann ist wohl jegliche Anstrengung demotivierend. W.S.
Also ich kan wirklich nur empfehlen das Datenblatt zu benutzen. Habe damit in meiner Firma auch alles ohne andere tutorials hingekriegt (PIC24). Die Datenblätter sind sehr gut. Einfach mal auf der Homepage guckn, dort sind auch oft examples.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.