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.de http://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?
Linker hab ich gefunden, Danke. Habe ein selbstgebautes Board um den PIC zu brennen. English ist kein problem, meistens! schönen Abend noch zusamm
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.