Pic Programmering - problemer med at få liv i en Pic12F683

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Nu er jeg efterhånden ved at løbe tør for ideer til at få liv i Pic'en, og
håber at nogen kan spotte fejlen i koden, som jeg har kopieret ind længere
nede. Indtil videre er programmet meget simpelt - Pic'en (Pic12F683) skal
køre på den interne clock (dvs. ingen ekstern krystal), og i første omgang
blot blinke med en lysdiode, for at vise at der er liv.
Der er ikke defineret nogen interrupt routiner, blot er benene konfigureret
til at være udgange (på nær ben 3, som er indgang). Imidlertid sker der
intet når jeg tilslutter forsyningsspænding, indtil jeg sætter proben på ben
4, hvorefter dioden lyser svagt (der står kun 2 volt på udgangen). Derimod
er der 5 volt på både ben 4 og 5. Det pudsige er, at der sket en reaktion
når der tilføres en kapacitans fra proben på ben 4 tiltrods for, at der ikke
er defineret nogen indgange, og at der kan komme en lavere
forsyningsspænding på ben 7 (hvor dioden er tilsluttet) end de 5 volt.
Når jeg fjerne forsyningsspændingen og et øjeblik efter tilslutter den igen
lyser dioden stadig svagt, men det er ikke nødvendigt at "tænde" den med
proben - som om der er en indre kapacitans i kredsen der først skal aflades.

Nogen der har gode ideer til hvordan jeg kommer videre?

Mvh.
Henrik
___________________

;Equates Section
TMR0  EQU  1  ;TMR0 is file 1
STATUS  EQU  3  ;Status is file 3
GPIO  EQU  5
ANSEL  EQU  9FH
CMCON0  EQU  19H
ZEROBIT  EQU  2  ;Zerobit is bit 2
COUNT  EQU  20H  ;Count is file 0C, a register to count events
OPTION_REG EQU  81H
OSCCON  EQU  8FH
TRISIO  EQU  85H
;*****************************************************

   LIST P12%F683
   ORG  0    ;Start at memory address 0
   GOTO START

;*****************************************************

; Subroutine section
DELAY  CLRF TMR0   ;Start TMR0
LOOPA  MOVF TMR0,W   ;Read TMR0 into W
   SUBLW .39    ;Time - 39
   BTFSS STATUS,ZEROBIT ;Check time-W = 0
   GOTO LOOPA
   RETLW 0    ;Return after TMR039%

; 1 second delay
DELAY1  MOVLW .100
   MOVWF COUNT
TIMEA  CALL DELAY
   DECFSZ COUNT
   GOTO TIMEA
   RETLW 0

; 1/2 second delay
DELAYP5  MOVLW .50
   MOVWF COUNT
TIMEB  CALL DELAY
   DECFSZ COUNT
   GOTO TIMEB
   RETLW 0

;*****************************************************

;Configuration section

START  BANKSEL OSCCON   ;Set oscillation frequency to 4Mhz
   MOVLW B'01100001'
   MOVWF OSCCON

   BANKSEL OPTION_REG  ;Set prescaler to 256
   MOVLW B'00000111'
   MOVWF OPTION_REG

   BANKSEL  GPIO
   CLRF   GPIO ;Init GPIO
   MOVLW   07h  ;Set GP<2:0> to
   MOVWF   CMCON0 ;digital I/O

   BANKSEL  ANSEL ;
   CLRF   ANSEL ;digital I/O
   MOVLW   0Ch  ;Set GP<3:2> as inputs
   MOVWF   TRISIO  ;and set GP<5:4,1:0> ;as outputs

;*****************************************************

BEGIN  BSF  GPIO,1
LOOPB  BSF  GPIO,0  ;Turn ON Port B
   CALL DELAY1
   BCF  GPIO,0
   CALL DELAY1
   GOTO LOOPB
   END



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Det lyder til at være en HW-fejl. Hvordan ser dit diagram ud? De PICs jeg
har rodet med 877 og 4550 kan ikke køre på nogen intern clock, er du sikker
på at din kan?



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Der står i databladet, at der er en intern præcisions oscillator som kører
med 8MHz, og som er "bruger" variabel. Jeg har også diagram eksempler på en
lignende kreds (Pic12C508), som ligeledes kan køre uden ekstern oscillator.
Jeg har selv en mistanke om, at jeg ikke configurerer Pic'en korrekt, da den
har 8 forskellige clockmodes - de sædvanlige (LP, XT, HS, etc.), men det
muligvis er her jeg træffer et forkelt valg - jeg har valgt "Internal RC No
Clock" som jeg mener skulle betyde, at Pic'en kører på intern clock, og ikke
router clock signalet ud på nogen af benene.
Mit diagram er noget af det simpleste, netop fordi der ikke er tilsluttet
noget krystal. Ben 1 på pic'en (Vdd) er forbundet til 5 volt forsyning, Ben
8 (Vss) er forbundet til ground. Ben 7 er GP0, hertil har jeg forbundet en
lysdiode i serie med en modstand, som er forbundet til ground.

/Henrik



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it
jeg
en
oscillator.
den
No
ikke

