Forum: Mikrocontroller und Digitale Elektronik Fehler in Miniprogramm


von Mino (Gast)


Lesenswert?

Hallo zusammen,

nachdem ich nun endlich meine Hardware soweit am laufen habe, kommt auch 
schon das nächste Problem.....nämlich die Software :-)

Folgendes Miniprogramm soll mal als Einstieg dienen:

#pragma chip PIC16F627
#pragma config = bin(11.1111.0111.0001)

void main()
{
TRISB=0b00000000;         // Alles Ausgänge

  if (PORTA.0==1)
  {
  PORTB.0=1;
  }
  else
  {
  PORTB.0=0;
  }
}

Funktion soll sein wenn Taste1 gedrückt soll LED1 leuchten.
An PortA sind von 0-3 drei Taster angeschlossen
An PortB sind von 0-5 sechs LEDs angeschlossen

Leider leuchtet garnix. Die Hardware ist okay, Beispielprogramme die zum 
Board dazugeliefert wurden funktionieren (leider sind diese in ASM 
geschrieben).

PortA ist doch soweit ich das nachgelesen haben immer als Eingang 
geschaltet, oder liegt daran?

Bitte um Hilfe.....


Mino

von Frank L. (hermastersvoice)


Lesenswert?

vielleicht wär ne Schleife nicht verkehrt? Nur sone Vermutung.

bye

Frank

von Mino (Gast)


Lesenswert?

Hallo,

ist´s denn so jetzt richtig:

#pragma chip PIC16F627
#pragma config = bin(11.1111.0111.0001)

void main()
{
  TRISB=0b00000000;        // Alles Ausgänge
  while(1)
  {
    if (PORTA.0==1)
    {
    PORTB.0=1;
    }
    else
    {
    PORTB.0=0;
    }
  }
}

Tut aber leider trotzdem nicht :-(

Bin eben eine kontinuierliche Programmabarbeitung gewohnt (z.B. S7, 
falls das bekannt ist....)

Schönen Abend

Mino

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Hallo Mino,

Das sollte aber so klappen.
Hast du mal einen Schaltplan deines Aufbaus?

Schöne Grüße,
Alex

P.S. Wenn du einfach nur PORTB.0 = 1; machst (ohne die Taster-Abfrage) 
dann leuchtet die LED auch?

von holger (Gast)


Lesenswert?

Mach mal am Anfang deines Programmes das hier:

 CMCON=0b00000111;

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Jop, Holger hat Recht. Ich hatte vergessen, dass RA0 ein Compare-Eingang 
ist.

von holger (Gast)


Lesenswert?

>Jop, Holger hat Recht. Ich hatte vergessen, dass RA0 ein Compare-Eingang

Kleine Richtigstellung: RA0 ist ein Eingang des Analog Komparators ;)

von Mino (Gast)


Lesenswert?

Hallo zusammen,

ich sag nur "Vielen Dank !!!"

Mit der Zeile CMCON=0b00000111; ist der "Fehler" behoben.

Jetzt funktioniert`s :-)



Schönen Abend

Mino

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Weist du inzwischen auch, warum du die 3 letzten Bits von CMCON auf "1" 
setzen musstest?

Schöne Grüße,
Alex

von Mino (Gast)


Lesenswert?

Hallo,

hab´s soweit verstanden. Was mir passiert ist wird auf einigen I-Net 
Seiten als "Analogfalle" bezeichnet.....passender Ausdruck.

Mir war bist dato nicht klar vieviele Register es zur Konfiguration von 
allem möglichen gibt. Ich habe mich nur auf die Umschaltung zw. Eingang 
und Ausgang  konzentriert.
Wenn man sich jedoch einige Beispielprogramme ansieht wird klar das es 
vor dem eigentlichen Programm ganz schön viel zu erledigen gibt :-)

Kenn jemand eigentlich eine gut leserliche Übersicht (also nicht gerade 
das Datenblatt vom Hersteller) über alle Register vom PIC16F627.
Finde im I-Net nur immer Bruchstücke. Gut erklärt finde ich die Sache 
z.B. hier:

http://www.sprut.de/electronic/pic/grund/inout.htm



Schöne Grüße

Mino

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.