MPLAB X IDE v6.00 Simulatior

Begonnen von ^Cobra, 08.01.2024, 08:12:31 CET

Vorheriges Thema - Nächstes Thema

^Cobra

Hallo und ein Guten Rutsch euch allen!

Ich habe mir für 2024 fest vorgenommen mich mit PIC zu beschäftigen.
Leider waren die letzen Jahre dafür keine Zeit.
Nun habe ich öfters bei euch gelesen das ihr den Simulator erfolgreicht benutzt.
Früher war mein Simulaotr der PIC selbst :P .
Damit ich mir gleich höhrere Ziele setzte dachte ich mir nun das ich auch mit C anfangen könnte.
Nun habe ich also (mal wieder) ein kleines Test Programm in C geschrieben, den Simulator
eingeschaltet und geschaut. Soweit hat auch erstmal alles funktioniert.
Nun zur Frage: Im Program habe ich ein Delay Makro benutzt: __delay_ms(1000)
somit sollte es ja jetzt 1 sec dauern bis es weiter geht.
Wenn ich nun die Sim so laufen lasse, scheint es mir so als ob garkein Delay statt findet.
Wenn ich jeden Schritt einzelt durch gehe Dauert es bei dem Delay wesentlich länger als 1s.

Jetzt habe ich schon nach Infos gesucht aber zumindest wegen dem Delay nichts gefunden.
Ich wüsste gern ob dies nun ein normales verhalten ist oder ob es da noch was gibt damit die
simulation "realistischer" wird.

Gruß
Cobra

picass

Du sprichst sicherlich von der Software-Simulation. Hat dein Programmiergerät auch die Möglichkeit, den Test im Zusammenarbeit mit MPLAB hardwaremäßig zu testen? Oder anders gesagt: programmiere doch einfach einen PIC und lasse ihn laufen - eine LED zeigt dann, was Sache ist.
Grüße, picass

^Cobra

Ja, so habe ich das sonst gemacht und mein PicKit 3 kann ja auch debuggen soweit ich mich erinnere.
Wie gesagt ist alles leider sehr lange her... Daher bin ich ja hier auch recht Still am mitlesen.

Fand es aber mal angebracht zu schauen wie das mit dem Software Simulation fuktioniert.
Danke aber für deine Antwort :).

picass

Selbst nutze ich den Software-Simulator dauernd. Man kann da sehr viel machen. Als Beispiel kann man das Verhalten des µC's bei einer Sleep-Routine gut beobachten, ob er überhaupt raus kommt aus dem Schlummer, warum nicht und wie das mit globalem oder einfachen Interrupt funktioniert und wie das Aufwecken ohne IRQ gelingt. Da lassen sich z.B. die Zustände der Ports beeinflussen, sprich: toggeln, was dann über Bit-Test-Abfragen ausgewertet werden kann. Das Hardware-Debuggen nutze ich erst seit Kurzem, das bringt natürlich auch was.

In "C" kann ich nicht weiter helfen. Um dein ursprüngliches Anliegen nicht zu unterlaufen, erinnere ich hier an deine Frage, wie das Makro für ein Delay zu gestalten ist - siehe erster Beitrag hier im Fred.
Grüße, Bernd

picass

Hallo Cobra!
Habe mal zwei Seiten aus den "Beilagen" fürs PICkit3 STARTER KIT kopiert. In dem waren/sind ja auch 13 Lektionen für User enthalten, welche sich fürs Programmieren interessieren. Diese Lektionen sind sehr gut ausgewählt und jede ist sowohl in Assembler als auch in C mit komplettem, also fertig ausführbaren Programm versehen. In der Lesson 3 steht das, was für dein Prog interessant sein müsste.
Bei der Gelegenheit: diese 13 Lektionen sind der reine Wahnsinn. Sie enthalten exakt das, was man für den Anfang, rsp. für die Nutzung der Grundlagen wirklich braucht. Wahrscheinlich kann man diese Lessons, rsp. die P3-S-Kit Beilagen bei Microchip noch finden und downloaden. Falls nicht: ich habe sie ausgedruckt und evtl. auch noch irgendwo als Download.
Grüße, Bernd
zeitschleife1.pdf
zeitschleife2.pdf   

^Cobra



^Cobra

Moin Ottmar,
sorry irgenwie habe ich dein Eintrag nicht mit gekriegt.
Auch dir danke ich für die Docu.

