PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 16F627 - Anfänger!



Mülly
22.09.2005, 22:34
Hallo zusammen,
bin neu hier im Forum und gleichzeitig noch anfänger in der uC Welt.

Habe mir bei Elektro Con*** ein Experimentier Board von Vellmann besorgt und die Teile dran gelötet. Geht wunderbar. Habe mit dem C-Compiler von cc5x auch schon erste positive erfahrungen gesammelt.

Nun zum problem:

Ich möchte mich nun etwas vom experimentierboard entfernen. Habe mir also eine Lochrasterplatine gekauft, einen 18Pin Sockel, noch einen 16F627, etliche 10k Widerstände, paar taster, einen 4Mhz Quarz und paar 18pF Kondis.
Habe dann die 5V spannung an den Pin 14 (VDD),
die Masse an Pin 5 (VDD) ,
meinen kleinen Lüfter (testobjekt ;-)) an Pin 7 (RB0),
einen taster an pin 19 (RA0 gegen VDD) ,
einen 10k Ohm ebenfalls an pin 19 gegen VSS)
Pin 16 und 17 (CLKIN und CLKOUT) an den 4Mhz Quarz und jedes beinchen vom quarz per 18pF Kondi an GND geschlossen.

Dazu hab ich noch folgendes kleines Testprogramm geschrieben:




;************************************************* *************************
;* VELLEMAN High-Q KIT K8048/VM111 SAMPLE SOFTWARE *
;************************************************* *************************
;* Microchip PIC(tm) Programmer & experiment board *
;* DEMO2 program for testing K8048 with PIC16F627(A)! *
;* Generate 4 LED light effects, you can select these with SW1..4 *
;************************************************* *************************
;* (C) VELLEMAN Components,2003 All rights reserved *
;************************************************* *************************
;* Hardw. Rev: P8048'1 Softw. Rev: 1.21 *
;* OSC.......: XT 4MHz Max. POWER.....: 12V DC *
;************************************************* *************************

W EQU H'0000'
F EQU H'0001'

;----- Register Files------------------------------------------------------

INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
PORTA EQU H'0005'
PORTB EQU H'0006'

INTCON EQU H'000B'
OPTION_REG EQU H'0081'
TRISA EQU H'0085'
TRISB EQU H'0086'
CMCON EQU H'001F'

;----- STATUS Bits --------------------------------------------------------
IRP EQU H'0007'
RP1 EQU H'0006'
RP0 EQU H'0005'
NOT_TO EQU H'0004'
NOT_PD EQU H'0003'
Z EQU H'0002'
DC EQU H'0001'
C EQU H'0000'

;================================================= =========================
;
; RAM Definition
;
;================================================= =========================

__MAXRAM H'01FF'
__BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
__BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
__BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
__BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'

;================================================= =========================
;
; Configuration Bits
;
;================================================= =========================

_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_CP_ALL EQU H'03FF'
_CP_75 EQU H'17FF'
_CP_50 EQU H'2BFF'
_CP_OFF EQU H'3FFF'
_DATA_CP_ON EQU H'3EFF'
_DATA_CP_OFF EQU H'3FFF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_MCLRE_ON EQU H'3FFF'
_MCLRE_OFF EQU H'3FDF'
_ER_OSC_CLKOUT EQU H'3FFF'
_ER_OSC_NOCLKOUT EQU H'3FFE'
_INTRC_OSC_CLKOUT EQU H'3FFD'
_INTRC_OSC_NOCLKOUT EQU H'3FFC'
_EXTCLK_OSC EQU H'3FEF'
_LP_OSC EQU H'3FEC'
_XT_OSC EQU H'3FED'
_HS_OSC EQU H'3FEE'

__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC


processor 16F627
radix DEC

