Forum: Mikrocontroller und Digitale Elektronik PIC18 Fehler


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich hab einen für mich kuriosen Fehler bei meinem PIC. Ich werde nicht 
gleich CODE snippets hochladen, da der Fehler vlt. bekannt ist.
Mein Programm hat einen Interrupt, in diesem werden ankommende Daten 
aufgenommen und in der mainschleife wieder ausgegeben.
Ich lasse mir das ankommen der Daten sowie das ändern der Daten über die 
LEDs anzeigen und es funktioniert. Aber am Ausgang kommt nix raus. 
Klingt als hätt ich die Ausgänge falsch konfiguriert. Jetzt lad ich das 
Programm neu in den Programmspeicher ohne Änderung daran vorzunehmen und 
noch bevor das Programm im Speicher ist (währrend der Ladebalken sich im 
MPLAb noch bewegt) , kommen die Daten auf einmal am Ausgang raus. Weißt 
das auf einen Bug hin oder auf falsch programmiert? wie kann etwas beim 
neuladen gehen, aber beim ersten mal nicht?

Viele Grüße

von Verzweifelt an PIC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Verwendest du Pickit3 und bei MPLABX den kostenlosen Compiler?

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Die Versionen der IDE und des Compilers wären auch noch interessant und 
ob du das PICkit gerade als Debugger oder Programmiergerät verwendest.

von Freddi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Reset-Release bzw. ~MCLEAR nicht geschaltet?

von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
Ich verwende das Pickkit3 und den bezahlten Compiler für den 
PIC18LF8722.

MCLRE hab ich OFF, habs aber jetzt mit ON probiert und es hat sich nix 
geändert.

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Die Versionen der IDE und des Compilers wären auch noch
> interessant und
> ob du das PICkit gerade als Debugger oder Programmiergerät verwendest.

