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