Also... Ich habe mir den Velleman K8048 besorgt und hab ein paar Fragen zu dem PIC16F627A: Da ich total neu im Microcontroller programmieren bin hab ich versucht ein bisschen von den Beispielen zu lernen und alles funktioniert soweit. Aber nur auf dem Board. Ich habe an Vdd 5V angelegt und Vss auf Masse. Nun möchte ich mur eine LED ansteuern, ich hab die Ports B alle auf 1 gesetzt, die Led an RB0-Angesetzt und an Masse gehängt. Aber es passiert nichts. Bevor mir jemand sagt ich soll http://www.gidf.de oder sonstiges aufzusuchen...Ich hab dort nichts gefunden. Ich möchte nur von jemandem wissen wie ich die Ports richtig ansteuern und vielleicht ein 5er Lauflicht (ohne externen Quarz) bauen kann? Danke für alle Antworten!
Hallo Matthias, poste doch bitte mal Deinen Sourcecode. In welcher Sprache programmierst Du? Gruß kokisan
Hallo, Ich Programmiere in C. Benutze AVR-Studio weil ich das von nem Kumpel hab. Muss ich auch Strom auf den Vpp geben nachdem ich den PIC programmiert hab?
Verstehe ich nicht. Du programmierst in C und publizierst Assembler Code. Du willst einen PIC programmieren und arbeitest mit AVR Studio? Vpp sollte mit pull up auf VDD gelegt werden, damit das Bauteil aus dem Reset rauskommt. Es sei denn, Du hast den Resetpin abgeschaltet und nutzt ihn als Digitalpin -> siehe CONFIG Register MCLRE: RA5/MCLR/VPP Pin Function Select bit 1 = RA5/MCLR/VPP pin function is MCLR 0 = RA5/MCLR/VPP pin function is digital Input, MCLR internally tied to VDD
Matthias, hole Dir mal die Entwicklungsumgebung von www.microchip.com für PIC Controller. Bei der Installation den freien C-Compiler als LITE mitinstallieren. Das ist die Umgebung, in der Du Deinen PIC programmieren kannst. AVR funktioniert nicht, zumindest höre ich das zum ersten Mal .... http://www.microchip.com/pagehandler/en-us/family/mplabx/
Ok es geht... auch mit AVR ich benutze es ja nur um den Code zu bearbeiten. Hab mal einen schaltplan angehängt wie ich glaube das es richtig is.
Den von Microchip: MPASMWIN.exe der wandelt die ASM Files in HEX Dateien um. Mit Progpic.exe spiele ich sie auf den Chip.
Alles klar, ein bisschen umständlich mit AVR als Editor, aber zeugt von Kreativität ;-) zum Schaltplan: 1) Wenn RB0 auf Highpegel +5V schaltet fliesst durch Deine LED der maximale Strom, den der Pin RB0 liefern kann. Wenn Du nicht so die LED schlachtest (jeder Pin liefert 25mA), dann aber sicherlich irgendwann den Port RB0 -> da sollte ein Vorwiderstand rein. 2) Der nMCLR Pin wird beim High Voltage Programming (siehe Datenblatt Seite 114) benutzt, daher darfst Du den PIN nicht hart (ohne Widerstand) an die Versorgung legen. Mit 20K-50K bist Du auf der sicheren Seite. Eventuell wird auch Low Voltage programmiert, dann braucht man den nMCLR Pin nicht für die Programmierung, kann also direkt an VDD gehängt werden. Zur Sicherherit solltest Du aber ein Pullup Widerstand nutzen.
Also die LED geht auch an nem 9V Block also is das nich das Problem. also sollte der Kreis dann so aussehen wi im Anhang oder wie? ich komm nich ganz mit...
nicht ganz - VDD (Pin14) direkt an +5V - VSS (Pin5) direkt auf GND (ist ok) - LED mit R1 an RB0 (Pin6) (ist ok) - nMCLR (Pin4) mit 20kOhm an +5V legen (PIC aus dem Reset holen) Diese ist beim PIC16F627A die minimale Beschaltung, damit eine LED programmiert werden kann. Im Programm oder bei der Programmierung noch darauf achten, das der interne 4MHz Oszillator enabled ist.
Mir fällt noch etwas auf. In Deinem Assembler Code steht die Programmierung für das CONFIG Register mit __CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC Ganz am Ende steht "_XT_OSC" welches die Kennung für einen externen Quarz oder Resonator ist. Wenn Du den internen Quarz verwenden willst, dann ist das falsch (siehe Datenblatt Seite 98). Bei PICs sollte da die Kennung "INTOSC" oder so ähnlich stehen. Habe leider keinen Assembler installiert, kann also nicht genau sagen was da stehen müsste. Gruß kokisan
Für den Pull Up am nMCLR ist 22K ok. Bei der LED sollte der Vorwiderstand je nach Farbe so 150-300 Ohm sein. Dimensioniere ihn so, dass bei der Farbe 10mA fliessen, das reicht.
Mhm... Habs auf den Internen Oscilator geändert und alles so angeschlossen... aber pasiert nichts. Nochwas:
1 | RESET MOVLW B'00000111' ;Disable Comparator module's |
2 | MOVWF CMCON |
3 | ; |
4 | BSF STATUS,RP0 ;Switch to register bank 1 |
5 | ;Disable pull-ups |
6 | ;INT on rising edge |
7 | ;TMR0 to CLKOUT |
8 | ;TMR0 Incr low2high trans. |
9 | ;Prescaler assign to Timer0 |
10 | ;Prescaler rate is 1:256 |
11 | MOVLW B'11010111' ;Set PIC options (See datasheet). |
12 | MOVWF OPTION_REG ;Write the OPTION register. |
Was bedeutet der "MOVLW B'11010111' " Teil? Finde das irgendwie nicht... THX meld mich morgen wieder!
Damit werden im OPTION REGISTER (Datenblatt Seite 24) die entsprechenden Einstellungen gewählt. Siehe Kommentare (Disable pull-ups, ..). Sollte bei dir passen.
Ok Ich hab den code aufgespielt alles vrbunden wie es sollte also Pin4 über 22k an Vdd gelegt, die led an RB0 und Vss und auch Vdd und Vss angeschlossen. Auf dem Board geht alles aber auf der platine nicht wieso? PS: benutze _INTRC_OSC_CLKOUT oder was bracuh ich sonst um den internen Oszilator zu benutzen?
Didi S. schrieb: > Bei der LED sollte der Vorwiderstand je nach Farbe so 150-300 Ohm sein. Darfst den Widerstand an deiner LED nicht vergessen, schön in Reihe schalten.
Ok ich hab nen 150er widerstand zwischen LED und chip aber es passiert nichts... kann mir nichtmal einer nen schaltplan geben oder ne schematic datei? oder vllt ne datei für multisim?
Matthias Naumann schrieb: > Was bedeutet der "MOVLW B'11010111' " Teil? Lies doch einfach mal das Manual zum PIC16F627. Dort werden auch die Maschinenbefehle erklärt. MOVLW heißt "Move das Literal (also hier das Bitmuster 1101011) ins W-Register". Und nochwas zu deinem Schaltplan: zwischen Betriebsspannung und Masse (VDD und VSS) gehört ein ordentlicher Kondensator, z.B. 100 nF und parallel dazu ein Elko 47uF oder so. Obendrein solltest du zwischen MCLR und Masse einen kleinen Kondensator von 1nF bis 4.7nF legen, damit dir nicht jeder kurze Störimpuls nen Reset erzeugt. W.S.
Ich bin sowas von ab *** Ich will doch nur ne einfache LED steuern und dafür brauch ich soviel zeugs? Geht das nich so wie hier: http://bradsprojects.com/electronics/BradsProjects-ASMTutorial2.html ? Achso ich hab noch nen 16F648A bekommen...
Ich muss mal ganz blöd nachfragen, weil ich selbst noch Anfänger bin: Warum bearbeitest du deinen Code mit AVR, programmierst in C, wandelst das irgendwie in Assembler um und erzeugst dann deine HEX und spielst es letztendlich in den PIC? Hast du schon mal versucht, den direkten Weg über MPLAB zu gehen? Sicher, dass mit dem Programmer alles in Ordnung ist? Gruß
Matthias Naumann schrieb: > Ich bin sowas von ab *** Ich will doch nur ne einfache LED steuern und > dafür brauch ich soviel zeugs? Dir sind drei lumpige Kondensatoren zuviel Aufwand? Dann nimm nen Vorwiderstand und nen Klingelknopf. Drunter geht es nicht. W.S.
Sorry ich dachte nur das es so geht wie in meinem Link... Ok wo soll der widerstand hin? an den Reset Pin? oder soll ich den einfach per programm deaktivieren?
Hallo, Jetzt hab ich ein zwischenproblem: Ich kann meinen PIC nichtmehr neu programmieren... jedesmal zeigt er an das es keinen pic auf dem board gäbe...
Muss wohl den 48A benutzen weil der 27A aufgegeben hat ich kann ihn nichmehr programmieren...
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.