Forum: Mikrocontroller und Digitale Elektronik MPLAB SIM- Programm stürtzt ab


von uC_anfängerin (Gast)


Lesenswert?

Guten Morgen zusammen,

ich habe ein Quellcode vom pic10F202 so angepasst(_config und paar 
Zeilen), dass es auch auf einem PIC10F322 läuft. Nach paar 
Fehlermeldungen habe ich hinbekommen fehlerfrei zu builden. Wenn ich 
aber Debuggen möchte, habe ich ein  Problem.

Debugger-> Select tool-> "MPLAB SIM" wähle und  mein Projekt
simulieren möchte, stürzt der Programm nach paar Zeilen später ab, 
sodass ich das Programm neu Starten muss. Was könnte der Grund sein? Das 
Debuggen mit MPLAB SIM vom PIC10F202 hatte aber geklappt.

Benutze MPLAB IDE v8.92


Freue mich schon auf alle Antworten..

Gruß

von Volker S. (vloki)


Lesenswert?

uC_anfängerin schrieb:
> stürzt der Programm nach paar Zeilen später ab

Welcher Programm? MPLAB, der Simulator oder was?

von uC_anfängerin (Gast)


Lesenswert?

Volker S. schrieb:
> Welcher Programm? MPLAB

Ich kriege diese Fehlermeldung:
MPLAB IDE funktioniert nicht mehr.
Ein Problem hat die richtige Ausführung dieses Programms verhindert. 
Schließen Sie das Programm.

von Volker S. (vloki)


Angehängte Dateien:

Lesenswert?

Hmmm, ich verwende die "alte" IDE eigentlich schon seit Jahren nicht 
mehr.

Der 10F322 ist ein relativ neuer PIC. Wenn ich ein Projekt mit dem 322 
in der alten IDE anlege, dann hat der Simulator auch nur einen gelben 
Punkt und "Beta Support". Das heißt, er ist noch nicht vollständig 
implementiert/getestet...

: Bearbeitet durch User
von uC_anfängerin (Gast)


Lesenswert?

Volker S. schrieb:
> Punkt und "Beta Support". Das heißt, er ist noch nicht vollständig
> implementiert/getestet...

Ja, bei mir sieht das auch genauso aus wie bei dir. Also ist es nicht 
möglich zu debuggen?

von Volker S. (vloki)


Lesenswert?

uC_anfängerin schrieb:
> Also ist es nicht möglich zu debuggen?

Könnte funktionieren oder wie in deinem Fall eben auch nicht ;-)
(((mit einem alten Code von mir funktioniert es z.B.)))

von uC_anfängerin (Gast)


Lesenswert?

Volker S. schrieb:
> Könnte funktionieren oder wie in deinem Fall eben auch nicht ;-)
> (((mit einem alten Code von mir funktioniert es z.B.)))

Okay :)
Kann es aber sein, dass ich nicht richtig angepasst habe den Code? oder 
hängt das wirklich nur davon ab, dass der PIC zu neu ist für alte IDE?

von Thomas E. (picalic)


Lesenswert?

Daß der Sim durch ein fehlerhaftes PIC-Programm abstürzt, ist 
unwahrscheinlich. Gerade bei dem kleinen PIC10... fallen die üblichen 
Verdächtigen, wie z.B. falsche Bank, weg.
Probier mal, im Programm an geeigneter Stelle einen CLRWDT-Befehl 
einzufügen. Ich hatte das auch schonmal, daß der WDT offenbar im Sim 
nicht korrekt behandelt wurde und sich beim WDT-Timeout dann der Sim 
einfach verabschiedet hat, und das, obwohl der WDT im Config-Register 
gar nicht aktiviert war!

von uC_anfängerin (Gast)


Lesenswert?

Thomas E. schrieb:
> Probier mal, im Programm an geeigneter Stelle einen CLRWDT-Befehl
> einzufügen.

Ich habe bemerkt, dass das Programm immer an der Stelle, wo ich  timer 
initialisiert habe -> Timer_Init abstürzt. Da habe ich den Befehl CLRWDT 
hinzugefügt, aber hat sich nicht geändert. Nachdem ich aber Timer_Init 
aus kommentiert habe, hat MPLAB nicht mehr abgestürzt. Ich denke da 
liegt das Problem.

