Forum: Mikrocontroller und Digitale Elektronik PIC cc5x Problem mit Konfiguration als Input


von Alex22 (Gast)


Lesenswert?

Hallo,
ich habe heute morgen begonnen mich mit der PIC Programmierung 
auseinander zu setzen.
Ich habe dazu MPLAP (aktuelle Version) und cc5x (aktuelle Version) 
installiert. Leider konnte ich zu cc5x keine Dokumentation im Netz 
finden, ausser einigen guten Beispielen auf cc5x.de. Soweit klappt auch 
alles, ich kann z.B. LED's die an PORTB angeschlossen sind leuchten 
lassen etc. Der Input funktioniert dafür leider gar nicht. Mit diesem 
Beispiel habe ich es mal getestet:

#pragma chip PIC16F627
#pragma config |= 0b.1111.0010.0001  // Konfigurations-Wort

void main( void)
{
  char c;
  TRISB = 0b.0000.0000;
  c=0;
  while(1)
  {
    if(c)
      PORTB.0 = 1;
    if(PORTA.0)
      c=1;
  }
}

Leider passiert nichts, auch wenn ich einen Taster an RA0 betätige...
Habe ich einen Softwarefehler gemacht?
Wie müsste es richtig heißen?

Schöne Grüße!

von Andreas C. (acdc)


Lesenswert?

Hallo Alex !

Die PIC initialisieren die Pins, auf denen u.a. die Analog-Ports liegen, 
gerne als analogen Eingänge, und mit digitalen Eingängen funktioniert 
dann nix. Ob das beim F627 auch so ist, kann Dir das Datenblatt sagen. 
Im übrigen würde ich zur Sicherheit auch ein TRISA einfügen, in dem der 
Pin A.0 als Eingang gesetzt ist.
Welche Fallen die PIC so für Einsteiger bereit halten, kann man ganz gut 
auf www.sprut.de nachlesen !

Gruß, Andreas

P.S. Du weisst schon, dass die LED nicht wieder ausgeht, wenn Du den 
Taster loslässt ? ;-)

von Alex22 (Gast)


Lesenswert?

Hallo Andreas,
du hattest Recht, beim Starten des PIC werden zwar alle Pin's auf Input 
gesetzt, allerdings steht dort ebenfalls:

On RESET, the TRISA register is set to all
inputs. The digital inputs are disabled and
the comparator inputs are forced to
ground to reduce current consumption.

Ich habe jetzt vor die while-Schleife noch

        #asm
    MOVLW 0x07 ;Turn comparators off and
    MOVWF CMCON
  #endasm

eingefügt und jetzt klappt es...
Vielen Dank nochmal, ich frage mich nur, ob es dafür auch einen cc5x 
Befehl gibt...??

Schöne Grüße,
Alex

von thomas (Gast)


Lesenswert?

Hallo Alex

Zitat:
Vielen Dank nochmal, ich frage mich nur, ob es dafür auch einen cc5x
Befehl gibt...??

Na ja, den gibts wirklich. Ziemlich unspektakulär:
CMCON = 7;

Den braucht man auch für andere PIC wie 12F629. Ohne den hat man dort 
das selbe Problem.

Thomas

von Alex22 (Gast)


Lesenswert?

Hallo Thomas,
Danke, da hätte ich auch selbst drauf kommen können....
Gruß,
Alex

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
Noch kein Account? Hier anmelden.