Hallo, ich setzte mich gerade mit dem PIC32MX220F032B auseinander. Ich habe in C ein kleines LED Blink Programm geschrieben und es hat alles gut funktioniert. Vor dem PIC32 habe ich mit dem PIC16F887, den ich noch in Assembler programmiert habe, gearbeitet. Jetzt habe ich keine richtige Kontrolle mehr über die "Zeit" weil ich eben in C programmiere In Assembler wusste ich ja noch das ein Befehl (außer ein paar Ausnahmen wie GOTO) nur einen Takt benötigen wodurch ich exakte Zeiten bestimmen konnte, was oft sehr nützlich sein konnte. Bin ich jetzt komplett auf TIMER angewiesen? Ich wollte jetzt nur einmal zum testen eine LED Blink Programm in Assembler schreiben. Jedoch muss ich sagen, dass man kein einziges Tutorial findet was sich mit MIPS Assembler in Verbindung mit dem PIC32 auseinander setzt. Für MIPS Assembler alleine findet man ne ganze Menge aber eben nicht in Verbindung mit dem PIC. Den grundlegenden aufbau von dem MIPS Assembler verstehe ich langsam, jedoch habe ich keine Ahnung wie ich das an dem PIC32 anwenden kann. Z.B. wie spreche ich eine PORTx oder LATx "Register" an, handelt es sich jetzt überhaupt noch um Register oder um Speicherbereiche im RAM ? Es fällt mir schwer mich weiter in den PIC32 einzuarbeiten, wenn ich kein LED Blink Programm in Assembler als Grundlage habe, dass ich langsam modifizieren kann um zu experimentieren. Vielleicht kennt jemand die eine oder andere gute Seite/Buch oder kann mir dieses kleine Programm als Grundlage schreiben?
Michael schrieb: > Jetzt habe ich keine richtige Kontrolle mehr über die "Zeit" weil ich > eben in C programmiere > In Assembler wusste ich ja noch das ein Befehl (außer ein paar Ausnahmen > wie GOTO) nur einen Takt benötigen wodurch ich exakte Zeiten bestimmen > konnte, was oft sehr nützlich sein konnte. Das kannst Du auf nem MIPS auch in Assembler nicht besser. Die branch prediction macht das praktisch nahezu unmöglich. > Bin ich jetzt komplett auf TIMER angewiesen? Timer sind der bessere Weg. > Ich wollte jetzt nur einmal zum testen eine LED Blink Programm in > Assembler schreiben. Warum ? > Den grundlegenden aufbau von dem MIPS Assembler verstehe ich langsam, > jedoch habe ich keine Ahnung wie ich das an dem PIC32 anwenden kann. > Z.B. wie spreche ich eine PORTx oder LATx "Register" an, handelt es sich > jetzt überhaupt noch um Register oder um Speicherbereiche im RAM ? > > Es fällt mir schwer mich weiter in den PIC32 einzuarbeiten, wenn ich > kein LED Blink Programm in Assembler als Grundlage habe, dass ich > langsam modifizieren kann um zu experimentieren. Lass Dir von deinem bereits in C geschriebenen Beispiel vom Compiler halt mit "-S" in Assembler ausgeben.
Michael schrieb: > In Assembler wusste ich ja noch das ein Befehl (außer ein paar Ausnahmen > wie GOTO) nur einen Takt benötigen wodurch ich exakte Zeiten bestimmen > konnte, was oft sehr nützlich sein konnte. Ab einer gewissen Komplexität der Prozessoren ist eine exakte Zeitkalkulation von Befehlsfolgen mindestens schwierig bis praktisch sinnlos. Dann empfiehlt es sich eine Suche nach exakten Taktzählern, wie Timern, Systicks, TSCs etc. Bis zu einem gewissen Grad kann man noch mit selbst kalibrierendem Code dagegen halten, d.h. mit Schleifen, deren Verhalten anfangs mal gemessen wird. Wenn dann allerdings nichtdeterministische Methoden wie Caches und global arbeitende Sprungvorhersagen dazu kommen, dann ist auch das nur noch begrenzt einsetzbar.
:
Bearbeitet durch User
Michael schrieb: > Den grundlegenden aufbau von dem MIPS Assembler verstehe ich langsam, > jedoch habe ich keine Ahnung wie ich das an dem PIC32 anwenden kann. > Z.B. wie spreche ich eine PORTx oder LATx "Register" an, handelt es sich > jetzt überhaupt noch um Register oder um Speicherbereiche im RAM ? Ja es sind Register nur befinden sie sich nicht "in" der CPU sie sind Memory-mapped. Lies das XC32 Handbuch dort gibt es einige abschnitte über assembler, binde deine asm Funktionen über eine .S Datei ein. (das große S ist entscheidend) Und ja Cache und prefetch machen das genaue Zeitverhalten schwer vorhersagbar. Flash wait zyklen usw. sind auch noch zu bedenken.
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.