Hallo zusammen,
bin absoluter neuling im Umgang mit PIC Bausteinen. Habe mich jetzt
einige Tage eingelesen in Assembler. Habe auch schon den ein oder
anderen Tip hier im Forum lesen können, an dieser Stelle schon einmal -
schön das es so ein Forum gibt. Nur zu meinem Vorhaben konnte ich nichts
wirklich Nützliches finden. Ich möchte einen PIC 18F1220 benutzen. Zum
brennen habe ich von Microchip MPLAB ICD2 erfolgreich instaliert. Jetzt
fehlt mir nur noch ein Quelltext mit dem ich erstmal anfangen kann eine
programierung verstehen zu lernen.
Ich dachte hierbei an das Anlegen eines Signals an einen Port welches
über einen anderen wieder ausgegeben werden soll.
Eigentliche Aufgabe die der Pic später erfüllen soll ist die, dass er
ein Impuls 72Hz (die ansteigende Flanke eines Rechtecksignals) erhält
diesen dann abgeändert auf einem anderen Port ausgiebt. Abgeändert
heisst der Impuls soll wieder zu einem Rechteck werden jedoch mit
einer periodendauer von 80us (20us-high dann 60us-low nochmals 20us high
und dann low.
Über einen anderen Port soll die abfallende Flanke des Rechtecksignals
gespeisst werden und soll auch abgeändert wieder ausgegeben werden.
Jedoch mit einer Periodendauer von 40us hier dann (20us high - 20us low,
20us high - 20us low, 20us high - low).
hier kleine Skizze zum bessern Verständnis (nur model)
Rechtecksignal: _________----------__________----------_________
flanken detektiert:__________!_________!_________!_________!_________
abgeändertes Signal:_________-_-_______-_-_-_____-_-_______-_-_-_____
Hat jemand eine Vorstellung ob dies mit diesem Pic 18F1220 realisierbar
ist oder hat jemand einen Quelltext mit dem so etwas einfach mal
auszuprobieren wäre? Vielen Dank für eure Hilfe, ich hoffe ihr könnt
mir helfen.
Falls jemand ein gutes Tutorial zu dem MPLAB ICD2 gefunden oder gemacht
hat dann lasst es mich wissen hab was gutes noch nich gefunden, am
besten natürlich zu dem PIC den ich verwende.
MFG
muss es assembler sein? um die ersten schritte in der uC-welt zu machen,
würde ich dir den C18 und MPLAB empfehlen (beides gratis von Microchip).
ein einfaches tutorial findest du bei www.sprut.de -> C-Compiler
ich würde zuerst mit einem einfachen LED-blinklicht anfangen, dann mit
einem taster und LED was machen und dann das, was du möchtest. (für das,
was du willst, musst du sowieso diese schritte vorher machen - du
verlierst also damit keine zeit).
blacky wrote:
> Hallo zusammen,>> bin absoluter neuling im Umgang mit PIC Bausteinen.
Willkommen in der PIC-Welt.
> Jetzt> fehlt mir nur noch ein Quelltext mit dem ich erstmal anfangen kann eine> programierung verstehen zu lernen.
Auf http://www.sprut.de gibt es viele Infos zu PICs
Weiter auf:
http://www.fernando-heitor.dehttp://www.electronic-engineering.ch> Hat jemand eine Vorstellung ob dies mit diesem Pic 18F1220 realisierbar> ist
Geht schon. Wie genau müssen die Zeiten eingehalten werden?
> Falls jemand ein gutes Tutorial zu dem MPLAB ICD2 gefunden oder gemacht> hat dann lasst es mich wissen hab was gutes noch nich gefunden, am> besten natürlich zu dem PIC den ich verwende.
Der ICD2 ist eine nette runde Dose mit ein paar Anschlüssen. Viel gibt
es dazu nicht zu sagen (ausser wenn's mal nicht läuft).
Was Du lernen müsstest, ist die Bedienung von MPLAB selber, aber auch
die Assembler-Befehle für Deinen PIC.
Schreib mal ein kleines Programm, das einfach nur einen Ausgang immer
wieder ein- und ausschaltet (z.B. eine Led blinken lässt).
Wenn das läuft, kannst Du ja eine Led auf Tastendruck ein- und wieder
ausschalten oder so.
Dann bist Du reif für Dein Vorhaben.
Danke für die schnellen Antworten,
mit einer Einfachen Schaltung wollte ich auch anfangen. Leider habe ich
in Assembler keinen Quellcode für meinen PIC finden können. Habe gehört
das auch PIC16 Codes funktionieren können. Hat jemand vieleicht einen
Code oder kann ihn einfügen ich hänge mal meinen Bereits existierenden
unten ran.
Ich bin mir nicht ganz sicher wie und vorallem wo ich Ports des PIC als
Eingänge und Ausgänge deklarieren kann. Anhand des Datenblatts konnte
ich zwar Blockdiagramme für verschiedene Ports finden.
Hoffe auf baldige Hilfe!
LIST P=18F1220 ;directive to define processor
#include <P18F1220.INC> ;processor specific variable definitions
;***********************************************************************
*******
;Configuration bits
;Microchip has changed the format for defining the configuration bits,
please
;see the .inc file for futher details on notation. Below are a few
examples.
; Oscillator Selection:
CONFIG OSC = LP ;LP
;***********************************************************************
*******
;Variable definitions
; These variables are only needed if low priority interrupts are used.
; More variables may be needed to store other special function registers
used
; in the interrupt routines.
CBLOCK 0x080
WREG_TEMP ;variable used for context saving
STATUS_TEMP ;variable used for context saving
BSR_TEMP ;variable used for context saving
ENDC
CBLOCK 0x000
EXAMPLE ;example of a variable in access RAM
ENDC
;***********************************************************************
*******
;EEPROM data
; Data to be programmed into the Data EEPROM is defined here
ORG 0xf00000
DE "Test Data",0,1,2,3,4,5
;***********************************************************************
*******
;Reset vector
; This code will start executing when a reset occurs.
ORG 0x0000
goto Main ;go to start of main code
;***********************************************************************
*******
;High priority interrupt vector
; This code will start executing when a high priority interrupt occurs
or
; when any interrupt occurs if interrupt priorities are not enabled.
ORG 0x0008
bra HighInt ;go to high priority interrupt routine
;***********************************************************************
*******
;Low priority interrupt vector and routine
; This code will start executing when a low priority interrupt occurs.
; This code can be removed if low priority interrupts are not used.
ORG 0x0018
movff STATUS,STATUS_TEMP ;save STATUS register
movff WREG,WREG_TEMP ;save working register
movff BSR,BSR_TEMP ;save BSR register
; *** low priority interrupt code goes here ***
movff BSR_TEMP,BSR ;restore BSR register
movff WREG_TEMP,WREG ;restore working register
movff STATUS_TEMP,STATUS ;restore STATUS register
retfie
;***********************************************************************
*******
;High priority interrupt routine
; The high priority interrupt code is placed here to avoid conflicting
with
; the low priority interrupt vector.
HighInt:
; *** high priority interrupt code goes here ***
retfie FAST
;***********************************************************************
*******
;Start of main program
; The main program code is placed here.
Main: goto Init
Haupt
goto Haupt
Init movlw 0x20
movwf FSR0
RAMClr clrf INDF0
incf FSR0,1
btfss FSR0,7
goto RAMClr
return
; *** main code goes here ***
;***********************************************************************
*******
;End of program
END
ach ja beim debugen kommt folgende Fehlermeldung:
Make: The target "F:\Diplomarbeit\MpLab\Test1.o" is out of date.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q
/p18F1220 "Test1.asm" /l"Test1.lst" /e"Test1.err" /o"Test1.o"
Make: The target "C:\Programme\Microchip\MPASM
Suite\Template\Code\1220temp.o" is up to date.
Skipping link step. The project contains no linker script.
BUILD FAILED: Wed Apr 08 15:31:43 2009
mir macht das Skipping link step sorgen weil ich nicht weiß wo ich ein
linker script finde.
blacky wrote:
> Danke für die schnellen Antworten,
Bitte.
> mit einer Einfachen Schaltung wollte ich auch anfangen. Leider habe ich> in Assembler keinen Quellcode für meinen PIC finden können.
Den Quellcode musst normalerweise Du schreiben.
> Habe gehört> das auch PIC16 Codes funktionieren können. Hat jemand vieleicht einen> Code oder kann ihn einfügen ich hänge mal meinen Bereits existierenden> unten ran.
Hast Du mal die Links angeschaut? In der kurzen Zeit konntest Du kaum
auch nur einen Bruchteil davon lesen.
> Ich bin mir nicht ganz sicher wie und vorallem wo ich Ports des PIC als> Eingänge und Ausgänge deklarieren kann.
Musst die TRISx Register entsprechend setzen.
TRIS ist ein unglücklicher Bezeichner, aber das Ding heisst nun mal so
(stand für TRIState). Eigentlich bestimmt es die Datenrichtung:
0=Output, 1=Input (=Default bei Reset)
> ach ja beim debugen kommt folgende Fehlermeldung:
Will nicht kleinlich sein, aber die Meldung kommt beim Build-Prozess.
Weil der misslang, bist Du schon gar nicht zum Debuggen gekommen.
> mir macht das Skipping link step sorgen weil ich nicht weiß wo ich ein> linker script finde.
Unter \MCC18\lkr
Einfach zum Projekt hinzufügen.
meld dich doch wider, wenn du das tutorial von sprut durchgemacht hast.
ja?!? vorher müsste ich von dieser seite ein copy-paste machen - und ich
finde es einfacher, wenn du gleich dort liest (zumald du dort auch
bilder hast)
Auf den Seiten von Sprut und Vernando Heitor war ich schon die letzten
Tage unterwegs gewesen. Habe aber an diesem Forum gefallen
gefunden,deshalb schreibe ich euch!
Das ich den Quellcode normalerweise selbst schreiben muss ist mir klar,
wollte nur mal nen anhaltspunkt haben oder nen Code zum verstehen lernen
wie die Ports definiert werden oder so.
Naja egal ich werd mal das Tutorial durchmachen obwohl ich nicht mit C18
sondern Assembler arbeiten wollte.
Vielen Dank für die Mühen die ich gemacht hab und ein Frohes Osterfest
allen!
blacky wrote:
> Auf den Seiten von Sprut und Vernando Heitor war ich schon die letzten> Tage unterwegs gewesen. Habe aber an diesem Forum gefallen> gefunden,deshalb schreibe ich euch!
Hier wird z.B. die Sache mit den I/O-Ports erklärt:
http://www.fernando-heitor.de/component/option,com_openwiki/Itemid,123/id,mikrocontroller:einfuehrung/> Das ich den Quellcode normalerweise selbst schreiben muss ist mir klar,> wollte nur mal nen anhaltspunkt haben oder nen Code zum verstehen lernen> wie die Ports definiert werden oder so.
Auf welchem Board benutzt Du Deinen PIC18F1220? Hast Du ein Demo-Board
von Microchip oder von Drittanbietern oder selbstgebaut?
Für Boards von Microchip gibt es z.T. fertige Beispiele und "Lessons".
Z.B. für das PICDEM 2 Plus:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010072&part=DM163022
oder zwar für PIC16, aber trotzdem lehrreich, weil es ganz kleine
Beispiele sind:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010053&part=DV164101
"PICkit™ 1 All Lessons" herunterladen.
Kleines Beispiel für PIC18:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2619
"Reading a button and operating LED's with the 18CXXX"
> Naja egal ich werd mal das Tutorial durchmachen obwohl ich nicht mit C18> sondern Assembler arbeiten wollte.
Sorry, hatte ich bei der Sache mit dem Linkerscript vergessen.
Für Assembler sind sie hier:
C:\Programme\Microchip\MPASM Suite\LKR
Bei Problemen empfiehlt es sich, das ganze Projekt zu zippen und zu
posten. So können andere das u.U. nachvollziehen, wenn das Problem nicht
allzusehr mit der Hardware zusammenhängt.
In den neuesten MPLAB-Versionen ist eine Funktion eingebaut, um das
ganze Projekt zu zippen. Sonst das ganze Verzeichnis mit einem separaten
ZIP-Utility zippen.
Wie gut verstehst Du Englisch?