Forum: Mikrocontroller und Digitale Elektronik PIC12F675 GPIO - Ausgänge lassen sich nicht schalten nachdem der A/D eingeschalten wird


von Ivan D. (ivande)


Lesenswert?

Hallo,
nachdem ich den A/D-Wandler einschalte bringe ich nur mehr den Ausgang 
GPIO5 auf 1-Signal!
woran kann dies liegen?
MPLABX 1.41 mit Simulator
Gruß Ivan
1
 
2
// PIC12F675
3
int main(void)
4
{
5
    
6
    TRISIO =    0b00001001;   // GP0 als Eingang verwenden ; 0 = Output 1 = Input
7
    ANSEL =     0b01100001;    // ANS0 als Analogen Eingang ; 1 = analog 0 = digital
8
    CMCON =     0b00000111;     // Komparator aus
9
    GPIO = 0xFF;// Digital-Ausgänge gehen auf 1
10
    ADCON0 = 0b00000001; // Einschalten des A/D- Wandlers
11
    GPIO = 0xFF; // Hier geht nur mehr GPIO5 auf 1 alle anderen Ausgänge bleiben auf 0

von piccer (Gast)


Lesenswert?

Um GPIO zu initialisieren, müssen die erst mal auf 0x00 gesetzt werden. 
Und GPIO5 (und auch GPIO0 und GPIO3) ist als analoger Eingang definiert:

> ANSEL = 0b01100001; // ANS0 als Analogen Eingang ; 1 = analog 0 = digital

von Ivan D. (ivande)


Lesenswert?

danke für die Antwort..
ich habe den Code und die Kommentare noch einmal überarbeitet.. um das 
(mein)Problem besser verständlich zu machen.
Gruß Ivan
1
    TRISIO =    0b00001001;   // GPIO0 und GPIO3 als Eingang verwenden ; 0 = Output 1 = Input (Port3 kann nur Eingang sein)
2
    ANSEL =     0b01100001;    // FOSC/64 und ANS0 als Analogen Eingang ; 1 = analog 0 = digital ; ADCS=0b110 - 
3
// ANSEL bits: 7—keine Funktion=0, bit6-ADCS2=1, 5-ADCS1=1, 4-ADCS0=0, 3-ANS3=0, 2-ANS2=0, 1-ANS1=0, 0-ANS0=1, 
4
    CMCON =     0b00000111;  // Komparator aus
5
    GPIO = 0x00;  // alle Ausgänge auf 0 - alles ok
6
    GPIO = 0xFF;  // die Ausgänge GPIO5, GPIO4, GPIO2, GPIO1, gehen auf 1 - alles ok GPIO0 = Analog GPI3 = digitaler Eingang 
7
    ADCON0 = 0b00000001; // Nur Einschalten des A/D-Wandler: GPIO5 bleibt auf 1 alle anderen Ausgänge gehen auf 0- keine Ahnung wieso???
8
    GPIO = 0x00;  // alle Ausgänge auf 0 - alles ok
9
    GPIO = 0xFF;  // nur der GPIO5 geht auf 1 - GPIO4, GPIO2, GPIO1 bleiben leider auf 0- und ich verstehe nicht wieso?

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal ein Testprogramm, was GPIO 0 auf
Analog schaltet. LEDs leuchten bei Port 1,2,4 und 5.
Sollte es nicht gehen, dann stimmt bei der Hardware
was nicht.

von Ivan D. (ivande)


Lesenswert?

Hallo, danke erstmal für die Antwort,

ich habe die Harware nicht aufgebaut, die ganze Sache funktioniert mit 
der Simulation von MPLABX1.41 nicht!

Gruß Ivan

von ivande (Gast)


Lesenswert?

Also wenn die das ganze an der Hardware teste schalten die Ausgänge.. im 
Simulator von Mplap 1.41 nicht..
hmm.. Toller Simulator

von tt2t (Gast)


Lesenswert?


von Erich (Gast)


Lesenswert?

>ich habe die Harware nicht aufgebaut,
>die ganze Sache funktioniert mit
>der Simulation von MPLABX1.41 nicht

Es sollte langsam bekannt sein, daß man so'n Zeug wo Interrupts und 
Echtzeitverhalten, A/D Eingänge etc.
AUF DER RICHTIGEN REALEN HW prüfen muss, mit'm Debugger, nicht mit dem 
Simulator.
Auch den Autoführerschein macht man mit richtigem Auto.

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.