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
hallo, nach Deiner Beschreibung sieht es so aus als sei der MCLRE trotz richtiger Einstellung,aktiv. Errata schon mal angeschaut? MFG
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 | void main(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!
Karsten schrieb: > Die Errata kenne ich nicht, was ist das und wo gibt es die? In den Errata werden Fehler in den Datenblättern und der Hardware selber aufgelistet. Finden kann man die da, wo man auch das Datenblatt findet. http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F23K22 (Guckst du "Dokumentation & Software")
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.
:
Bearbeitet durch User
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
1 | #pragma config LVP = ON
|
Ich vermute, dass das aktivierte LVP den Pin RE3 für den Programmiermodus verwendet. Versuch es mal mit deaktiviertem LVP, wenn du es nicht benutzt.
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.
IHR SEID DIE GRÖSSTEN! Danke Leute, LVP war der Schuldige! Ich hoffe, bei den nächsten Projekten klappt das dann besser...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.