Forum: Mikrocontroller und Digitale Elektronik Problem mit PIC16F628A


von SNI (Gast)


Lesenswert?

Hallo,

bin neu in diesem Gebietund kenn mich noch nicht so gut mit 
Microcontrollern aus! Wollte als test nur mehrere Dioden zum leuchten 
bringen und hab den PIC16F628A mit folgendem Programm in MPLAB 
beschrieben!

------------------------------------------------------------------------ 
------
void main(void)
    {
         TRISA = 0b.0000.0000;
         PORTA = 0b.0000.1010;
  TRISB = 0b.0000.0000;
         PORTB = 0b.0101.1010;
    }
------------------------------------------------------------------------ 
------

aber irgendwie funktioniert das nicht! mit dem PIC 16F84A funktioniert 
das!

muss man bei dem dem PIC 16F628A irgend welche besonderen einstellungen 
beim brennen vornehmen?

Schon mal danke im voraus

MFG SNI

von S. W. (Gast)


Lesenswert?

------------------------------------------------------------------------ 
------
> void main(void)
>     {
>          TRISA = 0b.0000.0000;
>          PORTA = 0b.0000.1010;
>          TRISB = 0b.0000.0000;
>          PORTB = 0b.0101.1010;
>     }
> ------------------------------------------------------------------------ ------

Ist das wirklich so, dass da noch zusätzliche Punkte drin sein müssen?

Ansonsten gilt des, die Fuses im Auge zu haben.

von Gast (Gast)


Lesenswert?

Das mit den Punkten wundert micht jetzt aber auch sehr.

von Gerhard (Gast)


Lesenswert?

Die PIC16F627/628 haben einen Komparator. Den hat der F84 nicht. Nach 
Power up ist PORTA als analog-in konfiguriert.

Damit PORTA digital arbeitet brauchts noch den Befehl
CMCON = 7;

siehe datenblatt Seite 61

Gerhard

von Timo Z. (typic)


Lesenswert?

HI SNI

Also diese Punkte sind echt komisch. Lass sie einfach weg, geht ohne. So 
kannst du schon mal eine mögliche Fehlerquelle eliminieren.

Und dann must du gleich am Anfang die analogen Analog-Eingänge auf 
Digital umschalten. Denn im Vergleich zu 16f84 ist PORTA nach dem Reset 
auf ADC eingestellt (Analog-Digital-Converter). Um PORTA zu benutzen 
musst du auf jeden Fall am Anfang auf digital umschalten.
Das geht so.

Im Assembler:

    BSF CMCON, CM0
    BSF CMCON, CM1
    BSF CMCON, CM2

In C entsprechend !!  (Beachte auch die anderen Bits im CMCON)

Schalte auch die Interupts am besten aus
Das ist das GIE Bit.


PS: Wenn du Anfänger bist, programmiere auch einmal im Assembler. Es ist 
sehr einfach und man kann sich beim Assembler mehr aus wesentliche 
konzentrieren.

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


Lesenswert?

richtig, nachdem du das CMCON Register konfiguriert hast müsste es 
klappen. Ein while(1); am Ende deines Programms wäre auch nicht 
verkehrt, da der Mikrocontroller sonst glaube ich wieder von vorne 
anfängt....

von SNI (Gast)


Lesenswert?

Hallo! hab das ausprobiert und das klappt! danke erstmal

MFG SNI

von Manuel Wagesreither (Gast)


Lesenswert?

Nur so aus Interesse: Welchen Compiler hast du benutzt?

Oder ist bei MPLAB seit neuestem einer für die PIC16 dabei?

von SNI (Gast)


Lesenswert?

CC5X Compiler!

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.