1. Home
  2. Chat
  3. Forum
  4. Kalender
    1. Termine
    2. Karte
  5. Lexikon
    1. Letzte Änderungen
  6. Marktplatz
    1. Bewertungen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Termine
  • Lexikon
  • Marktplatz-Eintrag
  • Seiten
  • Erweiterte Suche
  1. PA-Forum
  2. Forum
  3. Hobby Forum
  4. Hobby-Selbstbau und Reparatur Party-Technik

PIC Programmierung für Einsteiger und andere Interessenten

  • jack-lee
  • 24. Februar 2008 um 21:57
  • jack-lee
    Beiträge
    86
    • 24. Februar 2008 um 21:57
    • #1

    Hallo :grin:

    Da ich mich seit einer Weile mit PICs beschäftige, um damit vielleicht sogar ein Teil des Studiums bezahlen zu können (130€ im Monat), und hier scheinbar einige anwesend sind, die auch gern PICs programmieren wollen, möchte ich gern einen Lernthread aufmachen. (Das war ja jetz n Schachtelsatz..)

    Los gehts:


    Was ist überhaupt ein PIC?

    Ein PIC-Microcontroller, ist eigentlich nix weiter als ein kleiner Computer.
    Er besitzt Speicher, Recheneinheit, I/O Ports und beherscht 35 Befehle (Assembler)
    Er kann von "LED an / LED aus" bis zu komplexen Aufgaben so ziehmlich alles bearbeiten.
    Auch digitale Weichen sind so möglich (aber mit A/D Wandlern, bzw. angepassten PICs)
    Die größe der PICs reicht vom derzeit kleinsten (2,95mm x 2,8mm) bis hin zu recht großen 64 beinigen im SDIP Gehäuse.


    Vorgeplänkel

    Um ein Programm auf einen PIC zu bringen, braucht man eine Entwicklersoftware und meist auch ein Entwicklerboard , letzteres dient zugleich zum Testen der übertragenen Software. Meist sind dort ein paar LEDs und Taster/Schalter installiert um ein Programmtest zu ermöglichen.

    Diese Boards gibts günstig bei Pollin, für die ATMEGA Reihe, aber auch bei Reichelt für ca 30€. Diese unterstützt aber leider nur wenige PICs bis 12Beinen (Für den Anfang schon sehr sehr viel!)

    Die Software kann man sich, meist Gratis, beim Hersteller des Pics herunterladen. Z.b. MPLAB von der Firma Microchip.
    Da Microchip massenweise PICs in jeder Preislage anbietet und diese überall zu bekommen sind, werde ich diese einweisung mit MPLAP gestalten. (PS, sollte beim Installieren auf das Laufwerk C: installiert werden, da es sonst zu Problemen kommen KANN)

    Wenn man sich nun Board und Software besorgt hat, fehlt nur noch der PIC.
    Ich nehme einfach mal den, mit dem ich auch "das Laufen gelernt" habe.
    Den 12F629. Es einer der "kleinen" hat 8 Beine, und somit 6 Ports zur Verfügung. Wenn man einen externen Takt benutzen will, sins noch 4.

    Erste Schritte mit MPLAP

    Wollen wir gleich mal loslegen. Also, man öffne MPLAP, und man verstehe erstmal nicht viel. 2 Offene, leere Fenster, alles in Englisch, und irgendwie kein durchblick.

    Tja, der kommt noch^^

    Das "untitled Workspace" kann man getrost schließen.
    Wir erstellen nun unser erstes Projekt. Also klicken wir oben links auf "Project" und dann auf "new" (Ich gehs ohne Wizard durch, so sieh man die Hintergründe der Initialisierung).
    Es erscheint ein langes Fenster, das einem auffordert den Projektnamen und das entsprechende Verzeichnis anzugeben.
    Ich habe mal "Uebung1" gewählt und mein Verzeichnis in die eigenen Dateien gepackt.

    Anschließend klicken wir auf "ok".
    Jetzt kann es passieren das das Fenster "Output" verschwindet. Wenn das der Fall ist, kann man es auf "View" und "Output" wieder aufrufen.
    In diesem Fenster werden nämlich alle Informationen von MPLAB an den Programmierer angezeigt.

    Jetzt ists aber immernoch nicht anders als vor der Erstellung des neuen Programms. Denkt man.
    Klickt einfach mal auf "View" und dann auf "Projekt". Dann öffnet sich ein Fenster mit einer Verzeichnisstruktur, dessen Verzeichniskopf so heist wie euer erstelltes Projekt.

    Nun klickt an auf "Source Files" in diesem Fenster. Dann auf "File" oben links in der Dateileiste, und dann auf "Add New File to Project".
    Nun geht ein Speichern Fenster auf. Als Dateiname habe ich genommen "Hauptprogramm.asm" Das asm ist wichtig ! und muss extra mit eingebeben werden. Das bedeutet das es eine assambler Datei ist, die vom Compiler übersetzt wird. (So wurde es mir gesagt ^^)

    Nun initieren wir erstmal das ganze.
    Das heist, wir sagen MPLAB was wir für einen PIC verwenden, was er für Eigenschaften hat, und wie die Config Bits, gesetzt werden sollen.

    Die ersten 2 Aufgaben sind einfach. Man fügt in das "Hauptprogramm" ein:

    "list p=12F629"
    und
    "#include <p12F629.inc>"

    Das Nächste, wäre die Configurationsbits zu setzen.
    Bei unserer Aufgabe (und zwangsweise bei dem PIC Startet Kit für 30€) sollte die Zeile so aussehen:

    "__config _cp_off & _wdt_off & _boden_on & _pwrte_on & _intrc_osc_noclkout & _mclre_off & _cpd_off"

    Diese Zeile ist OHNE ! Zeilenumbruch zu schreiben.

    Zur Erklärung:

    cp : cp ist der Code Protection Bit, wenn er of "on" gesetzt wird, kann das im PIC gespeicherte Programm NICHT mehr ausgelesen werden.

    wdt : ist der Watchdog Timer. Wenn er gesetzt ist, überwacht der PIC sich sozusagen selber, er muss nach einer bestimmten Zeit den Timer zurücksetzen, sonst wird der RESET ausgelöst (Programm startet von vorn)

    BODEN : Brown-out Detect Enable Bit . Wenn dieser aktiviert ist, wird der RESET gesetzt und gehalten, wenn die Betriebsspannung unter 2V fällt. Dieses RESET wird wieder aufgehoben wenn die Betriebsspannugn wieder den zulässigen Wert erreicht. Danach startet der PIC mit einer Verzögerung von 72ms wieder und arbeitet das Programm erneut ab.

    pwrte : Power-up Timer Enable. Ist verwand mit der BODEN Funktion. Hiermit wird sichergestellt, das wenn die Betriebsspannung angelegt wird, erst nach einer Verzögerung von 72ms das Programm abgearbeitet wird. Dies sorgt für einen sicheren Anlauf des Programms , beim anlegen der Betriebsspannung.

    intrc_osc_noclkout : Macht nix weiter als den internen 4Mhz Takt zu aktivieren und zu sagen das dieser nicht an einen PIN zum abgriff bereitgestellt werden soll.

    mclre : Master Clear Enable. Wenn dieses Bit 0 ist, wird festgelegt ob PIN 4 ein I/O oder ein Eingang für den RESET sein soll.

    cpd : Ählich dem CP. Dieses Bit schütz den PIC internen EEprom. So wird ungewolltes schreiben verhindert.


    Das wars erstmal für heute. Werde morgen oder so weiter machen, wenn interesse besteht.[/u]

    Headunit: Pc ^^ (5.1)
    LS:11 Jahre alte (noch gute) Samsung PS-340W
    Woofers:2 Geisteckhörner (SPL:107db/W/m)fo:30hz
    Endstufen:Carpower HPB 602 2x60W-1x225W RMS
    Samsung Hifi Anlage mit 2x22W

  • jack-lee
    Beiträge
    86
    • 25. Februar 2008 um 19:45
    • #2

    Wäre lieb wenn von den 64 Leuten die hier reingeschaut haben, wenigstens einer antwortet ^^

    Denn das sieht nicht nach interesse aus :grin:

    Headunit: Pc ^^ (5.1)
    LS:11 Jahre alte (noch gute) Samsung PS-340W
    Woofers:2 Geisteckhörner (SPL:107db/W/m)fo:30hz
    Endstufen:Carpower HPB 602 2x60W-1x225W RMS
    Samsung Hifi Anlage mit 2x22W

  • Michael D
    Beiträge
    721
    • 25. Februar 2008 um 20:48
    • #3

    Ganz ehrlich?
    So ein Tutorial is sicherlich gut gemeint und war sicherlich auch etwas Arbeit. Der Punkt ist nur es gibt im Netz bereits deutlich bessere Anleitungen für sowas. Wir sind hier in einem PA Forum und nicht in einem Elektronikforum wo solche Artikel sicherlich besser aufgehoben werden. Schau mal auf http://www.mikrocontroller.net/, da gibts im Prinzip alles was man braucht: Tutorials für AVR, ARM und FPGA und gleich noch ein passendes Forum dazu. PICs werden nicht nur von mir als grundsätzlcih den AVRs unterlegen angesehen. Es gibt immer mehr Projekte mit AVRs und immer weniger mit PICs.

    http://www.digital-enlightenment.de/
    USB DMX Interface, Mediensteuerung, Demultiplexer, Multiplexer, Dimmer, Relaisboard, Art-Net

  • matthias erb
    Beiträge
    372
    • 25. Februar 2008 um 21:36
    • #4
    Zitat von &quot;Michael D&quot;

    PICs werden nicht nur von mir als grundsätzlcih den AVRs unterlegen angesehen. Es gibt immer mehr Projekte mit AVRs und immer weniger mit PICs.


    Ich habe mich zurückgehalten, bin aber der gleichen Meinung :D

