PIC16F627a Anfänger

OP #2653833
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!
#2653871
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
#2653908
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.
#2653930
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.
#2653950
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
OP #2653980
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!
OP #2654645
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?
Gast #2656138
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.
#2656221
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ß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren