Hallo, ich bin dabei mich in die mikrocontrollerprogrammierung einzulernen. ich habe zuvor bereits einige spielereien mit arduino ausprobiert. ich lerne nun gerade mplab und den hi tech compiler c kennen. zum brennen der chips setze ich den sprut brenner 8 ein mit der zugehörigen software us-burn. um die schaltung zu testen nutze ich ein kleines selbstgebautes experimentierboard. ich wollte fragen ob mir jemand aus seiner erfahrung raus tipps und empfehlungen geben kann bzw. will wie man am besten an das thema ran geht. z.b. mit einem buch was einen stück für stück anlernt (suche verzweifelt nach genau so einem buch, da ich gerne lernbücher zur stütze habe, war bei arduino auch so und hat super geholfen) oder andere tipps. momentan mache ich es eher nach dem prinzip ,, einfach drauf los,, würde mich über rückmeldungen freuen PS: ich habe bereits angefangen ein kleines programm für einen pic 16f887 zu schreiben. es soll die ports a,b,c blinken lassen. aber das problem ist das nicht alle leds angesteuert werden. bei port A blinken die leds 6 und 7 nicht aber 0,1,2,3,4,5 blinken. bei port B genau das gleiche. finde nicht heraus woran es liegt. ich vermute das die ports nicht leuchten weil sie bereits für andere zwecke reserviert sind, steht im datenblatt. ist es möglich alle leds an den ports als reine i/o ports zu nutzen ? das ist mein code: _____________________________________________________________________ #include <stdio.h> #include <stdlib.h> #include <htc.h> #include <pic.h> #include <pic16f887.h> #define _XTAL_FREQ 4000000 __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_ON & IESO_ON & FCMEN_ON & LVP_OFF &); __CONFIG(BOR4V_BOR40V & WRT_OFF); void main(void){ TRISA = 0b00000000; TRISB = 0b00000000; TRISC = 0b00000000; while(1){ PORTA = 0b00000000; PORTB = 0b00000000; PORTC = 0b00000000; __delay_ms(1000); PORTA = 0b11111111; PORTB = 0b11111111; PORTC = 0b11111111; __delay_ms(1000); } }
Wie überall gilt auch hier: Du must das mächtigste Werkzeug ausserhalb deines Kopfes benutzen: das Datenblatt. Dort steht z.B: 3.1 PORTA and the TRISA Register PORTA is a 6-bit wide, bi-directional port. D.h., ddie oberen beiden Bits fehlen. Tip: Zum lernen sind die PICs für einen Anfänger nicht die Königslösung. sie sind ziemlich sperrig und scharfkantig, bei den Atmegas tust du dich erheblich leichter, auch ist dieses Forum hier deutlich AVR-lastiger.
Beim 16F887 ist der PortA auch 8-Bit breit. Da aber auf Grund von <CONFIG(FOSC_HS .......> an RA6 und RA7 offensichtlich ein Quarz hängt, wird dort nichts blinken.
Ahhh! Hab im PIC16F87X Data Sheet geschaut. Hast recht, der PIC hat als einer der wenigen nen 8-bit Port (das meinte ich mit sperrig und scharfkantig), und, jetzt seh ichs auch, der Osc.quartz hängt an OSC1/RA6 und OSC2/RA7. @TO: Du mußt in diesem Fall den internen Ozillator benutzen, dazu mußt du das "FOSC_HS" in __CONFIG(FOSC_HS... gegen den RC-Oscillator ersetzen. Ich kenne den Syntax des hitech Conpilers nicht, könnte aber FOSC_RC, OSC_RC o.ähnl. lauten. Dann sollten sich alle Bits von PORTA umschalten lassen.
danke für die schnellen rückmeldungen. Ich werde versuchen die configurationseinstellungen zu ändern. auf meine andere frage zurück zu kommen, kennt jemand von euch vielleicht ein buch was einem das erlernen der mikrocontrollermaterie erleichtert? kann auch ruhig über atmel chips sein. vlg
Ich find den Tip nicht so besonders;) Ich hab auch mit PICs angefangen und bin mit klar gekommen. Abgesehen davon hat er ja schon etwas zum Programmieren, obwohl ein PICKIT schon deutlich mehr kann und man auch direkt aus MPLAB brennen kann. Joachim ... schrieb: > Du mußt in diesem Fall den internen Ozillator benutzen, dazu mußt du das > "FOSC_HS" > in > __CONFIG(FOSC_HS... > gegen > den RC-Oscillator ersetzen. Ich kenne den Syntax des hitech Conpilers > nicht, könnte aber FOSC_RC, OSC_RC o.ähnl. lauten. Dann sollten sich > alle Bits von PORTA umschalten lassen. Damit schaltet man aber auf RC-Glied um und nicht auf Internen Oscillator. Das geht mit INTOSC bzw INTOSCIO (damit RA7 und RA8 als IO genutzt werden können). joachim schrieb: > sie sind ziemlich sperrig und scharfkantig, Ach, so ein Plastik-DIP-Gehäuse ist doch schön abgerundet ;) joachim schrieb: > bei den Atmegas tust du dich > erheblich leichter, auch ist dieses Forum hier deutlich AVR-lastiger. Da kann man sich ja auch "nur" aussperren :P Sorry, bei PICs ist es immer der niedrigere Takt und das höchst anspruchsvolle und zum Scheitern verurteilende Bank-Switching, bei AVRs ist es eben das verfusen ;)
Tobias Wagner schrieb: > kann auch ruhig über atmel chips sein. Das macht ja nicht soo viel Sinn, wenn du mit einem PIC umgehen willst. Das meiste, was du davon gebrauchen kannst, steht auch in einem normalen C-Buch drin. Da du aber ein Sprut-Brenner hast, kannst du auch auf Sprut gucken, immer eine große Anlaufstelle für deutschsprachige. Kann man ja auch ausdrucken ;) Aber ein Buch kenne ich nicht, hab ich auch nicht benutzt. Solange man C einigermaßen beherrscht (da gibts bestimmt mehr Auswahl an Büchern), ist der Rest etwas, was man auch gut aus dem Datenblatt lernen kann. Einfach mal z.B. das Kapitel über die IOs lesen, über die CPU, dann ggf Module wie ADC oder PWM, ....
Hm. Das Datenblatt (zum 16F87X) hat kein Kapitel über die Oscillator-Konfiguration. Sieht so aus, als ob die kleinen 16Fxxx gar keinen internen RC-Osc haben...?
joachim schrieb: > Tip: > Zum lernen sind die PICs für einen Anfänger nicht die Königslösung. sie > sind ziemlich sperrig und scharfkantig, bei den Atmegas tust du dich > erheblich leichter, auch ist dieses Forum hier deutlich AVR-lastiger. Die PICs sind tolle MCUs, ohne Frage. Ist aber eher was für den Hartgesottene. Jeder PIC ist anders, selbst innerhalb einer Bausteinfamilie. Für den Einsteiger ist das aus vielen Gründen sehr hartes Terrain. Wenn es keine zwingenden Gründe gibt bleib bei den AVRs. Die Arduinos sind eine tolle Spielwiese um dem Thema näher zu kommen und wenn Du Sattelfester geworden bist nimmst Du die Arduino Hardware und bügelst Deine eigenen Programme dort rauf. Das ist nichts weiter als ein blanker AVR mit einem Minimum an Hardware eingepackt in eine IDE die sich an den Einsteiger richtet und leichte Lesbarkeit über Geschwindigkeit stellt. Wenn Du statt dessen das AVR Studio benutzt hast Du ein wirklich mächtiges Werkzeug das über alle Atmel Familien hinweg zu benutzen ist GCC statt proprietär und im Netz gibt es unzählbar viele Codeschnipsel und Anleitungen. Bleibst Du beim PIC mußt Du Dir angewöhnen zu aller erst die Errata zu lesen. Manches geht nicht was gehen sollte. Errata, Datasheet, Family Reference. In der Reihenfolge. Beim PIC ist soviel miteinander verknotet das am Anfang 60% Deiner Zeit darin besteht zu lesen und Dich in möglichst kleinen Schritten dem Ergebniss zu nähern. Deinen Sprut Programmer samt Software kenne ich nicht, aber bleib möglichst bei der recht preiswerten Microchip Hardware denn Du wirst einen Debugger brauchen und soviel Unterstützung in der IDE wie Du bekommen kannst.
mknoelke schrieb: > Bleibst Du beim PIC mußt Du Dir angewöhnen zu aller erst die Errata zu > lesen. Manches geht nicht was gehen sollte. > Errata, Datasheet, Family Reference. In der Reihenfolge. > Beim PIC ist soviel miteinander verknotet das am Anfang 60% Deiner Zeit > darin besteht zu lesen und Dich in möglichst kleinen Schritten dem > Ergebniss zu nähern. Das halte ich für absolut übertrieben! Ich konnte mich mit der gleichen Ausrüstung wie der Tobias und mit Hilfe der Seite von sprut, problemlos und ohne "Knoten" lösen zu müssen in die PIC-Programmierung einsteigen. Von den genannten Schwierigkeite keine Rede! Überhaupt finde ich es doof wenn von den Liebhabern der AVRs auf die PICs hochnäsig runtergeschaut wird. Ich bin überzeugt, dass beide Gruppen von µC gleichwertig sind und es nur auf die einmal erfolgte Einarbeitung, bzw. persönliche Neigung ankommt. Ich frage mich warum - wenn schon mal einer zu PICs ne Frage stellt - das immer gleich in eine Diskussion pro/contra münden muss. Beantwortet dem TO seine Fragen und damit ist es gut! mfG GroberKlotz
Hallo Tobias, hier noch einige Links welche Dir vielleicht weiterhelfen: PIC C-Tutorial [http://pic-projekte.de/wiki/index.php?title=PIC_C_Tutorial] Blinkende LEDs mit 16F877 [http://tutorial.cytron.com.my/2011/08/08/project-0-%E2%80%93-my-1st-pic-project-load-a-simple-led-blink/] LCD am Parallelport [http://tutorial.cytron.com.my/2011/08/09/project-2-%E2%80%93-hello-world-with-parallel-lcd/] mfG GroberKlotz
Hallo! Hol dir unbedingt einen pickit2 oder ähnliches. Dann hast Du in der IDE Einzelschrittbetrieb, kannst Register lesen usw. Ein Clon gibts bei EBay für ca. 20 EUR. Testboards bei OLIMEX o.ä. Am Anfang ist auch ein Breadboard unbezahlbar. Praktisch ist es auch, über COM-Port oder USB (z.B. UM245R auf Breadboard stecken) ein Debugausgang zu haben. Da kann man mit printf alles rausschreiben. Über den UM245 kann man die Schaltung auch super mit Spannung versorgen. vg Jürgen
GroberKlotz schrieb: > Von den genannten Schwierigkeite keine Rede! Überhaupt finde ich es doof > wenn von den Liebhabern der AVRs auf die PICs hochnäsig runtergeschaut > wird. Ich bin überzeugt, dass beide Gruppen von µC gleichwertig sind Brr, schön langsam kleiner Wüterich. Habe ich nicht gesagt das das tolle MCUs sind ? Ich programmiere PICs, AVRs, STM8, 8051 etc. pp. Dem Threadstarter ging es um Hilfe und Infos und er hat schon was mit AVRs gemacht. Die Aussage war: 'Ja es geht, wenn Du Dir einen gewissen stil angewöhnst geht es leichter. Wenn Du mit etwas weitermachst das Du schon kennst geht es noch einfacher.' Worauf immer Deine Überzeugungen sich auch begründen, von Gleichwertig kann überhaupt keine Rede sein. Alle können unterschiedliche Sachen gut oder schlecht. Bei allen Unterschieden ist keine Reihe ultimativ in allem besser oder schlechter.
hallo, das problem mit dem port ist mittlerweile erkannt und verstanden. danke für die links und infos. aus der diskussion was besser ist avr oder pic halte ich mich raus, bringt mich beim erlernen der mikrocontrollerprogrammierung nicht weiter ;) vlg
Nun gut, zu PIC vs. AVR vs. sonstirgendwas kann ich nix beitragen. Aber ....... Entwicklungsumgebung: MPLAB ist mittlerweile auf dem Abstellgleis, Ende Juli ist V8.92 erschienen und das war das endgültige Update. Kommende Controller werden nicht mehr in MPLAB eingepflegt. Es wird nur mehr MPLABX weiterentwickelt wie auch die dazugehörigen Compiler (XC8, XC16 u. XC32). Programmer: Auch wenn es etwas teurer wird - aber nimm gleich einen PICKIT3. Spätestens wenn modernere PIC (16Fxxxx, diverse PIC18 und erst recht PIC24 etc) Programmieren und Debuggen willst, reicht PICKIT2 oft nicht mehr aus. Man kann dafür ohne weiteres einen "Chinakracher" nehmen - so einer läuft auch hier ohne Probleme. Der PICKIT2 hat nur den Vorteil das er als UART-Tool und als Mini-Logikanalyzer verwendet werden kann.
Bei Olimex gibt es einen wirklich sehr gutem und hochwertigen Pickit 3 Clon für 20€. Bei Watterott Kauf dir nen ubw32 und Du bist glücklich, hat auch nen bootloader. Und spiel mal mit mmbasic, tolles Zeugs;-). Alles unter 50€. Mplabx ist frei. Go for Gold.
Joachim ... schrieb: > Hm. Das Datenblatt (zum 16F87X) hat kein Kapitel über die > Oscillator-Konfiguration. Sieht so aus, als ob die kleinen 16Fxxx gar > keinen internen RC-Osc haben...? Neuere PIC16er haben vier stellen hinterm F. Diese haben soweit ich das sehe alle einen internen Osc. Der von Tobias verwendete PIC16F887 hat auch einen, trotzdessen er schon einige Zeit aufm Buckel hat. Irgendwann fing es halt mal an. Ich hab mir angewöhnt, nur noch PIC18er mit einem K oder J im Namen oder ein PIC16xxxx oder PIC12F1822/1840 zu nehmen, wenn 8bit. Sind neu und Low-Power. Dem Rat zum PICKIT3 kann ich mich nur anschließen. Ich hatte auch einen Sprut Brenner8. Dann kam ein neuer PIC16 und auch die PIC32-Reihe raus. Beide wurden von USburn und Brenner8 nicht unterstützt. Da kam dann das PICKIT3 und ich bin zufrieden. Auch denke ich, dass du auf jedenfall gleich mit MPLAB X und ansich auch mit XC8 anfangen solltest. Eben wegen dem Support. Ist so als wenn du neu in der PC Welt bist, ein bisschen was mit SuSe(Linux) gemacht hast und nun zu Windows wechselst. Da fängt man auch nicht mehr mit XP an sondern nimmt gleich Win7/8. Dadurch, dass MPLAB X & XC8/16/32 noch nicht soo alt sind, wird es dazu warscheinlich kaum Bücher geben. Und ich muss zugeben, dass die Hilfe von MPLAB X und den Compilern aus meiner Sicht nicht soo der Bringer ist. Aber das machen die Code-Sammlung auf microchip.com und die große Lib und Beispiele und Applicationnotes wieder wett. Frohes schaffen ;)
hallo, danke für die rückmeldungen. Dein vorletzter Satz erregt mein Interesse am stärksten :) Ich habe nun einige Tutorials zum Einstieg in die PIC Welt durchgearbeitet und MPLABX eingerichtet. Jetzt bin ich auf der Suche nach einer Sammlung von Beispiel bzw. Lerncodes um mir nach und nach durch das durcharbeiten dieser beispiele noch mehr wissen anzueignen und die theorie mal in der praxis zu sehen. ich suche also eine seite wo man solche beispiele findet, am besten nach schwierigkeitsgrad sortiert und mit erklärung. Ich habe schon eine seite gefunden die vom aufbau exakt so ist wie das was ich suche, allerdings sind die code in assembler geschrieben und ich suche c das ist sie: http://sprut.de/electronic/pic/programm/index.htm Meine Frage wäre jetzte ob jemand von euch mir eine Seite empfehlen kann die die anforderungen erfüllt und in c programmierte codes behandelt. ich würde mich über rückmeldungen freuen.
Also es gibt einmal: http://pic-projekte.de/wiki/index.php?title=Hauptseite Dann eben www.microchip.com . Dort unter "Design Support" -> "Software" sind Libs und Beispiele zu finden (sortiert nach Anwendung und PIC-Familie). Eventuell auch interessant: http://www.libstock.com/project_categories Dort ist vieles für Compiler der Firma mikroE, doch C-spezifisches und ggf Hardware-spezifisches ist sicherlich übertragbar. Wenn man z.B. ein EEPROM über I²C ansteuern will, ist es egal, ob man nun I2C_Write(..) oder eine andere Funktion (aus der Lib für XC8) aufruft.
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.