Anstehende Termine

  • PA-Forum Stammtisch LeatCon

    Dienstag, 6. Oktober 2026, 13:00 – 14:00
  • PA-Forum Stammtisch LeatCon

    Mittwoch, 7. Oktober 2026, 13:00 – 14:00
  • PA-Forum Stammtisch LeatCon

    Donnerstag, 8. Oktober 2026, 13:00 – 14:00
  • Competent Person for Event Rigging according to IGVW SQQ 2 | Level 1 | Munich (English)

    Dienstag, 13. Oktober 2026 – Freitag, 23. Oktober 2026
  • Combined seminar for experts in lifting gear and lifting beam systems (AnschlägerPlus)

    Dienstag, 13. Oktober 2026 – Donnerstag, 15. Oktober 2026

Letzte Themen

  1. IHOS DSP 6.4 / Kingray GPA415 FIR Designer .txt Dateiformat?

    ThomasA
    5. Oktober 2026 um 19:16
  2. Neuer Mixer in Sicht: Behringer FLOWCASTER

    funkbrother
    5. Oktober 2026 um 16:21
  3. VI400/600 - Steuerung Local Rack über Mixing Station und Virtual VI ohne Surface?

    robert müller
    4. Oktober 2026 um 23:18
  4. Leatcon 2026 Forumstreffen

    skyper
    3. Oktober 2026 um 10:00
  5. Eminence Kappa 15 (LF) Bauvorschläge für Bassreflex oder Horn

    soundralf
    2. Oktober 2026 um 12:44
  6. Kleine PA und nur Fragen!!!

    Alex Bundschuh
    1. Oktober 2026 um 18:47
  7. Welche DI-Box/Line-Übertrager für Laptop/Kopfhörerausgang?

    wusel123
    30. September 2026 um 12:29
  8. Ersatzteilversorgung Lautsprecher (speziell Seeburg A3 MKII)

    Hanseat
    29. September 2026 um 18:25
  9. Neues Online-Simulationstool für Treiber / Gehäuse / Leistung / Filter

    Blancblue
    29. September 2026 um 13:16
  10. Subwoofer 80cm x 40cm x 80cm

    zegi
    28. September 2026 um 17:06
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™