www.mikrocontroller.net

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


Autor: Alex22 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Andreas Croonenbroeck (acdc)
Datum:

Bewertung
0 lesenswert
nicht 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 ? ;-)

Autor: Alex22 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex22 (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.