Forum: Mikrocontroller und Digitale Elektronik PIC12F675 A0/A1 Output schaltet immer aus


von Anton V. (anton_elfi)


Lesenswert?

Hallo zusammen,

wahrscheinlich ist das Thema hier schon x mal durch, ich krieg es 
trotzdem nicht hin...

Habe ein recht langes Programm, bis auf A0 und A1 machen auch alle Ports 
was sie sollen. Die schalten sich aus, so dass ich ne ungewollte PWM 
bekomme.

Jetzt habe ich ein Testprogramm geschrieben, um das ganze von vorn 
anzugehen:

Ich versuche, mit einem PIC12f675 einfach mal alle Ports (außer A3, I 
know...) auf 1 zu schalten. (interner RC)

Habe hier einen PCW PIC C Compiler, bin in assembler nich so firm...

Ich muss ja Komparator und Analog ausschalten. Da ich dem Compiler mit 
seinen Fuses nicht so ganz traue, hab ich das mal in c nachgeschrieben:

void main (){

GPIO &= 0x00;     // Alles aus
CMCON |= 0x07;    // Komparator off
STATUS |= 0x10;   // wechsel auf Bank 1
ANSEL = 0;        // Analog off
TRISIO = 0;       // alles Outputs
STATUS &= ~0x10;  // wieder auf Bank 0 wechseln

GPIO = 0xff;      // alle Ports an
}

leider tut sich da gar nix mehr...

Hab jemand eine Idee, was genau mit den beiden Ports los sein kann?

Grüße & Danke,
anton_elfi

von Erhard (Gast)


Lesenswert?

Bin zwar kein C-Mensch, aber du musst um auf Bank 0 zu wechseln Status 
löschen (oder das Bit RP0).

Jetzt bleibst du ja auf Bank 1.

von Michael H. (morph1)


Lesenswert?

bei keinem vernünftigen C-compiler muss man sich um die bänke kümmern, 
das macht sogar der cc5x von selbst.

WDT?

von Chris (Gast)


Lesenswert?

Kennt dein Compiler kein RP0 ?
RP0 ist 0x20 , damit wechselst du dann zu bank1
ein
STATUS|=0x10 ist in wirklichkeit eine NOP, da du dieses Bit nicht 
schreiben darfst, es ist nur Read Only, zumindest in der Praxis.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Die Fuses (bei PIC: CONFIG) kannst Du im Programm nicht beeinflussen.

In Deinem Programm kann ich keine Stelle finden, wo Du die Ausgänge auf 
1 schaltest.

von chris (Gast)


Lesenswert?

doch , GPIO=xxx
aber er schaltet nicht auf bank1.

von Anton V. (anton_elfi)


Lesenswert?

Hallo zusammen,

herzlichen Dank und ein fettes Lob an dieses Forum, mit so vielen 
Antworten hatte ich nicht gerechnet :-)

Freitag Nacht war es dann doch etwas spät, ich konnte wohl nicht mehr 
zählen...

Natürlich muss Bit 5 vom Status Register auf 1 gesetzt werden, um auf 
Bank1 zu kommen. (also STATUS |= 0x20;)

Damit ging es dann!

Na ja, der Compiler lässt etwas zu wünschen übrig, ich dachte der 
erledigt diese Dinge in seinem Setup-Wizzard.... Also doch lieber alles 
selber machen bzw. kontrollieren!

Nochmal besten Dank & viele Grüße!
anton_elfi

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.