Habe inwzischen weiter rum Probiert.
meine Erkenntnis:
bei den Projekt Einstellungen beim Punkt Simulatior kann man 2 Frequenzen einstellen.
Bei mir wird der Fcyc genommen und zwar direkt, keine Teilung durch 4 o.Ä.
Ich benutzt ein 16F687 mit internen Takt. Dieser steht auf derzeit 4Mhz.
Somit bei Fcyc 4 eingeben und Frequenz auf Mhz stellen.SimConfig.png

Nun kann man mit der StopWatch und einer StopUhr einmal vergleichen obs passt.
Nehme zwar an das ich der einzige bin der StopWatch lange gesucht hat aber zufinden unter Window:
StopWatch.png

Jetzt die Stopuhr (oder Timer) starten (Timer z.B. auf 10s) und gleichzeitig die Sim starten.
Wenn Zeitabgelaufen ist Sim stoppen.
Nun stellte ich fest: Passt nicht. Also so lange Fcyc angepasst bis es besser aus sah. das war bei mir 2,8mhz (Komma scheint da ungültig zu sein, daher 2800 und auf khz umstellen.
Jetzt liege ich immer zwischen 9,5 und 10,5s bei der Stopwatch. Und war im ersten Moment glücklich. Dann dachte ich mir aber: und nun? Denn das eigendliche Ziel mit der Sim die Programme vorhab zu testen ist meist Zeitlich uninteressant (man (ich) wird da mehr die Schritte einzelt durch gehen.)
Ich habe mir dann ein zähler gebaut der mit der Delay anweisung alle 1000ms die zahl um 1 erhöht.
Nun sollte bei 10s also der Zähler auf 10 stehen oder? Dem ist auch nicht so. Also kurz gesagt
alles für die Katz und vermutlich garnicht soo wichtig (sonst würde es mehr dazu im Netz zu finden sein oder).
Danke für die Anteilnahme,
Gruß
Cobra




^Cobra

Hallo picass (oder lippe1audi?),
ja assembler habe ich "damals" auch nur genutzt und muss sagen das ich in C bis jetzt kein vorteil sehe.
Ich habe mir die "Libs" nun mal angeschaut, in der Zeit hätte ich vermutlich schon selbst eine funktion mir balsten können für z.B. die UART schnitstelle.
Ich habe es nun geschafft das der Simulator mir sogar bei der UART Output was hinschreibt.
aber
diese "printf" funktion braucht eine menge an ram speicher.
Auch meine Funktion die eine lokale Variable hat (und diese eig. Tempurär) sein sollte
verballert bei jedem neuen auf ruf 3 byte ram.
Ich bin grade dabei zu versuchen die USART schnittstelle slbst zu basteln um Strings aus zu geben.
Nur wird das TXIF immer sofort gesetzt und dann geht es nicht weiter.
Dies wird gesetzt sobald SPEN auf 1 geht. Im Program es auf Null zusetzten oder gar PIR1 auf null zu setzten. - ohne erfolg.
Nur wenn ich es manuell beim simulieren auf 0 schreibe geht es. Und dann geht auch mein Code schnipsel zur ausgabe.
void ComSend(char data[], char counter)
{
char counterIntern = 0;
   TXIF = 0;
   
while( !TXIF)
{
    while ((counterIntern < counter))
    {         
TXREG = data[counterIntern];
counterIntern = counterIntern + 1;
    }
 
}
counterIntern = 0;
}

Für die C'ler unter uns vermutlich eine Fingerübrung...
Weiß noch nicht ob ich wirklich auf diesem Pferd reiten lern will oder doch mir den alten Assembler Gaul wieder aneigne. Für meine kleinen Sachen würde dies sicherlich reichen und dann reicht denke auch der Speicher meiner alten Controller die hier rum liegen.

pic18

Mit dem Simulator kann ich Dir leider nicht helfen, damit arbeite ich nicht.
ZitatUSART schnittstelle

Um welche Schnittstelle handelt es sich? Um eine serielle? Willst du Daten senden und empfangen, oder willst Du nur senden.
Ich muß mal in meinen Prog. nachschauen, da habe ich eine Schnittstelle mit FT232 programmiert. Allerdings mit parallele Datenübertragung. Aber ich habe auch SPI benutzt.

^Cobra

Hallo pic18,
bei dem Versuch war es die serielle. Will senden und empfangen. 
Mit Spi und iic wollte ich mich ebenfalls beschäftigen.
Im Moment frage ich mich halt ob c für mich Sinn macht. 
Wie hast du deine Schnittstelle aufgebaut? In c oder Assembler?

pic18

ich habe alles in C geschrieben, Ich meine der eine Bus läuft seriell. Ich muss mal sehen, ob ich die Schnittstelle finde. Das Prog. ist recht groß. Ich habe den 18F4685 am Laufen. Ist alles auf den alten C18 Compiler geschrieben, mit der MPLAB.IDE (ohne x). Fertige librays benutze ich selten. SPI kann man leicht so programmieren. Ich benutze aber auch die Hardware - Version.

^Cobra

Ja zumindest für mein Kleinkram scheint es mir sich nicht zu lohnen die libs zu nutzen und sich da ein zu lesen. 
Wenn du mal Zeit hast wäre ich auf jedenfalls interessiert ein ein program Schnipsel. 

^Cobra

Nun wollte ich auf mein anderen Laptop 'mal eben' die aktuellste ide installieren.
Gesagt getan. 
Ein altes Projekt von mir (ca 10jahre alt) geöffnet und übersetzt - fehler. Da steht mein compiler wird nicht mehr unterstützt und ich solle ein anderen nehmen. o.O also weiter geforscht noch ein scheinbar neueren compiler runter geladen und installiert, übersetzt - Fehler. Include, config usw. Haben sintax Fehler. (das program war damals wohl bemerkt lauf fähig. Nach vielen Suchen: scheinbar heißt es nicht mehr _config sondern nur noch config. Statt #include nur include. Aber selbst sprung Marken seien sintax Fehler. Erste Zeile der p16f677a.inc, eine kommentarzeile sei ein sintax Fehler.
Nach viele rum probieren ist die Projekt Datei nun futsch. - schade. Beim Versuch ob diese noch auf mein alten Desktop PC ist hat dieser mit lauten knall sein Dienst verweigert. Fi und ls haben ausgelöst. Nun habe ich erstmal etwas frustriert mich ans Abendessen gesetzt. 

pic18

in MPLAB-X kannst Du auch einen alten Compiler installieren und dann auswählen. Ich habe den alten C18 Compiler installiert der kann offenbar auch Assembler. Ich habe in meinen Projekt auch Assembler - Dateien, die werden auch übersetzt. In wieweit der C18 Compiler auch den 16er unterstützt weiß ich nicht.

picass

Zitat von: ^Cobra in 14.01.2024, 19:36:46 CET..........'mal eben' die aktuellste ide installieren.........

........ mein alten Desktop PC ist hat dieser mit lauten knall sein Dienst verweigert. Fi und ls haben ausgelöst.
Ähm..., räusper....., nehme an, du weisst, dass die "neueste" MPLAB-Version - also höher als 5.25 -  eine wirkliche Neuentwicklung ist und da wenig kompatibel mit der alten Version "ohne X" und "mit X" ist?!
Bei Nutzung von Assembler ist der Sprung derart krass, das man zunächst fast nichts versteht und auf jeden Fall die Sprache komplett neu und das in nahez allen Belangen erlernen muss. Inwieweit sich das auch im "C"-Bereich bemerkbar macht, entzieht sich aber meiner Erfahrung. Aber könnte ja sein, dass....

Du Ärmster, da hat es ja gleich drei erwischt mit den Knall, erst den Compi, dann die Sicherung, dann dich.
Versuche, dir Trost zu spenden in dieser Krise: ein Knall im Compi bedeutet natürlich das Aus für mindestens eine Hardwarekomponente - mit dem von Murphy beschriebenen Effekt auch gleich des ganzen PCs. Aber ein Knall hat was Gutes: es gibt die Chance, den Fehler einfach finden zu können, indem man z.B. im/am Netzgerät diesen typischen ekligen Gestank von überhitzten Elektronik-Bauteilen erschnüffeln kann. Oder auf der Mutterplatine findet man einen Elko, der offenkundig sich als Vulkan versucht hat und einen Teil seines Elektrolytes deutlich sichtbar nach oben raus geschleudert hat. Meist sind dann auch andere Elkos an der oberen Kreisfläche nach oben aufgewölbt. Oder die CPU ist abgeraucht, weil - wie üblich - nach Jahren die wichtige Wärmeleitpaste knochenhart geworden ist und ihre Funktion umkehrte: nix Wärmeleiten, sondern im Gegenteil isolieren.

Wenn du Glück im Unglück haben solltest, dann ist das Netzgerät hobs gegangen. Das kann man am einfachsten erkennen, am einfachsten austauschen und es kostet am wenigsten. Bei alten Compis reicht meist ein 350 W-Teil, welches es recht preiswert gibt. Kennst du dich mit der Prüfung eines verdächtigten NTs aus, das zur Prüfung natürlich vom MB getrennt werden muss/ sollte?
Grüße, picass

^Cobra

Das es da Neuerung gab habe ich gelesen ja. Das man aber Assembler der Art neu erfindet erschließt sich mir nicht. Habe inzwischen einiges dazu in dem xc8 guide gelesen. Aber je mehr ich da finde desto weniger habe ich lust. 
Um dein alten PC, habe die Festplatten raus und über USB am Laptop. Auch da war keine kopie mehr von dem Projekt. Naja doof gelaufen. Der PC selbst ist ca 15 Jahre alt und somit höchstens fürs Museum zu gebrauchen. Da aber keine Lampe brennt gehe ich erstmal von dem Netzteil aus. 
So wie es hier an andere Stelle gesagt wurde bleibt man dann einfach auf eine ältere Version. Finde es aber irgendwie mist von mricochip... 

Danke euch für die Unterstützung. 

picass

#17
Als die neueste Version von MPLAB erschien, hatte ich durchaus motiviert einen Anlauf unternommen, den fürderhin zu nutzen. Aber schon unser Altvorderer @vloki warnte mich: das gäbe einen Kulturschock. Und da hatte vloki nur zu sehr recht..., leider. Das ist eine komplett andere Sprache mit nur wenig Gemeinsamkeiten. Mein erster Versuch, ein vorhandenes Prog umzuschreiben, löste Schockwellen aus, die ich jetzt noch verspüre. >:(  Ne, da lasse ich die Finger von.

An einem 15 Jahre alten PC noch eine Rep auszuführen, ist in der Tat nur dann noch sinnvoll, wenn es "höchstens" das NT war, welches.... Allerdings lauert da ein Dilemma an anderer Stelle: auf so'nem alten Kasten lief sehr wahrscheinlich auch noch WinXP oder Win7. Und solch altes Betriebssystem zu retten - und damit vor allem die alten Versionen der Programme - oder auch auch nur upgraden zu können, war ja bis vor wenigen Monaten noch möglich, wird aber nach Microsofts Abnabelung älterer Systeme als Win10 zu einem technischen Kunstwerk. Klappt vielleicht noch, aber die Unterstützung für alte Hardware ist komplett weg gebrochen.

Einen neuen PC selbst zu erstellen, ist freundlicherweise recht preisgünstig möglich und selbst die preiswerteste Neuversion hätte - verglichen mit dem alten Möhrchen - eine Hammerleistung. Gerade RAM und Festplatten sind heutzutage sehr, sehr preiswert. Dann noch einen Win10-Key bei Ebä geschossen - Obacht: nicht reinfallen und sich einen Key für Win7 oder Win8 andrehen lassen - , dann hat man güngstig was Neues. Is klar, den 15 Jahre alten Monitor sollte man auch gleich entsorgen, gerade für die Opas unter uns ist ein klares und sehr scharfes (Schrift-) Bild von großer Bedeutung.

Wenn du in der Nähe des östlichen Ruhrpotts wohnen solltest, könntest du bei mir in meinen Arbeitskeller kommen und wir bauen deinen nächsten Neuen zusammen. Bin bestens in Übung, habe gerade erst für einen Enkel einen Hammer-Spiele-HochleistungsCompi gebaut. Genau genommen hat dieser Zwölf-einhalb-Jährige ihn selbst gebaut, nachdem ich die Klamotties gekauft hatte. Von diesem Compi träume ich noch. Den hätte ich selbst gerne, und der Knabe hatte sich als guter Zuhörer und geschickter Bastler gezeigt.
Grüße, picass


^Cobra

Ja ich denke werde auch auf der alten Version bleiben und auch c erstmal (wieder) weg lassen.
Der PC war schon lange nicht mehr im Einsatz. Es müsste mal ein neuer Laptop her aber auch dies wird noch paar Jahre warten müssen. 
Leider wohne ich nicht so örtlich davon. Aber danke für das Angebot. :) 

Ottmar

Man glaubt es kaum, aber bei mir ist seit meinem Einstieg 2009 in das Mikrokontroller-Hobby immer noch das gute alte MPLAB 8.6? In Betrieb. Hat den Vorteil, dass ich dieses ASM fast top kenne und auch der Simulator u.a. mir gut bekannt ist.

Zudem sind die dier noch unterstützten PIC16F, 18F u.a. von den Implementierten Modulen her gesehen vielseitig genug, um meinen Ansprüchen zu genügen.

Die ganzen modernen Typen bringen mir persönlich nichts Erforschenswertes
Anders sieht es dann aus, wenn man beruflich auf absolute Aktualtät angewiesen ist.

Ich will damit nur darauf anspielen, dass man rascher (im Hobbybereich) vorankommen kann, wenn man sich nicht unbedingt stets das Modernste zu eigen machen will.
MfG Ottmar
Like Like x 1 View List

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Similar topics (1)