Det skulle være godt nok.
Hvad med Reset, WDT, + andet.

Quoted text here. Click to load it
Ben

Husk lige en passende afkobling mellem VDD og VSS (bare en god 100nF
kondensator).

Quoted text here. Click to load it


--
Hilsen
   Peter N Petersen
We've slightly trimmed the long signature. Click to see the full one.
Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Pic'en har mange muligheder for reset ("Power-on Reset", WDT, MCLR,
"Brown-out Reset), men jeg har antaget, at disse reset muligheder som
udgangspunkt er disablet, som det har været tilfældet med andre Pic'er jeg
har programmeret. Det ser ikke ud til at være vankseligt at sætte disse
bits, men det er umiddelbart svært at få overblikket, og derfor har jeg
afholdt mig fra at ændre disse bits, for ikke at skabe flere problemer end
højst nødvendigt.
I MPLAB er kan sætte konfigurations bittene i en menu, og er har jeg valgt
at disable "Brown-out detect".


Quoted text here. Click to load it

Har placeret en 100nF kondensator, men det gjorde ingen forskel... Desværre,
for det havde været den lette løsning.

/Henrik



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Det er vel ikke en open-collector udgang du bruger?



Re: Pic Programmering - problemer med at få liv i en Pic12F683

Quoted text here. Click to load it

Det har jeg ikke styr på... Udgangen skulle gerne være defineret til en
digital udgang, så hvorvidt er der open-collector ved jeg ikke. Hvilken
betydning har det, hvis det er open collector?

/Henrik



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Du mangler noget Reset? Hvad med afkobling?



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Afkoblingen er klaret - en 100nF kondensator er placeret over
forsyningsbenene, desværre afhjalp det ikke problemerne.

Reset? Umiddelbart er der ikke noget ben til reset medmindre man definerer
det i koden. Det er bestemt muligt at definere et reset ben, men for at
undgå problemer af den art, har jeg indtil videre valgt ikke at arbejde med
det. Pic'en skulle kunne køre uden et reset?

/Henrik



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

Jeg er vant til at der skal være en veldefineret Reset ellers fungerer det
ikke. MCLR er det samme som Reset i min verden :) men jeg kan se at der er
Power-On Reset, hvis aktiveret, på denne. Hvordan programmerer du den?



Re: Pic Programmering - problemer med at få l iv i en Pic12F683
Henrik skrev:
Quoted text here. Click to load it

Kan du ikke prøve med et andet program, f.eks et fra microchip, de
sender altid en masse med deres compiler.

Mikkel

Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it


Den tanke har strejfet mig, men når jeg kigger bibliotekerne igennem, som
hører til MPLAB, kan jeg ikke finde et kode eksempel. Det eneste der ligger
er en template, hvor alle adresser til registre og configuration bits er
defineret - der er ikke nogen opsætning. Hvis man kunne finde en standard
opsætning, der blot får liv i Pic'en, således at man kunne udelukkede at det
er kode-fejl. Jeg havde et håb om, at der på Microchips internetside var
nogle kodeeksempler under support, men det var ikke tilfældet... desværre.
Heller ikke google har være den store hjælp til at finde kode eksempler.

/Henrik



Re: Pic Programmering - problemer med at få liv i en Pic12F683

Quoted text here. Click to load it
Kig under application notes, den her omhandler den indbyggede clock:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId18%24&appnote=en012094


Tomas

Re: Pic Programmering - problemer med at få liv i en Pic12F683
Hejsa,

Efter denne linie

Quoted text here. Click to load it

ville jeg indsætte noget i denne retning:

__CONFIG   _FCMEN_OFF & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF &
_MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT

.. så er du i hvert fald fri for at sætte det op i dit brænderprogram hver
gang du skal brænde...

Derudover kan jeg foreslå at _alle_ ubrugte portpins erklæres som indgange,
og lægges til stel.


/Claus



Re: Pic Programmering - problemer med at få liv i en Pic12F683
OSCCON  EQU  8FH   det vil sige binært 01111111   og så er bit 3 jo "1"
Skal den ikke være "0" hvis du vil
bruge intern osc. ??   (88H)

Hilsen Hans-Ole



Quoted text here. Click to load it



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Quoted text here. Click to load it

8Fh er 10001111

Og bit 3 vil også være sat hvis det var 88h (10001000)

--
Ulrik Smed
Aarhus, Denmark



Re: Pic Programmering - problemer med at få liv i en Pic12F683
Det har du ganske ret i, det er for længe siden jeg har leget med det binære
talsystem.
Der må skulle stå 10000111   87H   3 bit er jo 4 fra højre, når første bit
er 0

Hans-Ole


Quoted text here. Click to load it



Re: Pic Programmering - problemer med at få liv i en Pic12F683

Hans-Ole Jensen skrev:

Quoted text here. Click to load it


Du skal kigge pE5% konfigurationsregistret til den indbyggede comperator
- kan ikke lige huske hvad det hedder, men det er en klassisk
dummefejl, som jeg ogsE5% selv har begE5%et et par gange...


Site Timeline