von Verzweifelt an PIC (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Patrick S. schrieb:
> Ich verwende das Pickkit3 und den bezahlten Compiler für den
> PIC18LF8722.
>
> MCLRE hab ich OFF, habs aber jetzt mit ON probiert und es hat sich nix
> geändert.

Ok, den bezahlten Comp. ist schon mal gut. Aber das Pickit 3 ist ein 
Schwachsinn, um ehrlich zu sein. Bei mir haben die Programme meistens 
nur zufällig programmiert(habe den gratis Comp.) verwendet. Wenn ich das 
Programm in MikroC hineingespielt habe(mit veränderter Syntax) hat es 
einwandfrei funktioniert.

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Verzweifelt an PIC schrieb im Beitrag #5308848:
> Aber das Pickit 3 ist ein
> Schwachsinn, um ehrlich zu sein. Bei mir haben die Programme meistens
> nur zufällig programmiert(habe den gratis Comp.) verwendet.

Da wirst du in den meisten Fällen einfach "zufällig" einen Fehler 
gemacht haben...

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Verzweifelt an PIC schrieb im Beitrag #5308848:
> Ok, den bezahlten Comp. ist schon mal gut.

Was soll denn daran gut sein. Welcher Compiler genau ist es denn nun?
Man kann ja durchaus unterschiedliche kaufen (C18, XC8, MicroE, CCS...)

von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
IDE: v4.05
Compiler: XC8 (v1.44)
Pickkit 3 wird als Programmiergerät eingesetzt!

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Patrick S. schrieb:
> Pickkit 3 wird als Programmiergerät eingesetzt!

Ist denn das Programm schon fertig? Läuft alles?
Wenn nicht, dann macht das doch gar keinen Sinn!

von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
Es spielt auch keine Rolle. Da ist nix komplexes dabei und es 
funktioniert sowohl im Debug modus nicht, als auch wenn ich es nur zum 
programmieren nehme.

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Patrick S. schrieb:
> Es spielt auch keine Rolle.

Im Debug Modus müsste aber eine Fehlermeldung kommen, wenn das Programm 
nicht läuft. Wenn nicht passiert, was du erwartest, kannst du einfach 
auf Pause drücken, und siehst sofort, wo sich das Programm rumtreibt...

von Verzweifelt an PIC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Verzweifelt an PIC schrieb im Beitrag #5308848:
>> Aber das Pickit 3 ist ein
>> Schwachsinn, um ehrlich zu sein. Bei mir haben die Programme meistens
>> nur zufällig programmiert(habe den gratis Comp.) verwendet.
>
> Da wirst du in den meisten Fällen einfach "zufällig" einen Fehler
> gemacht haben...

Hast schon recht. Aber wenn das Programm dann mit dem MikroC 
Programmiergerät funktioniert hat?

von Volker S. (vloki)


Bewertung
1 lesenswert
nicht lesenswert
Verzweifelt an PIC schrieb im Beitrag #5308912:
> Aber wenn das Programm dann mit dem MikroC
> Programmiergerät funktioniert hat?

MPLABX hat schon seine Tücken und kann ganz schön auf den Nerv gehen.
Nur sitzt der Fehler trotzdem in den meisten Fällen auf dem Stuhl vorm 
Rechner. (ist zumindest bei mir so ;-)

von Verzweifelt an PIC (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Volker S. schrieb:
> Verzweifelt an PIC schrieb im Beitrag #5308912:
>> Aber wenn das Programm dann mit dem MikroC
>> Programmiergerät funktioniert hat?
>
> MPLABX hat schon seine Tücken und kann ganz schön auf den Nerv gehen.
> Nur sitzt der Fehler trotzdem in den meisten Fällen auf dem Stuhl vorm
> Rechner. (ist zumindest bei mir so ;-)

Keine Sorge! Bei mir auch. Ich hab mich jetzt sehr an MikroC 
angefreundet, kostet zwar 200€, aber ist top. Kann ich dir nur 
empfehlen, genauso dem TO.

von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht lesenswert
Verzweifelt an PIC schrieb im Beitrag #5308912:
> Hast schon recht. Aber wenn das Programm dann mit dem MikroC
> Programmiergerät funktioniert hat?

Irgend was lauft bei der Bedienung MPLABx&PicKit3 falsch.
Ab und an Compiliert MPLABx bei mir nicht mehr das Was aktuell im Editor 
ist oder schreibt ein altes HexFile. Irgendwas in dieser Richtung Halt, 
MPLABx neu starten und gut is.

Und ja, beim programmieren mit dem PicKit3 rennt das alte Programm 
zwischendurch kurz 1(2?) wieder los. Kann also daraus an den Pin 
rütteln.
Was mich auch nur zu einem Schluss bringt, der PicKit3 hält denen PIC, 
nach dem programmieren im Reset fest! Schon mal den PicKit abgezogen?

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Verzweifelt an PIC schrieb im Beitrag #5308936:
> Ich hab mich jetzt sehr an MikroC
> angefreundet, kostet zwar 200€, aber ist top. Kann ich dir nur
> empfehlen, genauso dem TO.

Ich brauche was, das absolut kostenlos ist und auf Windows, MacOS und 
Linux läuft, damit unsere Studies das auch problemlos auf ihren privaten 
Rechnern installieren können.

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Teo D. schrieb:
> Was mich auch nur zu einem Schluss bringt, der PicKit3 hält denen PIC,
> nach dem programmieren im Reset fest! Schon mal den PicKit abgezogen?

Kommt drauf an, ob "Hold in Reset" gedrückt ist.

von Verzweifelt an PIC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Verzweifelt an PIC schrieb im Beitrag #5308936:
>> Ich hab mich jetzt sehr an MikroC
>> angefreundet, kostet zwar 200€, aber ist top. Kann ich dir nur
>> empfehlen, genauso dem TO.
>
> Ich brauche was, das absolut kostenlos ist und auf Windows, MacOS und
> Linux läuft, damit unsere Studies das auch problemlos auf ihren privaten
> Rechnern installieren können.

Aso ok. Dann ist das wohl besser.

Teo D. schrieb:

> Was mich auch nur zu einem Schluss bringt, der PicKit3 hält denen PIC,
> nach dem programmieren im Reset fest! Schon mal den PicKit abgezogen?

Hab alles probiert. Hardware ausgetauscht, sogar das Oszi. Software 
nochmal deinstalliert und installiert usw. Also den RESET hab ich nicht 
betätigt. Soviel technisches Verständnis hab ich noch hahaha

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Verzweifelt an PIC schrieb im Beitrag #5308949:
> Also den RESET hab ich nicht
> betätigt. Soviel technisches Verständnis hab ich noch hahaha

Ist jetzt nicht so deutlich zu sehen in der IDE.
Unsere Studies bringen das durch planloses rumklicken immer wieder hin 
;-)

von Verzweifelt an PIC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Verzweifelt an PIC schrieb im Beitrag #5308949:
>> Also den RESET hab ich nicht
>> betätigt. Soviel technisches Verständnis hab ich noch hahaha
>
> Ist jetzt nicht so deutlich zu sehen in der IDE.
> Unsere Studies bringen das durch planloses rumklicken immer wieder hin
> ;-)

Tja wegen planlosen Rumklicken habe ich schon viel angestellt. Deshalb 
habe ich die IDE schon öfters aus dem Fenster werfen wollen, obwohl es 
mein Fehler war

von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Ist jetzt nicht so deutlich zu sehen in der IDE.

Ja, da kann man auch in nem Menü ein Häkchen setzen, nicht nur den 
Button drücken.
Ob da ab u. an was durcheinander kommt, nur wo, vor oder hinter dem 
Monitor?