TRISA EQU 0x85
TRISB EQU 0x86
RP0 EQU 5
RP1 EQU 6
OPTION_REG EQU 0x81
CMCON EQU 0x1F
RA0 EQU 0
RB0 EQU 0
RB1 EQU 1
RB2 EQU 2
RB3 EQU 3
RB4 EQU 4
RB5 EQU 5

GOTO main

; FILE eigen.c
;//Prozessor 16F627
;
;
;#include <C:\cc5\16F627.h>
;
;
;void main(void) // Start des Hauptprogramms
;{
main
;OPTION_REG = 0b.1101.0111;
MOVLW .215
BSF 0x03,RP0
BCF 0x03,RP1
MOVWF OPTION_REG
;CMCON = 0b.0000.0111;
MOVLW .7
BCF 0x03,RP0
MOVWF CMCON
;
;TRISA = 0b.0000.0001; // Alle Pins des Ports A sind Ausgänge außer RA0
MOVLW .1
BSF 0x03,RP0
MOVWF TRISA
;TRISB = 0b.0000.0000; // Alle Pins des Ports B sind Ausgänge
CLRF TRISB
;Sprungmarke:
;
;if (RA0==1)
m001 BCF 0x03,RP0
BCF 0x03,RP1
BTFSS 0x05,RA0
GOTO m002
;{
;RB0 = 1;
BSF 0x06,RB0
;RB1 = 1;
BSF 0x06,RB1
;RB2 = 1;
BSF 0x06,RB2
;RB3 = 1;
BSF 0x06,RB3
;RB4 = 1;
BSF 0x06,RB4
;RB5 = 1;
BSF 0x06,RB5
;}
;else
GOTO m003
;{
;RB0 = 0;
m002 BCF 0x03,RP0
BCF 0x03,RP1
BCF 0x06,RB0
;RB1 = 0;
BCF 0x06,RB1
;RB2 = 0;
BCF 0x06,RB2
;RB3 = 0;
BCF 0x06,RB3
;RB4 = 0;
BCF 0x06,RB4
;RB5 = 0;
BCF 0x06,RB5
;}
;
;
;
;goto Sprungmarke; // Endlosschleife
m003 GOTO m001

END



Nun kam der Test......und was passierte?.......NIX!

Verstehe es einfach nicht! Der schalter schaltet die 5v beim drücken ordnungsgemäß durch, aber der lüfter dreht nicht! Hab den ausgang auch mal nachgemessen.... keine spannung!!

An meinem Experimentierboard klappts..also ist der code nicht falsch.
Kann mir jemand helfen? hab keine ahnung woran es liegt

Danke schonmal im vorraus

Mülly

Bernhard_
23.09.2005, 10:06
Hallo Mülli,

so wie du es beschreibst, läuft den Controller gar nicht.
Die Gründe sind meist einfach und schnell behoben. Auf deinen Schaltplan gehe ich nicht weiter ein, den solltest du mit den Schaltplänen deines Experimentierboards oder denen von Sprut vergleichen.

Welchen Programmer verwendest du?

Viele Grüße,
Bernhard

Mülly
23.09.2005, 10:23
Hallo Bernhard

Ich nutze die Software von cc5x und die Software die beim experimentierboard dabei war.

Dann "bhrenne" ich die hex datei auf den pic. Anschließend entnehme ich den pic aus dem experimentierboard und stecke ihn in den sockel meiner selbst "gebastelten" schaltung.

Habe auf dem Datasheet des Quarzes gelesen das ich einen 30pF Kondensator nutzen muss. Habe aber einen 18pF eingebaut. Kann das evtl die ursache sein? Vielleicht schwingt der dann schneller als 4MHZ und der Pic macht zu? Kann es das sein?

Gruß Mülly

Bernhard_
23.09.2005, 11:28
Hallo Mülly,

ach so, du verwendest kein ICSP; dann können wird einen Fehler in der Schnittstelle Programmer<->PIC schon mal ausschließen.

Deine Kondensatorwerte machen nichts aus.
Hast du einen Pull-Up-Widerstand an MCLR gehängt?
Wenn nicht: z.B. 22k gegen VDD.

MfG,
Bernhard

Der Kefu
23.09.2005, 11:59
Hast du den Lüfter direkt am Pin vom Pic oder über einen Transistor? Wenn du den Lüfter direkt angeschlossen hast, löte ihn mal ab und Mess dann die Spg. Der Pic kann max. 25mA je Pin Schalten.

Mülly
23.09.2005, 14:41
Verzweifel langsam total.

Hab den Lüfter nun mal abgemacht, den Kondensator gegen einen 27pF getauscht und Pin 4 (MCLR) per 10KOHM an VDD (+5V) geklemmt.

Ohne erfolg. An den Ausgangspins kommt keine spannung an.

Fritzli
23.09.2005, 18:23
Hallo

1) Die Kondensatorwerte sind meist nicht so extrem kritisch
2) schalt BODEN ab (brown out detect braucht man als Bastler eh nicht unbedingt)
3) sind die Defs für die Config-Bits korrekt? Kannst Du das ev. mit einem Programmer checken? (Chip auslesen und schauen, was der Programmer decodiert)
4) KO verfügbar? Wenn ja mal schauen, was CLKOUT macht
5) ev. mal ein Photo des ganzen Aufbaus posten?

