Forum: Mikrocontroller und Digitale Elektronik PIC32 Assembler


von alig (Gast)


Lesenswert?

Moin ich habe mir neulich ein PIC32 Starter Kit (mit nem PIC32MX360F512L 
drauf) zugelegt und muss damit für die Uni ein bischen mit Assembler 
programmieren. Mein Problem ist, das es für dieses Board im Grunde nur 
Tutorials für die C-Programmierung gibt, nicht aber für Assembler. Ich 
komme damit momentan überhaupt nicht klar. Wenn jemand ein Tutorial 
dafür empfehlen könnte würde ich mcih sehr freuen. Ansonsten wärs schon 
cool zu wissen wie man mit Asembler die LED´s auf dem Board ganz simpel 
ein und Ausschaltet. Danke

von Hendi (Gast)


Lesenswert?

Guck mal hier, das hilft vermutlich beim Einstieg. 
http://sprut.de/electronic/pic/assemble/assembler.html

von alig (Gast)


Lesenswert?

Danke, aber diese Seiten mit solchen Einführungen kenne ich alle schon.
Mein Problem besteht eher darin, dass die Befehle die dort verwendet 
werden bei meinem PIC anders sind und ich nciht in der Lage bin die zu 
sozusagen zu übertragen...

von chris (Gast)


Lesenswert?

Hallo,
such mal nach: mips assembler tutorial
ist das so schwer ?

LG Chris


PS. pic32 = eingekaufte Mips Architektur

von Michael E. (cuby)


Lesenswert?

Der PIC32 ist kein traditioneller PIC, sondern hat einen von MIPS 
lizensierten 32-Bit-Kern (MIPS M4k-Core - 
http://www.mips.com/products/cores/32-64-bit-cores/mips32-m4k/). Zu 
MIPS-Assembler gibt's jede Menge Doku. Ein gutes Buch zur Einführung in 
die MIPS-Architektur ist "See MIPS Run" von Dominic Sweetman, Kapitel 9 
geht da auf Assembler-Programmierung ein. Ansonsten behandeln auch viele 
einführende Kurse in Rechnerstrukturen die MIPS-Architektur und 
-Assemblerprogrammierung, Material findet sich jede Menge.

Allerdings ist MIPS als klassischer RISC jetzt nicht unbedingt die am 
Besten zur Programmierung in Assembler geeignete Architektur, insofern 
ist die Verwendung von C schon ganz sinnvoll...

von Michael E. (cuby)


Lesenswert?

Noch ein Hinweis zur Vorgehensweise - du musst zur Ansteuerung der LEDs 
für dein Board erstmal herausfinden, an welchen Pins des 
PIC32-Controllers die LEDs angeschlossen sind. Ich vermute mal, das 
Handbuch hier - 
http://ww1.microchip.com/downloads/en/DeviceDoc/61159B.pdf - ist das 
passende. Danach ist die Information über die LEDs in Fig. A6 zu finden. 
Das sind in diesem Fall die Pins OC1/RD0 (rote LED), OC2/RD1 (gelbe LED) 
und OC3/RD2 (grüne LED).

Danach musst du für die Pins OC1/RD0 (das ist ein Pin mit verschiedenen 
Funktionen), OC2/RD1 und OC3/RD2 die passenden I/O-Adressen zur 
Ansteuerung herausfinden (I/O bei MIPS ist memory mapped, also über 
"normale" Lese-/Schreibbefehle wie Hauptspeicher ansprechbar). Dazu 
dürfte dann http://ww1.microchip.com/downloads/en/DeviceDoc/61143G.pdf 
das passende Dokument sein. Auf den ersten Blick ist da Tabelle 4-25 
(Seite 71) passend.

Eventuell gibt's für C bereits passende Header-Dateien, in denen man die 
Information auch findet.

Dann musst du nur noch herausfinden, wie man mit MIPS-Assembler einen 
Wert in ein Register lädt und das dann an die richtige Adresse für die 
LEDs schreibt. Evtl. muss vorher der Port aber noch auf die richtige 
Funktion konfiguriert werden - dazu einfach mal ein wenig im Datenblatt 
zur CPU suchen.

Viel Spaß!

von alig (Gast)


Lesenswert?

Vielen Dank! Das bringt mich alles auf jeden Fall schon mal weiter!

von Michael E. (cuby)


Lesenswert?

Noch ein Tip (konnte den vorigen Eintrag nicht mehr editieren, deshalb 
noch ein neuer).

MIPS ist für Anfänger etwas gemein, weil es verschieden funktionierende 
Adressbereiche gibt - insbesondere welche, für die der TLB und/oder 
Cache aktiv ist (mapped/cached). Du musst zum Schreiben auf I/O-Adressen 
auf den unmapped und uncached Adressbereich zugreifen (wobei der MIPS im 
PIC32 - glaube ich - keinen TLB hat und daher etwas weniger Probleme 
macht). Dazu am Besten in "See MIPS Run" nachlesen.

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.