-         

Ergebnis 1 bis 5 von 5

Thema: Pic 16F627A Programmierfehler in C? (Hitec-C)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2011
    Ort
    Hameln, Germany
    Beiträge
    20

    Pic 16F627A Programmierfehler in C? (Hitec-C)

    Anzeige

    Hallo zusammen,

    ich habe schon wieder mal n problemchen...

    Ich habe eine kleine Testplatine gebaut um einen motor Per PWM anzusteuern. Kleines Testprogramm geschrieben - läuft nicht. Kann mir jemand sagen woran es liegen könnte? Die Tasten "anaus" für start&stopp und "schnell" für das drehzahlsignal(1 linkslauf,0 rechtslauf) reagieren einfach nicht...

    Code:
    /*  * File:   main.c
     * Author: Ben
     *
     * Created on 9. April 2014, 20:55
     */
    
    
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <htc.h>
    
    
    #define _XTAL_FREQ 20000000
    
    
    #define PWM     PORTBbits.RB3   //PWM out
    #define LR      PORTBbits.RB7   //Signal für richtung
    #define CHA     PORTBbits.RB1   //Lichtschranke teilA
    #define CHB     PORTBbits.RB2   //Lichtschranke TeilB
    #define REF     PORTBbits.RB4   //Fork 1 - REF
    #define LMI     PORTBbits.RB5   //Fork 2 - LMI
    #define END     PORTBbits.RB6   //Fork 3 - END
    #define ANAUS   PORTBbits.RB0   //Start/Stopp
    #define schnell PORTAbits.RA1   //Schneller
    #define langsam PORTAbits.RA2   //Signal links/rechtslauf
    
    
    char istaus;
    
    
    /*
     * 
     */
    __CONFIG(FOSC_HS  & WDTE_OFF & MCLRE_OFF & LVP_OFF & CP_OFF & BOREN_OFF);
    
    
    void pwm_an(void);
    void pwm_aus(void);
    
    
    //void interrupt start_int (void){
    
    
      
    
    
    //}
    
    
    void init(void);
    
    
    void main(void){
        init();
        while(1){
            if ((ANAUS == 1) && (istaus == 1)){
                pwm_an();
                __delay_ms(30);
            }
            if ((ANAUS == 1) && (istaus == 0)){
                pwm_aus();
                __delay_ms(30);
            }
    
    
            if (schnell == 1){
                LR = !LR;
                __delay_ms(30);
            }
        }
    
    
    }
    
    
    void pwm_an(void){
        CCP1CON = 0b1100;
        istaus = 0;
    }
    
    
    void pwm_aus(void){
        CCP1CON = 0x00;
        istaus = 1;
    }
    
    
    
    
    void init(void){
    
    
        TRISA = 0b000110;   //Ein-Ausgänge einstellen
        TRISB = 0b01110111; //Ein-Ausgänge einstellen
        CCP1CON = 0x00;     //PWM aus
        INTE = 1;           //Int an
        GIE = 1;            //Int an
        PEIE = 1;           //Int an
        RBIE = 1;           //Int an bei RB 4..7
        PORTA = 0x00;       //Ausgänge 0setzen
        PORTB = 0x00;       //Ausgänge 0setzen
        T2CKPS0 = 1;        //Vorteiler 4:1
        T2CKPS1 = 0;        //Vorteiler 4:1
        TMR2ON = 1;         //Timer2 an (fuer pwm)
        PR2 = 0x7C;         //Tacktung
        CCPR1L = 0x3E;      //Tastverhältnis
        CMCON = 0x07;       //Comparator aus
        istaus = 1;
        di();               //alle interrupts deaktivieren
        LR = 1;
                    
        
    
    
    }
    Danke schonmal für hilfe und ideen

    Gruß
    Frodo

  2. #2
    RN-Premium User Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    458
    Blog-Einträge
    16
    Zitat Zitat von Frodo89 Beitrag anzeigen
    Kleines Testprogramm geschrieben - läuft nicht.
    Das ist normal, Software läuft fast nie auf Anhieb. Deshalb kommt das Testen nach dem Programmieren.
    Zitat Zitat von Frodo89 Beitrag anzeigen
    Kann mir jemand sagen woran es liegen könnte?
    Nö, dafür müsstest du das Problem zunächstmal etwas einkreisen. Wie weit bist du mit Debuggen gekommen? Läuft der Controller überhaupt an?

  3. #3
    Hallo Frodo89,

    wo wird denn in deiner Software die PWM-Frequenze eingestellt?

    Gruß

    Wolfgang

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    24558
    Alter
    39
    Beiträge
    1.356
    Frohe Ostern
    "Es ist schwierig, jemanden dazu zu bringen, etwas zu verstehen, wenn er sein Gehalt dafür bekommt, dass er es nicht versteht" [Upton Sinclair] gez-boykott

  5. #5
    Hallo Frodo,

    tut sich irgend was?
    Fehlt vielleicht der Widerstand vom MCLR an VDD ?

    Gruß
    Wolfgang

Ähnliche Themen

  1. [ERLEDIGT] PIC 16F627A interrupt
    Von Frodo89 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 08.04.2014, 16:32
  2. Hier ist der Wurm drin (Programmierfehler)?
    Von outdoorgamer im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 23.07.2006, 16:12
  3. Programmierfehler ode was?
    Von kungfuman im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 22.06.2006, 13:39
  4. Problem mit dem Asuro(Programmierfehler?!)
    Von fluxim im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 05.02.2006, 03:25
  5. Programmierfehler ATMega128
    Von mikroxyz im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 05.07.2005, 13:09

Berechtigungen

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