Forum: Mikrocontroller und Digitale Elektronik PIC16F627a Anfänger


von Matthias N. (mathew96)


Lesenswert?

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!

von Didi S. (kokisan2000)


Lesenswert?

Hallo Matthias,

poste doch bitte mal Deinen Sourcecode. In welcher Sprache programmierst 
Du?

Gruß
kokisan

von sandboxgangster (Gast)


Lesenswert?

MCLR/VPP auf 5v über einen 47k ?

von Matthias N. (mathew96)


Angehängte Dateien:

Lesenswert?

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?

von Didi S. (kokisan2000)


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

Pic AVR Studio geht nicht.

von Didi S. (kokisan2000)


Lesenswert?

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/

von Matthias N. (mathew96)


Angehängte Dateien:

Lesenswert?

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.

von Didi S. (kokisan2000)


Lesenswert?

... und welchen Compiler nutzt Du ?

von Matthias N. (mathew96)


Lesenswert?

Den von Microchip:
MPASMWIN.exe der wandelt die ASM Files in HEX Dateien um.
Mit Progpic.exe spiele ich sie auf den Chip.

von Didi S. (kokisan2000)


Lesenswert?

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.

von Matthias N. (mathew96)


Lesenswert?

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...

von Matthias N. (mathew96)


Angehängte Dateien:

Lesenswert?

Anhang

von Didi S. (kokisan2000)


Lesenswert?

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.

von Matthias N. (mathew96)


Lesenswert?

Ok is das jetzt so richtig?
und wie aktivier ich den internen Oscilator?

von Matthias N. (mathew96)


Angehängte Dateien:

Lesenswert?

abcde

von Didi S. (kokisan2000)


Lesenswert?

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

von Matthias N. (mathew96)


Lesenswert?

Ok ich versuchs mal. baue grade den widerstand ein. 22k reichen?

von juppi (Gast)


Lesenswert?

Nicht vergessen,R zur Diode noch einfügen!

von Didi S. (kokisan2000)


Lesenswert?

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.

von Matthias N. (mathew96)


Lesenswert?

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!

von Mick M. (highlow)


Lesenswert?

Damit werden im OPTION REGISTER (Datenblatt Seite 24) die entsprechenden 
Einstellungen gewählt. Siehe Kommentare (Disable pull-ups, ..).
Sollte bei dir passen.

von Matthias N. (mathew96)


Lesenswert?

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?

von Andreas G. (beastyk)


Lesenswert?

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.

von Matthias N. (mathew96)


Lesenswert?

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?

von Matthias N. (mathew96)


Lesenswert?

Äh.... HILFE!

von W.S. (Gast)


Lesenswert?

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.

von Matthias N. (mathew96)


Lesenswert?

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...

von Al3ko -. (al3ko)


Lesenswert?

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ß

von Matthias N. (mathew96)


Lesenswert?

Ich benutze mitlerweile MPLAB für assemblercode

von W.S. (Gast)


Lesenswert?

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.

von Matthias N. (mathew96)


Lesenswert?

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?

von Matthias N. (mathew96)


Lesenswert?

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...

von Matthias N. (mathew96)


Lesenswert?

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
Noch kein Account? Hier anmelden.