dsPIC33F Prototyp-Platine Letzte Aktualisierung: 2015-02-07


Wer sich mit einem Mikrocontroller auseinandersetzen möchte, benötigt zunächst einen Minimalaufbau.
Die hier vorgestellte Platine ist mit einem 16Bit Mikrocontroller dsPIC33FJ128GP706-I/PT bestückt.




Erstmals habe ich UV härtbaren Lötstopplack verwendet.
Die Platine ist einseitig gefertigt und nur mit wenigen Brücken auf der Rückseite




Die Platine ist wie immer gefräst.





Schaltplan und Eagle-Dateien

Download: Eagle-Datei (Eagle V6.4)

Download: PNG-Bild der Leiterbahnen




Pinbelegung der Platine





Hello World (das erste Assembler-Programm)

Bis das erste Programm läuft gibt es einige Wiederstände zu überwinden. Entwicklumgen für Mikrocontroller mache ich nur in Maschinensprache (Assembler).
In dem folgenden Beispielprogramm wird Portpin G0 im Abstand von einer Sekunde ein- und ausgeschaltet.

;****************************************************************************** ; Beispielprogramm für dsPIC33FJ128GP706 .equ __p33FJ128GP706, 1 .include "p33FJ128GP706.inc" config __FOSCSEL, FNOSC_PRIPLL & IESO_ON config __FOSC, POSCMD_HS & OSCIOFNC_OFF config __FICD, ICS_PGD1 & JTAGEN_OFF .global __reset .section .text __reset: ; PLL für 40MHz mit 20MHz Quarz mov #0b0000000000000010,W0 mov W0,CLKDIV mov #0x001E,W0 mov W0,PLLFBD pllunlock: btss OSCCON,#LOCK bra pllunlock ; Stack Pointer initialisieren mov #__SP_init,W15 mov #__SPLIM_init,W0 mov W0,SPLIM nop mov #0b1111111111111110,W0 ; Port G0 als Ausgang mov W0,TRISG ; Hauptprogramm mov #10000,W0 m: bset LATG,#0 call delay_ms bclr LATG,#0 call delay_ms bra m ;****************************************************************************** ; delay_ms Pause W0 * 1ms bei 25ns/Zyklus (W0 * 40000 Zyklen) delay_ms: ; 2 push W0 ; 1 repeat #15000-1 ; 1 nop ; 1 repeat #15000-1 ; 1 nop ; 1 repeat #10000-1-10 ; 1 nop ; 1 sub #1,W0 ; 1 bra Z,dms3 ; 2 (1) ; fehlen noch 5 dms1: repeat #15000-1 ; 1 nop ; 1 repeat #15000-1 ; 1 nop ; 1 repeat #10000-1-4 ; 1 nop ; 1 nop ; 1 sub #1,W0 ; 1 bra NZ,dms1 ; 2 (1) ; fehlen noch 5 nop ; 1 dms3: pop W0 ; 1 return ; 3 (2)



Download (Ziel speichern unter...): Beispielprogramm myProg.s

Bei der Wahl der Entwicklungsumgebung gibt es leider nicht viel Auswahl. Ich benutze den vom Hersteller gelieferte "MPLAB ASM30" aus einer älteren Version des riesigen MPLAB-Paketes. Es ist möglich sich das aus der Installation vom MPLAB entstandene Verzeichnis "...\MPLAB ASM30 Suite\" herauszukopieren. Anschließend kann MPLAB wieder deinstalliert werden.
Die prozessorspezifischen Dateien: p33FJ128GP706.inc und p33FJ128GP706.gld kopiere ich mir in das aktuelle Verzechnis.

Erzeugen der für das Programmiergerät erforderlichen HEX-Datei erfolgt für ein Beispielprogramm "myProg.s" z.B. mit:

"...pfad...\MPLAB ASM30 Suite\bin\pic30-as" myProg.s -p33FJ128GP706 -o myProg.o -am -al=myProg.lst
"...pfad...\MPLAB ASM30 Suite\bin\pic30-ld" myProg.o -o myProg.cof -T p33FJ128GP706.gld -Map myProg.map
"...pfad...\MPLAB ASM30 Suite\bin\pic30-bin2hex" myProg.cof -u -v

Es entsteht eine Datei myProg.hex

Das Programm kann nun über die ICSP-Schnittstelle in den dsPIC33 "geschoben" werden.
Ich verwende hierzu einen "PICKit2 Clone", aber das ist eine andere Geschichte...


Startseite