Gruess
Fritzli

Der Kefu
24.09.2005, 12:03
Schreib sonst einfach mal ein Programm das den Pin auf High setzt. So kannst du wenigstens Hardwarefehler ausschließen wenn es klappt.

Mülly
24.09.2005, 13:03
Vielen Dank für die vielen und schnellen hilfeantworten.

Da ich mir aber jetzt wegen dem ständigen aus dem sockel- in den sockel 2 pins am pic abgebrochen habe #-o ](*,) . Werd ich mir mal nen neuen ordern.

Habe aber auch noch paar atmels bei mir rum fliegen. Vielleicht versuch ich es auch mal damit.

Also, vielen Dank nochmal an alle.

=D>

Fritzli
24.09.2005, 15:38
Da ich mir aber jetzt wegen dem ständigen aus dem sockel- in den sockel 2 pins am pic abgebrochen habe

Wenns nicht grade ein wichtiger Pin (OSC, MCLR, V+, GND, Programmieren) war, kann man den auch weiterverwenden, hat halt einen IO-Pin weniger.

Um das in Zukunft zu vermeiden würde ich den PIC in eine Fassung stecken. Wenn dann was abbricht, dann an der Fassung (ist billiger).

Gruess
Fritzli

Mülly
24.09.2005, 16:10
Danke für den Tip Fritzli.

Meinst du Fassung in Fassung?

Fritzli
24.09.2005, 16:16
Fassung in Fassung
???

PIC in Fassung stecken und das ganze dann wie einen nackten PIC herumtragen, einstecken, rausziehen, rumwerfen...

Mülly
28.09.2005, 17:19
Habs nun endlich geschafft! Der erste fehler waren das ich wohl falsche config bits hatte. Hab jetzt nur:


_CP_OFF EQU H'3FFF'
_DATA_CP_OFF EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_XT_OSC EQU H'3FED'


__CONFIG _CP_OFF & _DATA_CP_OFF & _WDT_OFF & _XT_OSC

Brachte schon mal einen teilerfolg.

Und als ich dann noch den PIN 4 (MCRL) direkt (also ohne vorwiderstand) gegen VDD gelegt habe funktionierte es endlich.

Danke nochmal an alle.

Greeez, Mülly

Goblin
28.09.2005, 23:21
was die fassung angeht: bequemer ist ein nullkraft-sockel bzw. textool-sockel:

http://i15.ebayimg.com/01/i/04/00/2d/d2_1_b.JPG

bei ebay kommst du günstig ran, sonst können die dinger schonmal nen vermögen kosten...