PIC-Programmierung für Einsteiger mit BASIC

  • Hallo zusammen,


    PIC-Mikrocontroller lassen sich relativ einfach selbst programmieren, wenn man Grundkenntnisse in BASIC oder einer anderen Programmiersprache besitzt. Um auf den Geschmack der PIC-Programmierung zu kommen, muss man noch nicht einmal Geld ausgeben. Für den absoluten Anfänger möchte ich hier ein paar grundlegende Tipps geben, wie man vorzugehen hat.


    Unter http://www.il-online.de/il_indx1.htm findet man im Downloadbereich einen kostenlosen BASIC-Compiler von DD4GS für den PIC 16F84(A). Diese Demo-Version kann zwar nicht den vollen Umfang der Leistungsfähigkeit des inzwischen schon in die Jahre gekommenen 16F84A ausschöpfen, zum Üben und für kleinere Projekte reicht es aber. Mit der beigefügten Hilfe kommt man gut klar.


    Einfache Aufgaben wie z.B. die Steuerlogik für die Bandumschaltung eines QRP-TRX, ein automatischer Rufzeichengebers in CW oder die Verwirklichung eines Sequenzers lassen sich damit selbst von Anfängern relativ schnell in den Griff bekommen.


    Unter http://www.janson-soft.de/amateurfunk/zaehler02.txt
    habe ich mal ein einfaches Beispiel-Listing (Quellcode) in BASIC abgelegt. Es lässt zwei LEDs abwechselnd blinken und auf der Punktmatrixanzeige kann man die verstrichenen Sekunden seit dem Einschalten des Programms ablesen. Man könnte das Programm zu einem Timer erweitern, um damit z.B. die Leiterplattenbelichtung zu steuern. Nachfolgend ein Bild meines Versuchsaufbaus, der gleichzeitig als Experimentierplatine dient. Die Punktmatrixanzeige habe ich steckbar befestigt.



    Wie mann die Punktmatrixanzeige verdrahtet, ist in der Hilfe des BASIC-Compilers beschrieben.


    Wie man die beiden LEDs anschließt und grundlegende Informationen zur Beschaltung der PICs findet man unter http://www.sprut.de/electronic/pic/index.htm beschrieben. Für die Einarbeitung erleichtert es ungemein, wenn man weiß, dass man bestimmte Pins - die Ports - des PICs softwaremäßig entweder als Eingänge oder Ausgänge beschalten kann (I/O-Ports = Input/Output-Ports).


    Um die Software, die in diesem Fall Firmware heißt, in den PIC zu bekommen, muss man den BASIC-Quelltext in einen HEX-Code umwandeln, was man mit dem Compiler vornimmt. Der HEX-Code besteht aus einer für die allermeisten Menschen völlig unverständlichen Zahlen- und Buchstabenkombination.


    Dieser HEX-Code wird nun mit einem Brenner in den PIC gebrannt. Dieses Brennen nennt man auch Flashen, da man die PICs der F-Serie fast beliebig oft überschreiben kann, weshalb die PICs im Hobbybereich so beliebt sind. Unter http://www.janson-soft.de/pic/pic-dl.htm ist ein einfacher Brenner beschrieben, den man mit der seriellen Schnittstelle des Computers verbindet. Auf dieser Seite ist auch ein Link zu einer kostenlosen Brenner-Software enthalten.


    Wenn ich dem Anfänger mit diesen kurzen und einleitenden Hinweisen Mut machen konnte, sich an die PIC-Programmierung zu wagen, habe ich mein Ziel erreicht.

    vy 73 de Volker SM5ZBS

    5 Mal editiert, zuletzt von SM5ZBS ()

  • ich kann nur bestätigen, JDM-Prommer und IC-Prog sind einfach nur Genial
    ich benutz das zeug seit mehreren Jahren, I²C-EEprom schreiben , pic proggen alles kein thema
    Mit einfachsten Mitteln super ergebnisse, leider sterben die echten seriellen schnittstellen aus , wer noch sowaqs hat: das mutiert zu Goldstaub


    Gela



    PS: damit kann man auch einfach testen ob man z.b. den PIC in irgendwelchen bausätzen "gehimmelt" hat

    Einmal editiert, zuletzt von DL8WIZ ()

  • Zitat

    Original von dh7uaf
    Hallo,


    unter http://www.sprut.de/electronic…renner/index.htm#brenner8 ist ein PIC-Brenner für den USB-Anschluss beschrieben. Um diesen nachbauen zu können, braucht man allerdings einen bereits vorhandenen Brenner, um den dafür notwendigen PIC brennen zu können. Da beißt sich die Katze in den Schwanz.


    Kein wirkliches Problem.
    Wenn ihr mir das Hexfile und den PIC schickt, dann brennen wir euch den PIC. Wir sind zwar immer knapp an Zeit, aber wir helfen wo wir können.
    Unser Galep 4 kann so ziemlich alles brennen. (da wir nicht alle Adapter haben: bis 40 PIN DIL und PLCC


    Ach, bitte Rückporto beilegen , wir helfen zwar gerne, aber reich sind wir nicht 8)

    73/2 de Peter, DL2FI
    Proud member of Second Class Operators Club SOC and Flying Pig Zapper #OOO (Certificated Kit Destroyer)

  • Hallo,


    ja, dann steht dem Brennen ja nichts mehr im Wege. Im Internet gibt es bereits fertige Software als Hex-Code für den PIC16F84A. Hier eine Auswahl:



    01. Digitales LC-Meter: http://ironbark.bendigo.latrobe.edu.au/%7Erice/lc/


    02. LC-Meter: http://www.sprut.de/electronic…jekte/lcmeter/lcmeter.htm


    03. 50-MHZ-Zähler: http://www.ing-pfenninger.ch/freq.html

    04. DCF77-Uhr:
    http://ulegan.de/dcf/picdcf.htm


    05. CW-Keyer: http://people.freenet.de/dl4yhf/pic_key.html


    06. Ventilator-Uhr (völlig abgedreht): http://www.metricmind.com/clock/clock.htm


    07. Temperatur-Messung: http://www.machinegrid.com/content/view/51/108/


    08. Rotorsteuerung f. Easycomm II: http://vbk.campus.luth.se/~vbk/radio/radio.html


    09. RTTY-Dekoder: http://rxcontrol.free.fr/PicTerm/index.html


    10. CW-Dekoder (Hex. a. Anfr.): http://digilander.libero.it/ik3oil/_private/qst_cw.pdf



    Meistens fängt man ja mit dem Brennen vorhandener Programme an und wenn das funktioniert, wagt man sich an die Programmierung. 01, 03 und 04 habe ich selbst mit Erfolg nachgebaut.

    vy 73 de Volker SM5ZBS

    2 Mal editiert, zuletzt von SM5ZBS ()


  • Na, Na,


    da muss ich wohl die Notbremse ziehen!!! E s ging um das Brennen des Chips für den eigenen Brenner!!! Due erinnerst dich, die Katze, die sich in den Schwanz beisst. Nun kommt bloss nich auf die Idee, wir hätten Zeit jeden PIC zu brennen, für den im Internet ein Programm existiert :(

    73/2 de Peter, DL2FI
    Proud member of Second Class Operators Club SOC and Flying Pig Zapper #OOO (Certificated Kit Destroyer)

  • Hallo Peter,


    es war nicht meine Absicht, dass du säckeweise mit PICs vom Typ 16F84(A) überschwemmt wirst. Alleine schon die Bereitstellung und Betreuung des Forums verdient ein dickes Danke schön an Dich.


    Sicher kann man davon ausgehen, dass in jedem OV oder Nachbar-OV jemand ist, der diesen sehr weit verbreiteten 16F84 oder 16F84A brennen kann. Außerdem sind Brenner für diesen Typ sehr einfach aufzubauen. Im Internet gibt es Hunderte von Bauanleitungen dafür.


    Es gibt noch ein paar Punkte zu beachten:


    1. Den 16F84A gibt es mit 4 MHz oder 10 MHz Taktfrequenz. Der für 4 MHz ist natürlich etwas billiger, den mit 10 MHz kann man für alle Projekte verwenden. Den 16F84A kann man immer statt des 16F84 nehmen, wenn die Taktfrequenz ausreicht.


    2. Nicht immer stimmen die Konfigurationseinstellungen ( http://www.sprut.de/electronic/pic/config/config.htm ) im Hex-Code oder sie werden von der Brennersoftware nicht richtig erkannt. Die Ursache kann im Compiler und/oder in der Brennersoftware liegen. Wenn nämlich fälschlicherweise Watchdog aktiviert ist, funktioniert oft das ganze Programm nicht mehr. Dasselbe passiert, wenn man den falschen Taktgenerator wählt.


    3. Code Protection sollte man vermeiden. Die Aktivierung des Ausleseschutzes kann Ärger bereiten, wenn nicht mit der offiziell vorgeschriebenen Brennspannung gearbeitet wird. Die Brenner an der seriellen Schnittstelle arbeiten oft mit einer zu niedrigen Brennspannung. Trotzdem funktioniert fast immer das Brennen.

    vy 73 de Volker SM5ZBS

    Einmal editiert, zuletzt von SM5ZBS ()



  • War mir schon klar, dass du das nicht so gemein hast, aber in diesem Fall wollte ich auf Nummer Sicher gehen 8)


    16F84A haben wir sogar am Lager, wir können auch den Assembler file compilieren

    73/2 de Peter, DL2FI
    Proud member of Second Class Operators Club SOC and Flying Pig Zapper #OOO (Certificated Kit Destroyer)