Hallo,
ich habe hier das Problem, dass beim oben genannten PIC 18F23K22 der
MCLR-Eingang (RE3) nicht als digitaler Eingang funktioniert.
Ich habe das Konfigurationsbit entsprechend gesetzt:
#pragma config MCLRE = INTMCLR // MCLR Pin Enable bit (RE3 input pin
enabled; MCLR disabled)
Trotzdem funktioniert mein Programm nur, wenn der Eingang offen ist. Es
handelt sich bei dem Programm um eine Lichtsteuerung, die in einer
Endlosschleife läuft und über den Servokanal eines RC-Empfängers
gesteuert werden soll. Folglich sehe ich ganz gut, wenn das Programm
stehen bleibt. Kein Licht = schlecht...
Weitere Pins habe ich allerdings nicht frei, ich muss die Auswertung des
Empfängersignals über MCLR/RE3 machen. Der Pin wirkt jedenfalls sehr
empfindlich, schon die Berührung des offenen Kabelendes mit einer
Pinzette hat einen Reset bewirkt.
Einen anderen PIC kann ich zur Zeit nicht testen, das ist zu aufwändig,
das alles wieder auseinander zu bauen.
Ich habe mal meinen Code angehängt, vielleicht findet ja jemand was. Die
Routine zum Auswerten des Kanals habe ich allerdings noch gar nicht
geschrieben, RE3 findet sich daher nicht im Code.
Schonmal vielen Dank
Karsten
picfan schrieb:> hallo,> nach Deiner Beschreibung sieht es so aus als sei der MCLRE trotz> richtiger Einstellung,aktiv.> Errata schon mal angeschaut? MFG
Hallo picfan,
ja, diesen Eindruck habe ich auch.
Die Errata kenne ich nicht, was ist das und wo gibt es die?
Ich denke, ich werde heute Nachmittag mal eine einfache Testschaltung
mit einem anderen PIC aufbauen, vielleicht ergeben sich ja daraus
Erkenntnisse.
Hallo Karsten,
außer dass der Watchdog aktiviert ist fällt mir jetzt erst mal nichts
auf.
Es ist allerdings etwas seltsam, dass dein Programm so überhaupt läuft.
Deinem Code nach benutzt du MPLABX, aber welches Programmier-Tool und
welche Funktion im Detail um dein Programm auf den Controller zu
bringen?
PS: deine main Funktion sollte eigentlich so aussehen
1
voidmain(void){
2
init();
3
while(1){;}
4
}
Keine Übergabe-Parameter, kein return was auch immer.
Die Header <stdio.h> <stdlib.h> brauchst du auch nicht.
Das kommt alles nur von dem (falschen) Template in MPLABX.
Der Prozessorheader <p18f23k22.h> wird über <xc.h> automatisch hinzu
gefügt.
Im allgemeinen wird <xc.h> als einziger System-Header eingebunden!
Volker S. schrieb:> Hallo Karsten,>> außer dass der Watchdog aktiviert ist fällt mir jetzt erst mal nichts> auf.> Es ist allerdings etwas seltsam, dass dein Programm so überhaupt läuft.>> Deinem Code nach benutzt du MPLABX, aber welches Programmier-Tool und> welche Funktion im Detail um dein Programm auf den Controller zu> bringen?
Hallo Volker,
danke für deine Hinweise. Das ist mein erstes C-Programm, daher bin ich
mit dem Umgang noch nicht so sicher. Ich werde das mit den Headern
ändern.
Das mit dem Watchdog wundert mich auch, werde ich natürlich auch ändern
und dann nochmal testen. Vielleicht hängt das ja mit dem Fehler
zusammen.
Meine Programmierumgebung ist, wie du schon richtig erkannt hast MPLAB
X. Als Programmer verwende ich ein PICKit 3, mein Compiler ist der XC8
(free).
Das Datenblatt, dass du mir verlinkt hast, enthält so wie ich das sehe
keine Erratas. Habe sie in einem extra Dokument gefunden:
http://ww1.microchip.com/downloads/en/DeviceDoc/80512B.pdf
Mit dem MCLR ist wohl kein Fehler bekannt.
Karsten schrieb:> Meine Programmierumgebung ist, wie du schon richtig erkannt hast MPLAB> X. Als Programmer verwende ich ein PICKit 3, mein Compiler ist der XC8> (free).
Meine Frage zielte mehr darauf ab, wie du das Programm auf den PIC
bringst.
Mit welcher Funktion / Button ...
Karsten schrieb:> Das Datenblatt, dass du mir verlinkt hast, e...
Ich habe dir doch gar kein Datenblatt verlinkt sondern eine Seite wo
Datenblatt UND Errata zu finden sind. Die Errata sind nie in den
Datenblättern enthalten sondern immer eigene Dokumente.
Volker S. schrieb:> Meine Frage zielte mehr darauf ab, wie du das Programm auf den PIC> bringst.> Mit welcher Funktion / Button ...
Zum Programmieren nehme ich immer den "Download-Pfeil", oben in der
Mitte.
Gibt's da noch andere Möglichkeiten?
Die Spannungsversorgung mache ich übrigens über das PICKit.
Volker S. schrieb:> Ich habe dir doch gar kein Datenblatt verlinkt sondern eine Seite wo> Datenblatt UND Errata zu finden sind. Die Errata sind nie in den> Datenblättern enthalten sondern immer eigene Dokumente.
Akzeptiert, bin doof und habe es jetzt auch gefunden... :)
Karsten schrieb:> Zum Programmieren nehme ich immer den "Download-Pfeil", oben in der> Mitte.
Ist zwar unwahrscheinlich, aber du hättest auch den Debug-Pfeil ganz
rechts nehmen können. Das hätte dann zur Folge, dass sowohl deine
Konfigurationen für MCLR als auch für den Watchdog überschrieben werden
würden. Der Watchdog wird dann automatisch deaktiviert und der MCLR
aktiviert ...
So, mal ein kleines Update.
Ich habe heute im Code die main()-Funktion angepasst und den Watchdog
abgeschaltet. Geändert hat das leider nichts.
Leider hatte ich keine Zeit, mal den anderen PIC zu testen, das hole ich
dann morgen nach.
Auf jeden Fall schon einmal vielen Dank für die Hilfe!
Karsten
An LVP habe ich auch schon gedacht, dann im Datenblatt nichts
entsprechendes gefunden.
Jetzt habe ich noch mal nachgeschaut, und tatsächlich steht da unter
24.9 Single-Supply ICSP Programming
...
Note 3: While in Low-Voltage ICSP mode, MCLR
is always enabled, regardless of the
MCLRE bit, and the RE3 pin can no
longer be used as a general purpose
input.