von Volker S. (vloki)


Lesenswert?

Nimm doch einfach die aktuelle IDE.

Wenn man schon Jahre lang mit der alten IDE gearbeitet hat, kann es 
durchaus sinnvoll sein, die auch noch so lange wie eben möglich zu 
nutzen.
Als Neuanfänger halte ich das nicht für sinnvoll, weil man früher oder 
später vermutlich doch die neue braucht...

von Thomas E. (picalic)


Lesenswert?

Wenn der Absturz immer an der gleichen Stelle und nicht sporadisch 
irgendwann auftritt, sollte es ja kein Problem sein, den Fehler 
einzugrenzen! Lass' den Sim halt Schritt für Schritt durch das Programm 
laufen und schau, bei welchem Befehl es genau passiert. Keiner hier 
weiß, welcher Code sich hinter Deiner Timer_Init Routine verbirgt (Du 
könntest Das Programm hier ja auch einfach mal posten, oder ist es 
geheim?).

von Thomas E. (picalic)


Lesenswert?

Volker S. schrieb:
> Wenn man schon Jahre lang mit der alten IDE gearbeitet hat, kann es
> durchaus sinnvoll sein, die auch noch so lange wie eben möglich zu
> nutzen.

Eigentlich muss man beide verwenden: Für das, was in der MPLAB 8 noch 
nicht geht (z.B. neue PIC-Typen), nimmt man MPLAX-X, und für das, was in 
der neuen IDE nicht mehr geht (vernünftiges Debugging von 
ASM-Programmen) nimmt man MPLAB 8. Dumm nur, wenn man ASM-Programme für 
einen neuen PIC, der in MPLAB 8 noch nicht drin ist, komfortabel 
debuggen will...

von Volker S. (vloki)


Lesenswert?

Ich programmiere nur noch äußerst selten in Asssembler.
Was ist das Problem mit MPLABX?

Ist es wirklich Wert sich als Anfänger in zwei IDEs einzuarbeiten?

von Thomas E. (picalic)


Lesenswert?

Volker S. schrieb:
> Was ist das Problem mit MPLABX?

hatte ich kürzlich hier mal zu geschrieben:
Beitrag "Re: MPLAB Software Übertragung auf einen uC die PIC Familie"

Volker S. schrieb:
> Ist es wirklich Wert sich als Anfänger in zwei IDEs einzuarbeiten?

Wahrscheinlich nicht - zumal ein Anfänger wohl typischerweise eher mit 
anderen Problemen zu kämpfen hat, als mit den oben genannten.

von Thomas E. (picalic)


Lesenswert?

Servus,

zumindest einen Punkt aus meinem oben verlinkten "MPLAB-X Bashing" muss 
ich revidieren! Mit der aktuellen Version kann man im Watch-Window 
tatsächlich den Variablen-Typ (8/16..-Bit/float usw.) einstellen! K.A., 
ob das neu ist oder ich mich nur zu blöd angetellt habe, als ich das 
zuletzt (vielleicht vor 1 Jahr?) versucht habe. Bin mir aber recht 
sicher, daß ich den naheliegenden Weg (mit der rechten Maustaste im 
Watch Window draufklicken) natürlich auch da schon probiert habe!

von Volker S. (vloki)


Lesenswert?

Thomas E. schrieb:
> Mit der aktuellen Version kann man im Watch-Window
> tatsächlich den Variablen-Typ (8/16..-Bit/float usw.) einstellen!

Cool, habe ich auch noch nicht gesehen, bzw. noch nicht danach gesucht.
Du meinst bestimmt "Display Value Column as" bzw. wenn man eine Adresse 
eingibt, dann auch noch "User defined size" (bei der fast aktuellen 
Version 3.55)

<edit> In Bezug auf Trägheit, habe ich leider auch wenig Hoffnung :-(
Für kleine Projekte ist das vermutlich nicht so auffällig und unter 
Linux scheint es mir auch etwas agiler als unter Windoof.

: Bearbeitet durch User
von uC_anfängerin (Gast)


Lesenswert?

Hallo nochmal,

ich kann jetzt glücklicherweise Debuggen. An der stelle Timer_Init habe 
ich etwas den Code geändert und hat funktioniert.

Der alte code:

    Timer_Init movlw 0C3H
    OPTION
    retlw 0

Der neue code:

Timer_Init movlw B'000000011'
movwf OPTION_REG
retlw 0

von uC_anfängerin (Gast)


Lesenswert?

Thomas E. schrieb:
> sollte es ja kein Problem sein, den Fehler
> einzugrenzen!

Ja genau.  So habe ich den Fehler entdeckt.

von uC_anfängerin (Gast)


Lesenswert?

Volker S. schrieb:
> Nimm doch einfach die aktuelle IDE.

Da ich das nicht hobymässig mache, sondern ein Projekt ist, wurde mir 
die alte IDE heruntergeladen :/

von uC_anfängerin (Gast)


Lesenswert?

Eine weitere Frage wäre, warum ich nicht gleichen Signal am Ausgang 
PIC10F322 bekomme wie bei PIC10F202? wie bei dem anderen PIC bekomme ich 
schon Impulse die mit verschiedenen Zeit abstände sind. Aber das Signal 
ist sehr schneller. Zwischen zwei Impulsen soll die abstand entweder 1ms 
oder 2ms sein bei mir ist es schon aber so 220ms(1 Kästchen=200ms.
Was ich gesehen habe dass PIC10f202 Frequenz von 4 MHz hat und PIC10F322 
16MHz. Bei dem alten code wurde Takt: 4Mz/4= 1usec eingestellt.
Ich denke mein Signal ist 16 mal schneller?
Wie kann ich das einstellen?

Info vom Datenblatt:
bit 7 Unimplemented: Read as ‘0’
bit 6-4 IRCF<2:0>: INTOSC (FOSC) Frequency Select bits
111 = 16 MHz
110 = 8 MHz (default value)
101 = 4 MHz
100 = 2 MHz
011 = 1 MHz
010 = 500 kHz
001 = 250 kHz
000 = 31 kHz (LFINTOSC)

movwf   OSCCON B'00110000' für 1Mhz habe ich so was geschrieben ist aber 
leider falsch. :/

von Klugscheisser (Gast)


Lesenswert?

> Da ich das nicht hobymässig mache, sondern ein Projekt ist, wurde mir
> die alte IDE heruntergeladen :/

Am guten alten MPLAB gibt es nichts auszusetzen!!!!¹!!²!!!!!³!!!!!

Solange Mann bei den WinzPICkels bleibt.

von Klugscheisser (Gast)


Lesenswert?

> movwf   OSCCON B'00110000'

movlw B'00110000'
movwf   OSCCON

von Volker S. (vloki)


Lesenswert?

Klugscheisser schrieb:
> Am guten alten MPLAB gibt es nichts auszusetzen!

Na ja, dass es bei einem Fehler im Code abstürzt ist schon bisschen 
grenzwertig ;-) Aber jetzt scheint es ja zu laufen...

von uC_anfängerin (Gast)


Lesenswert?

Klugscheisser schrieb:
> movlw B'00110000'
> movwf   OSCCON

Vielen Dank, da hat sich mein Signal aber nichts geändert. Wohl liegt 
das Problem wo anders.

von uC_anfängerin (Gast)


Lesenswert?

Volker S. schrieb:
> Aber jetzt scheint es ja zu laufen

Jaa =)

von Volker S. (vloki)


Lesenswert?

uC_anfängerin schrieb:
> Vielen Dank, da hat sich mein Signal aber nichts geändert. Wohl liegt
> das Problem wo anders.

Wo schaust du denn das Signal an?
Real mit einem Oszilloskop, oder im Simulator?

von uC_anfängerin (Gast)


Lesenswert?

Volker S. schrieb:
> uC_anfängerin schrieb:
>> Vielen Dank, da hat sich mein Signal aber nichts geändert. Wohl liegt
>> das Problem wo anders.
>
> Wo schaust du denn das Signal an?
> Real mit einem Oszilloskop, oder im Simulator?

Ja, real mit einem Oszi.
Ich denke die beiden Timern sind unterschiedlich aufgebaut und deswegen 
sieht das Signal anders aus? Noch bin ich beim ausprobieren, wenn ihr 
Vorschläge habt, bin sehr dankbar!

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.