von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
Volker S. schrieb:
> Patrick S. schrieb:
>> Es spielt auch keine Rolle.
>
> Im Debug Modus müsste aber eine Fehlermeldung kommen, wenn das Programm
> nicht läuft. Wenn nicht passiert, was du erwartest, kannst du einfach
> auf Pause drücken, und siehst sofort, wo sich das Programm rumtreibt...

Das spielt in sofern keine Rolle, weil es kein unterschied macht, da im 
DEBUG Modus genau das gleiche rauskommt. Es läuft und es werden keine 
Fehler und nichts angezeigt.
Das Programm läuft, ich muss für die Asugabe jedoch zwischen drin den 
Resetbutton drücken bzw. das Programm neuladen. Das weißt darauf hin, 
dass durch den Reset irgendetwas zurückgesetzt wird.
Geupdated hab ich jetzt auch alles, immer noch gleicher Fehler. Leider 
hab ich nur das Pickkit 3 um herraus zu finden ob es daran liegt.

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Patrick S. schrieb:
> Das Programm läuft, ich muss für die Asugabe jedoch zwischen drin den
> Resetbutton drücken bzw. das Programm neuladen. Das weißt darauf hin,
> dass durch den Reset irgendetwas zurückgesetzt wird.

Dann würde ich sagen dein Programm hat irgendwo einen Fehler. Vermutlich 
in Zeile 42 ;-). (soll heißen, ohne einen Code zu sehen, wird dir 
vermutlich keiner weiter helfen können)

Kann auch ein ganz einfaches/abgespecktes Programm sein, welches den 
Fehler aber immer noch zeigt.

von skorpionx (Gast)


Bewertung
-1 lesenswert
nicht lesenswert

von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
Sorry ich schick mal noch keinen Code, da ich den Fehler weiter 
einschränken konnte. Ich hab mir jetzt mit dem Oszi jeden Kanal 
angeschaut. Und RH4 bringt einfach keinen Pegel, bei allen anderen kommt 
das rinchtige raus. erst wenn ich den Reset Button drücke kommt der 
richtige Pegel. Nun zum Kuriosum. Ich hab einen anderen Port verwendet 
und hab den gleichen Effekt an einem anderen Pin. Der Controller muss 
irgendwie überfordert sein mit der Pinbelegung. Kann mir aber immer noch 
nicht erklären, wieso es dann nach dem drücken des Resets geht.

von X4U (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Patrick S. schrieb:
> Ich hab einen für mich kuriosen Fehler bei meinem PIC.

Ohne jetzt weeter gelesen zu haben die PIC Klassiker
1.Read modify write problem
2. Nicht abgeschaltete Funktionen wie analog ports, PWM ...

von Patrick S. (pepper)


Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist glaub ich gelöst. Bei den Ports hatte ich auch alles 
abgeschalten und doppelt kontrolliert. Keine Ahnung. hab das 
Entwicklungsboard gewechselt und zack ging alles. War vlt alles nur 
Karma. Trotzdem kurioses Problem, dass die Pegel ohne einen Reset nicht 
richtig ankamen!

von skorpionx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nutzen von Erfahrung die andere haben...

Ich habe auch mit ähnlichen Fehler gekämpft. D diese Beitrag:
Beitrag "Unbenutzte Pins vom Mikroprozessor als Fehlerquelle."

Antwort von einem Erfahrenen:

> Defaultmäßig waren sie als Eingänge definiert. Die  Lösung: Am Anfang
> muss man
> alle Ports vom Mikroprozessorsystem als Ausgänge definieren und sie auf
> 0 setzen.
> So schließt man das System gegen Störungen. Und meinen Anfänger Fehler
> kann
> man auch so verstehen. Man sieht nur die Pins die man braucht...

Das ist eine Grundregel, kein Logikeingang darf undefiniert offen
bleiben. Insbesondere bei CMOS-Bauteilen.

Du kannst
* die Pins auf Eingang schalten und auf Masse legen
* die Pins auf Eingang schalten und über Pullups/-downs auf High oder
Low ziehen. Bei geringen EMV-Anforderungen reichen die internen Pullups,
sofern vorhanden
* die Pins auf Ausgang schalten

Was für Dich besser bzw einfacher ist hängt von Deiner Anwendung ab.

Für Profis:
* in einem Port einen Pin als Output High und einen als Output Low
schalten und dort einen Abblockkondensator dranhängen. Beruhigt die
anderen Pins des Portes (bzw des chip-internen power rails).
* in einem Port einen Pin als Output High und einen als Output Low
schalten und mit VDD bzw Gnd verbinden. Stützt die Versorgung der
anderen Pins ordentlich ab. Liefert aber auch Diskussionsbedarf im
Review.

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]
  • [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.