- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: PIC16F628 Programm läuft nicht

  1. #1

    PIC16F628 Programm läuft nicht

    Anzeige

    Powerstation Test
    Hallo ich bin am Verzweifeln:

    Ich habe folgende kleine Schaltung mit dem PIC16F628 aufgebaut:

    3,3V SPG-Reg als Versorgung
    An RB0-RB3 je ein 1k Widerstand und dann eine LED auf Masse
    An RB4-RB7 je einen 4k7 Pullup und einen Schalter auf Masse

    So alles was ich (momentan noch) will, ist über die Schalter die LEDS
    an und aus zu schalten. Als Oszilator soll der Interne OSC des Pics
    verwendet werden.

    Hierzu habe ich ein kleines C-Programm (siehe ganz unten) für den
    CC5X-Compiler geschrieben mit MPLAB und dem CC5X das HEX-File generiert und dieses dann mit dem PIC Brenner5 Rev 5a von Sprut auf den PIC gebrannt.
    (Folgende Configuration: INTRC CLKOUT - Watchdog OFF - Power Up Timer ON - Brown Out Disabled - Master Clear Enabled - Low Voltage Program Disabled - Data EE Read Protect Disabled - Code Protect OFF)

    Danach kommt der PIC auf die Schaltung aber irgendwie geht da nix an
    und aus.

    Ich kann mir nicht erklären warum nicht. Stimmen evtl. die
    Einstellungen nicht oder ist ein fehler im Programm?

    Es wäre nett wenn Ihr mir weiterhelfen könntet.

    Vielen Dank

    Tom


    Hier noch schnell das Programm:

    /* Funktionsprototypen */
    void Startup(void);

    /*--Globale Variablen---*/

    /* Definitionen für die Belegung der IO-Ports */
    #pragma bit S1 @ PORTB.7; /* Schalter 1 */
    #pragma bit S2 @ PORTB.6; /* Schalter 2 */
    #pragma bit S3 @ PORTB.5; /* Schalter 3 */
    #pragma bit S4 @ PORTB.4; /* Schalter 4 */

    #pragma bit L1 @ PORTB.3; /* LED 1 */
    #pragma bit L2 @ PORTB.2; /* LED 2 */
    #pragma bit L3 @ PORTB.1; /* LED 3 */
    #pragma bit L4 @ PORTB.0; /* LED 4 */


    /* Startup Code - Initialisierungen */
    void Startup(void)

    PORTB = 0b.0000.0000;
    TRISB = 0b.1111.0000; /* Pin 4-7 als Eingang (1) Pins 0-3 als
    Ausgang (0) */

    return;

    }

    /*===== Hauptprogramm ===== */

    void main(void)
    {

    Startup();

    /* Endlosschleife - Main Loop */

    for(;;)
    {
    /* Schalter-Port ist pulled-up -> Wenn der Schalter
    betätigt ist, liegt der Port auf 0 = Low */

    if (!S1)
    L1 = 1;
    else if (S1)
    L1 = 0;
    if (!S2)
    L2 = 1;
    else if (S2)
    L2 = 0;
    if (!S3)
    L3 = 1;
    else if (S3)
    L3 = 0;
    if (!S4)
    L2 = 1;
    else if (S4)
    L2 = 0;

    }
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    75
    Beiträge
    2.063
    Hallo Tom,
    die Ausgänge des PIC sind Open-Collektor-Ausgänge, schalten also nur den GND durch. An einigen Pins können interne PullUp-Widerstände per Software enabled werden, die aber für den LED-Strom kaum brauchbar sind.
    Entweder verlegst Du die LED's mit Vorwiderständen in Richtung Plus (LED-Polarität beachten !) oder Du verwendest externe PullUp-Widerstände und Treiber in Form von Transistoren oder Treiber-IC's wie z.B. ULN280x / UDN298x.
    PS: mit einem ULN280x hättest Du natürlich das gleiche Problem, wie mit dem PIC-Ausgang
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo Tom Seiph!

    Wenn Du ein Reset-Taster angeschlossen hast, dann muss er durch pull-up ca. 10k an +Vcc angeschlossen sein. Wenn nicht, ändere Deine Konfiguration auf _MCLR_OFF.

    MfG

  4. #4
    Danke für Eure Antworten.

    Also an der Hardware liegt es nicht, ich habe das Hex-File mit dem mikroC Compiler (hier wurden nur die Definitionen an den Compiler angepasst) erzeugt und dies hat einwandfrei funktioniert. Es muss also was am Code nicht stimmen.

    Ich benötige auch den CCX5 Compiler, da es mit diesem möglich ist auch größerer Programme zu generieren. Der mikroC ist leider beschränkt und ich denke nicht, dass der Trick mit dem Zusammenfügen mehrerer Dateien wie beim CCX5 funktioniert.

    Hat einer eine Idee was am Code nicht stimmen könnte?

    Danke

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen