Hallo!! Ich brauche hilfe in C-Programmierung für den PIC 12F629. Ich kann bißchen C programmieren aber ich habe noch nie eine PIC programmiert. Deshalb würde ich gern ein beispiel habe. Am besten mit vielen Komentaren.Habe gehört das für den anfang eine Diode aufblinken lassen ein gutes Beispiel ist.Deshalb würde ich das gerne sehen.die diode soll bei GPIO1 ein und aus gehen. Ich weiß nicht, wie ich die Prots ansprechen soll. Ich möchte den SourceBoost mit MPLAP verwenden. Und habe irgendwo gelesen, dass es Compailerabhängig ist, wie das programmiert wird. ist das wahr?? wann ja wieso?? wenn ich normal in C in Dev-C++ programmiere, dann geht das program auch in VisualStudio. Ich danke schon jetzt!!!
aber in CVI wirst du mit dem C-file bei gewissen funktionen probleme bekommen, da nicht jeder Compailer die selbe syntax benutz.Aber wenn es ansi-C befehle sind, müssten sie überall funktionieren. Nun zum eigentlichen Problem. Ich programmiere schon ein bisschen mit den PICs benutze aber CCS (irgendwie hängen die zusammen, frag mich aber nicht wie ;-)). Das problem bei der ganzen geschichte ist, dass zb der CCS compailer sonderfunktionen hat die einiges erleichtern aber die andere nicht verstehen. ich versuch mal ein programm allgemein zu schreiben. Wichtig zu beachten ist, dass du immer darauf achtest, ob ein Pin als eingang oder als ausgang definiert ist.
Warum hast du eigentlich genau diesen Controller gewählt? Gibt ja einige andere µC von Microchip, für die es doch einige Übungsprogramme gibt.
Weil ich ein Praktikum mache und damit gearbeitet wird. D.h. man mußte auch bei der Wahl des PICs wirtschaftlich denken.
Ach, und danke Dir schon sehr für deine schnelle antwort!!!!!;-)
Sodala... ich hoff es passt so. Ich kann dafür aber nicht garantieren ;-), denn ich kenne deinen chip nicht. Aber so würd ich es Programmieren.
ich hoffe es funktioniert, ansonst würde ich auf die seite www.fernando-heitor.de verweisen. Ist mein Favorit, wenn es um PICs geht.
ohhhh, das ging ja super schnell!!!Nochmals vielen dank. werde es morgen testen und dir sagen wie es läuft. wollte eigentlich heute schon, wie schon öffter, um 22 uhr im bett sein ;-/ Schaffe ich aber irgendwie nie!!!;-) Werde wahrscheinlich öfter hier was reinschreiben. dann aber hoffentlich schon mit meimem Program mit fragen dazu. bis dann!!!
Hi!!! Danke nochmals für deine Hilfe. Habe jetzt Dein Programm bißchen modifiziert und es läuft. Doch leider blinken bei dieser Modifikation nur 4 LEDs. Die LED am GP1(PIN 6 des PICs) blinkt nicht, obwohl ich alle LEDs angesprochen habe. Ich habe an GP0,GP1,GP2,GP4 und GP5 Dioden angeschlossen. Also an allen möglichen ausgängen. GP3 läßt sich ja nur als Eingang betreiben. Wieso ist das so? bzw. was ist falsch am programm?? Und meine zweite frage: Wenn ich delay wegkommentiere und dazu die while-schlafen aktiviere, sollten doch eigentlich auch die Dioden blinken. Aber es tut sich nichts. wieso? Bis dann
Leuchten sie nur auf ungefähr der halbe Stärke? Der Grund ist wohl der, dass du var nie zurücksetzt. Also er zählt Sie in der ersten Schleife bis 100 hoch und wenn er in dei 2. schleife springen will ist aber die Bediengung der Schleife nicht erfüllt. Wenn du deine Wartefunktion mit Schleifen machen willst, dann musst du beachten, das es zu sehr vielen Durchläufen kommen muss, da das ja recht schnell geht. Hast du mit dem Oszi den PIN überprüft ob er dir das Signal ausgibt? vl liegt ja ein Hardwarefehler vor. Nun habe ich eine fragen an dich. Was ist "volatile" bzw was machst du damit? ich selbst habe diese deklaration nie benutzt, deswegen frage ich.
Hi!!!:-) Also erstmal zu Deiner Frage: "volatile" soll bewirken, dass der Compailer denkt, dass die Variable noch irgendwo im programm verändert wird. Das ist sozusagen eine vorsorgen, dass er die while-schleife nicht wegoptimiert. Jedenfalls in der theorie;-) Ich habe auch einen Oszi angeschlossen, aber leider nichts zu sehen, als wird die Schleifen doch vom Compailer wegoptimiert Aber mein größeres Problem ist ja eigentlich, wieso die GP1 Diode nicht einmal unter der Programmierung "delay_ms" geht. Zur GP1 kommt keine Spannung an. Ich kann die GPs: 0,2,4 und 5 jeweils getrennt ansprechen. Aber den GP1 nicht. da tut sich nichts. Habe ich vielleicht eine sonderstellung des Pins 1 übersehen?? jedenfalls fällt mir nichts auf
So, das mit GP1 hat sich erledigt. Hab vergessen eine Lötbrücke zu setzten*peinlich* Jetzt funktioniert es auch richtig.
ich würde die schleifen einfach so machen: int x; while(x<100) x++; x=0; ... while(x<100) x++; x=0; sollte normal funktionieren.
Ja, danke!!!! also der PIC funktioniert jetzt so, wie ichs gern hätte. jetzt will ich auf den eeprom schreiben bzw auslesen. Wenn ichs so richtig verstanden habe, was der eeprom macht soll, ist das elektrisch programmierbar zu sein und bei U= 0 V die daten speichern. Also kann man auch ohne Programmer darauf schreiben. Weißt du wie?? Also rein theoretsich kann ich jetzt das gleiche programm auf den eeprom schreiben, was ich auch für den FLASH geschrieben habe. Wenn was falsch ist, bitte berichtigen. Bis dann!!!
hm... zuerst müsst man einmal wissen welches EEPROM du schreiben möchstest. Im Datenblatt steht dann drin wie es Programmiert wird. Was soll es dir denn bringen, wenn dein Programm auf dem EEPROM drauf ist? Dieser PIC besitz glaube ich nicht die Funktion das er das Programm vom EEPROM starten kann. Aber ich muss zugeben, ich kenn mich mit EEPROMs nicht so aus. sorry. Aber es sind einige Threads zu diesem Thema in diesem Forum. mfg schoasch
Hey! Ich möchte den eeprom von dem PIC 12F629 beschreiben. Oder habe ich jetzt Deine Frage missverstanden? Soweit ichs richtig verstanden habe, werde die daten auf eedata gespeicher. Bist dir ganz sicher, dass der Pic nicht das Prog. vom EEPROM starten kann? Bringen sollte mir eigentlich das programmieren auf den EEPROM des PIC nur so viel, dass ich sehe, dass es auch klappt. einfach nur zur übung. Oder hast du vielleicht eine Anfängeraufgabe für mich, wo ich den eeprom mit einbringen muß?:-) den so fällt mir nichts ein. cu
sorry das ich dir jetzt schreibe. soweit ich weis gibts dafür eine spezielle schnittstelle am PIC die das unterstützt nur nicht jeder PIC unterstützt diese Funktion. Dazu musst du im Datenblatt nachsehen ob das da funktioniert. hm.. ein Programm... wie wärs vl mi einem Datenlogger? also häng vl einen Tempsensor an den PIC, lies die Temperatur ein und speicher sie. Das ganze lässt du mal eine Zeit so laufen und dann fragst du mittels dem PC gleich die Daten ab. wäre ja ne schöne idee oder nicht? mfg chillin´ schoaschi
Hi!! Die Idee ist gut! werd mich daran versuchen. welchen Tempsenor würdest du den mir empfehlen?? noch einen schönen Abend!
hm.. kommt drauf an welche variante das du benutzen willst und in welchem Temperaturbereich es sein soll. falls du,sagen wir mal, im bereich von -55Grad und 120Grad messen willst, dann könntest du einfacherweise einen LM75 verwenden. das ist ein Temperatursensor mit IIC interface. also hättest du bei deinem Übungsprogramm auch gleich noch einen IIC übung :D. oder du nimmst einfach einen temperaturabhängigen widerstand und arbeitest mit dem AD-Wandler. ansonst kann ich dir keinen spezifischen empfehlen, denn das hängt von der anwendung ab (auflösung,tempbereich usw)
HI! kann es doch nicht mit dem Tempsensor machen, da der PIC keinen A/D-Wandler hat ;-( Aber ich bekomme leider es auch nicht hin den PIC, d.h. den EEPROM zu beschreiben und später wieder auszulesen. Weiß auch nicht so recht, wie ich vorgehen soll. Also um dem PIC den EEPROM beschreiben zu können, was muß ich wo adressieren?? Hier ist das Datenblatt zum PIC 12F629: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2057&ty=&dty=Data+Sheets§ion=Data+Sheets&ssUserText=PIC12F629. Als Anhang ist mein spärlicher versuch sowas zu schreiben. Aber es kommt ne fehlermeldung. Bis dann!
da ist kein anhang :D das datenblatt vom EEPROM wäre allerdings auch interessant :D. mit dem würde man mehr anfangen.:-)
HI! Upps,habs wohl vergessen das Prog. anzuhängen. Habs jetzt auch leider nicht hier,weil ich nicht zu hause bin.;-/ Aber das Datenblatt zum EEprom ist doch mit beim PIC_datenblatt auf der seite 12 und den seite 49-52. Oder brauchst du noch mehr?? Wenn ja,dann weiß ich nicht wo ich das herbekomme;-/ Hab sonst nichts gefunden. Ich danke dir noch mals sehr,dass du mir so hilfst. mfg
Hi! Jetzt vergesse ich nicht das Programm anzuhänge;-/ Ist jetzt nicht das was ich gestern noch hatte(glaub mir, war auch nicht sehenswert;/). Habs dieses im internet gefunden, Und nach einer kleinen Modifikation funktioniert auch nicht. Langsam mach mich der EEPROM verrückt :-/
Das ist die Fehlermeldung des Compailers die dann rauskommt: Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\Program Files\SourceBoost\boostc.pic16.exe" nocheintest.c -O1 -W1 -t 12F629 BoostC Optimizing C Compiler Version 6.00 (for PIC16 architecture) http://www.picant.com/c2c/c.html Copyright(C) 2004-2005 Pavel Baranov Copyright(C) 2004-2005 David Hobday Single user Lite License (Unregistered) for 0 nodes Limitations: PIC12/PIC16 max code size:2048 words, max RAM banks:2, Non commercial use only nocheintest.c nocheintest.c(5:9): error: left operand must be l-value nocheintest.c(5:9): error: failed to generate expression nocheintest.c(11:11): error: unknown identifier 'FALSE' nocheintest.c(11:11): error: invalid operand 'FALSE' nocheintest.c(11:9): error: failed to generate expression nocheintest.c(14:9): error: left operand must be l-value nocheintest.c(14:9): error: failed to generate expression nocheintest.c(16:11): error: unknown identifier 'uCodeLaenge' nocheintest.c(16:11): error: invalid operand 'uCodeLaenge' nocheintest.c(16:9): error: failed to generate expression nocheintest.c(16:2): error: error in the body of 'if' expression nocheintest.c(21:9): error: left operand must be l-value nocheintest.c(21:9): error: failed to generate expression nocheintest.c(23:9): error: left operand must be l-value nocheintest.c(23:9): error: failed to generate expression nocheintest.c(24:11): error: unknown identifier 'TRUE' nocheintest.c(24:11): error: invalid operand 'TRUE' nocheintest.c(24:9): error: failed to generate expression nocheintest.c(27:9): error: left operand must be l-value nocheintest.c(27:9): error: failed to generate expression failure BUILD FAILED: Tue Jun 28 12:26:32 2005
achsooooo... du willst das interne EEPROM vom PIC ansprechen?! ich dachte du wolltest ein externes Ansprechen.... sorry mein fehler. Das problem ist, dass ich dir momentan nicht so gut helfen kann, da ich nicht daheim bin sonden eigentlich von da maturareise aus schreibe :D und wir da keine PDFs ausmachen können. gibts nicht vl auch schon vorgefertigte funktione wie zb EEPROM_write oder so? und ist es im datenblatt nicht gut beschrieben wie das funktioniert? müsste ja nur beschreiben von bestimmten registern sein oder?! mfg schoasch
Hi! Du bist auf einer Maturareise und nimmst dir noch die zeit hier im forum zu helfen??!! respekt und vielen DANK!!! Wo hast du den so viel von PIC gelern?? Ja, es gibt ein EEPROM CONTROL REGISTER(ADDRESS:9Ch)-EECON1 bit 7-4 unimplemented bit 3 WRERR:EEPROM Error Flag bit bit 2 WREN: EEPROM Write Enable bit bit 1 WR: Write Control bit bit 0 RD: Read Control bit Ich glaube das hast du gemeint. Ja, im Datenblatt ist alles erklärt, leider läßt mein Englisch zu wünschen übrig und 2. sind da nur Assembler-Beispiel :-/ Und ich habe schon leider mühe meine C-kenntnisse(wenn mans püberhaupt als Kenntnisse bezeichnen kann) hier anzuwenden. nochmals vielen dank!!!
lol sorry... das mit dem pdf aufmachen haut da echt nicht hin... hätte den laptop grad zum aufhängen gebracht :D So mir´ist noch eine idee gekommen. vl hilft dir das etwas. hast du schon mal auf der microchip seite geschaut? da gibts beispiel- und hilfeprogamme, unteranderem auch zum programmieren des EEPROMS. Direkter Link aufs pdf: http://ww1.microchip.com/downloads/en/DeviceDoc/41191C.pdf Oder: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1335&dDocName=en010113 Ich muss zugeben, mein wissen über PICs ist (noch) nicht wirklich gross. ich hab in der schule eigentlich nur mit 8051er (atmel, infineon) zu tun gehabt und hab eigentlich erst vor ca 3 monaten mit den PICs begonnen. woher ich mein wissen habe, kann ich dir gern verraten: einerseits von www.sprut.de . diese seite ist sehr gut für grundlagen und wenn es um assambler geht. und die andere seite wo man sehr sehr viel lernt und welche auch mein favoriert ist, ist www.fernando-heitor.de . diese befasst sich hauptsächlich mit dem CCS compiler... aber mit etwas nachdenken ist es sehr leicht möglich es auf alle compiler umzusetzen. Vorallem da Bernd in diesem Forum ist sehr hilfreich und kann gut erklären und erklärt das meistens eben nicht über speziallfunktionen sondern eben Über die register (darum auch meine frage bezüglich dem register ;-)). also dort solltest du auch mal rein schaun. vl findest du auch dort ein paar beispielprogramm... bin mir ziemlich sicher. es gibt dort eine eigenen kategorie für beispielprogramme. und fast alle in C. also schau mal rein :D(falls mein link nicht stimmt, dann schau in der linksammlung, da hab ich sie auch rein geschrieben.) so, aber jetzt gehts wieder ab an den pool zum sonnen :D schöne grüsse und viel erfolg.
So.. jetzt bin ich mal zurück aus dem "urlaub" :D... nur jetzt brauch ich dann mal ned kleine erholungsphase :D gibts schon neuigkeiten?
Hi!! Ja,bin dabei zu testen, ob wirklich auch der eeprom angesprochen wird usw.;-) Und ich bin so gnädig, laß Dir noch heute die Erholungsphase, aber wahrscheinlich morgen kommen wieder meine Fragen;-) dann noch einen schönen abend;-)
:-) OK... kein problem. Dann warte ich schon auf deine Fragen und deine Erfolge :D
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.