mikrocontroller.net

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


Autor: Anton Vogt (anton_elfi)
Datum:

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

Autor: Erhard (Gast)
Datum:

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

Autor: Michael H. (morph1)
Datum:

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

WDT?

Autor: Chris (Gast)
Datum:

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

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

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

Autor: chris (Gast)
Datum:

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

Autor: Anton Vogt (anton_elfi)
Datum:

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

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.