hallo,
nogmaals heb ik een vraag over een pic.
nu het eindelijk is gelukt om het programma in orde te krijgen voor een schakelaar die een led aanstuurt via een pic 16f690 heb ik het programma doorgestuurd naar de pic.
wanneer de pic nog aangesloten is aan de pc gaat het programma goed, maar wanneer ik hem loskoppel van de pc en een externe 5v voeding gebruikt, brand de led constant en werkt de schakelaar niet meer. aan wat zou dat kunnen liggen?
alvast bedantk
groeten Sam
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Een schema zou handig zijn. Meestal ligt het aan de ontkoppeling bij de PIC, of te lange voedingsdraden, of allebei.
1.Net als CasWil zegt een 10k weerstand naar de mclr?
2.100nF condensator tussen de 5V en de GND?
3.stabiele voedingsspanning(heb ik wel eens problemen mee gehad)
4.pulldownweerstand bij de schakelaar?
hallo,
een schematje heb ik nu niet direct, maar alles is gebouwd op een demo bordje (low pin count demo board van microchip)
wat is die mclr pin?
en wat het rare is, er stonden demo programma's in zoals blink en rotate enzo en die kon ik wel perfect doen gaan met een externe voeding.
alleen dit programma gaat niet met mijn externe voeding. wat kan dat zijn? er zit een condensator bij de voeding, en heb ook een stabiele 5v voeding hoor.
dit is mijn programma
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x7D ; variable used for context saving
status_temp EQU 0x7E ; variable used for context saving
pclath_temp EQU 0x7F ; variable used for context saving
;**********************************************************************
ORG 0x000 ; processor reset vector
goto init ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
movf PCLATH,w ; move pclath register into W register
movwf pclath_temp ; save off contents of PCLATH register
; isr code can go here or be located as a call subroutine elsewhere
movf pclath_temp,w ; retrieve copy of PCLATH register
movwf PCLATH ; restore pre-isr PCLATH register contents
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
init movlw 0x00 ; All ports digital
banksel ansel
movwf ansel
banksel anselh
movwf anselh
banksel trisa ; RA5 = input
movlw b'0000010'
movwf trisa
banksel trisc
movlw b'0000000' ; PortC = output
movwf trisc
bcf option_reg, not_rabpu ;Weak pull-ups on
banksel wpua
movlw 0xff ;
movwf wpua ;
banksel porta
main btfsc porta,1 ; Endless loop
movlw b'11111111'
movwf portc
btfss porta,1
movlw b'00000000'
movwf portc
END ; directive 'end of program'
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Deze code kan nooit gewerkt hebben... Blijft constant opnieuw opstarten.
Kijk ook eens in de datasheet naar de BTFSS/BTFSC instructies.
Wat jij ermee probeert te doen kan niet.
[Bericht gewijzigd door Arco op (43%)]
nogtans, wanneer de pic aangesoten is aan de pc, en ik duw op de schakelaar brandden de leds, wanner ik de schakelaar los, dan gaan de leds weer uit. Maar idd wanneer ik een externe voeding aansluit branndden de leds constant. Dat kan toch niet? Weet jij misschien de oplossing?
Mist er niet een goto main aan het eind?
Edit: Even afgezien daarvan, de inhoud van het w-register is onvoorspelbaar op het moment dat de main-loop wordt uitgevoerd.
Volgens mij kun je de main-loop beter herschrijven als:
main movlw B'00000000'
btfsc porta,1
movlw B'11111111'
movwf portc
goto main
[Bericht gewijzigd door pieterd28 op (77%)]
schematje, dat kristal hoeft niet zie net dat je de interne oscilator gebruikt. 
Volgens mij zit die MCLR pin op pin 4 bij de 16f690.
Wanneer je een BTFSC of BTFSS gebruikt zal je het volgende moeten doen.
MAIN:
BTFSC PORTA,1
GOTO LED AAN ; PORTA is hoog dus ga naar led aan.
GOTO MAIN ;PORTA is niet hoog. dus kijk opnieuw
LEDAAN:
MOVLW B'11111111'
MOVWF PORTC
zoiets zal het worden denk ik. Waarschijnlijk heb je ook nog een delay nodig want anders krijg je problemen met de schakelaar. Aangezien hij duizenden keren per seconden kijkt of de schakelaar ingedrukt is of niet.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Nogmaals, de geposte code KAN NOOIT werken.
Het is wel makkelijk als je je eens in de datasheet verdiept om te zien wat de instructies precies doen. (Valt mee, er zijn er maar 35 voor de 16F...)
Ook makkelijk als je code-tags gebruikt, dan hoeven we de code niet opnieuw te formatteren. (zie FAQ)
.
.
.
banksel porta
main btfsc porta,1
goto main_on
movlw b'00000000'
goto main_set
main_on movlw b'11111111'
main_set movwf portc
goto main
end
ok idd die goto main moest daar staan, nu werkt het wel volledig, maar nog niet met een externe voeding :s zou dat dan kunnen aan die mclr liggen? hoe komt het dan dat andere programma's waarbij ik geen input gebruik, dat die dan wel werken?
ps zouden jullie eens kunnen uitleggen wat mclr betekent? ik vindt niet echt de uitleg in de datasheet. ik zal nog eens editen
ik heb wat verder geprobeert. Dus idd die goto main moest er staan in het programma wanneer de pic aan de pc hangt gaat het programma dus perfect. Ik heb nu aan de vdd een 10k weerstand gehangen en dan naar pin 4 de mclr. Maar het werkt nog steeds niet :s wanneer hij aan de externe voeding hangt brandden de leds constant. Zou dat kunnen zijn omdat ik disable case sensitivity heb moeten aanvinken?
[Bericht gewijzigd door tarsam op (38%)]
hallo,
hier mijn programma.
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x7D ; variable used for context saving
status_temp EQU 0x7E ; variable used for context saving
pclath_temp EQU 0x7F ; variable used for context saving
;**********************************************************************
ORG 0x000 ; processor reset vector
goto init ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
movf PCLATH,w ; move pclath register into W register
movwf pclath_temp ; save off contents of PCLATH register
; isr code can go here or be located as a call subroutine elsewhere
movf pclath_temp,w ; retrieve copy of PCLATH register
movwf PCLATH ; restore pre-isr PCLATH register contents
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
init movlw 0x00 ; All ports digital
banksel ansel
movwf ansel
banksel anselh
movwf anselh
banksel trisa ; RA5 = input
movlw b'0000010'
movwf trisa
banksel trisc
movlw b'0000000' ; PortC = output
movwf trisc
bcf option_reg, not_rabpu ;Weak pull-ups on
banksel wpua
movlw 0xff ;
movwf wpua ;
banksel porta
main:
movlw B'00000000'
btfsc porta,1
movlw B'11111111'
movwf portc
btfss porta,1
movlw b'00000000'
movwf portc
goto main
END ; directive 'end of program'
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Zou dat kunnen zijn omdat ik disable case sensitivity heb moeten aanvinken?
Nee.
ps zouden jullie eens kunnen uitleggen wat mclr betekent? ik vindt niet echt de uitleg in de datasheet.
In mijn datasheet wordt het anders uitgebreid beschreven... 
Op diverse plaatsen in de datasheet uitgelegd. De naam zegt al genoeg: /Master CLear Reset.
Je gebruikt _MCLRE_OFF (zie config settings), dus weerstand aan MCLR pin is niet nodig.
edit: Gebruik CODE-TAGS svp... [ code=picasm ]...[ /code ]
Ten eerste je maakt niet RA5 input maar RA1. En ten tweede die btfsc en btfss zijn nog steeds niet goed. Bij een btfss(bit test skip if set) kijkt hij is het een 1? nee ga dan naar de volgende instructie. Zoja skip dan de volgende instructie en ga die erna. Heb je al in je datasheet gekeken hoe je deze instructies moet gebruiken?
ok, bedankt.
maar die code tags wat bedoelen jullie daarmee?
enja , ik heb al in de datasheet gekeken, en snap niet echt wat er mis is aan mij instructie.
maar kunnen jullie dan een verklaring geven waarom mijn programma dan wel werkt als mijn pic aan de pc hangt?
[Bericht gewijzigd door tarsam op (63%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Code-tags voor en achter je code plaatsen (zonder spaties), zo is het een woordenbrij en niet te lezen.
Staat zoals gezegd ook in de FAQ
maar kunnen jullie dan een verklaring geven waarom mijn programma dan wel werkt als mijn pic aan de pc hangt?
Er is iets niet goed aangesloten waardoor dit gebeurt. Moeilijk te zeggen zo zonder schema of foto.
[Bericht gewijzigd door Arco op (46%)]
Daarmee kan je een code posten. Zie je hoe Arco dat stukje code gepost heeft? Dat doe je door een code tag toe te voegen. Hier is een knop voor. Die zit naast het Ohm teken als je een bericht typt.
ik heb nog eens die btfss en btfsc instructie nagelezen, en heb het nog eens opnieuw geprobeerd
dit is mijn programma:
[#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x7D ; variable used for context saving
status_temp EQU 0x7E ; variable used for context saving
pclath_temp EQU 0x7F ; variable used for context saving
;**********************************************************************
ORG 0x000 ; processor reset vector
goto init ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
movf PCLATH,w ; move pclath register into W register
movwf pclath_temp ; save off contents of PCLATH register
; isr code can go here or be located as a call subroutine elsewhere
movf pclath_temp,w ; retrieve copy of PCLATH register
movwf PCLATH ; restore pre-isr PCLATH register contents
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
init movlw 0x00 ; All ports digital
banksel ansel
movwf ansel
banksel anselh
movwf anselh
banksel trisa ; RA1 = input
movlw b'0000010'
movwf trisa
banksel trisc
movlw b'0000000' ; PortC = output
movwf trisc
bcf option_reg, not_rabpu ;Weak pull-ups on
banksel wpua
movlw 0xff ;
movwf wpua ;
banksel porta
main:
btfsc porta,1
goto ledaan
goto leduit
ledaan:
movlw b'11111111'
movwf portc
leduit:
movlw b'00000000'
movwf portc
goto main
END ; directive 'end of program'/code]Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Tja,
Zo krijgt de code alleen een kleurtje, het is wel de bedoeling dat je de formattering/indentatie ook in stand laat... 
Waarom verander je de boel steeds? Eerst zat de schakelaar aan RA3, toen aan RA5, en nu aan RA1...
Uploaded with ImageShack.us
hier heb ik zo oongeveer een schematje getekend over hoe het in elkaar zit, alles is wel gemaakt op zo'n demo board van microchip.
maar zelf ben ik nog niet zo lang bezig met programmeren, dus daarom is ook een deel van het programma nog chinees voor mij :s ik zou het voorlopig graag dringend werkende krijgen :s
[Bericht gewijzigd door tarsam op (46%)]
In plaats dat je je tijd besteedt om op verschillende forums te gelijk dezelfde vragen te stellen, kan je beter de datasheet doornemen en een schema maken en hier laten zien.
Tekenen desnoods, maar wel duidelijk en netjes, beide versies, met externe aan sluiting en de pc aangesloten versie. Dan heb je al grote kans dat je vind wat er fout gaat. P.s wel de situatie tekenen zoals je het gemaakt hebt en niet zoals je het wilt hebben. Snap je.
Edit, net te laat gezien dat je een van je schema gemaakt had. Maar zie niets van een voeding aansluiting, en is dit schema wat je wilt of hebt?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Code nog steeds niet goed, kan niet werken. Led blijft altijd uit. (Of knippert heel flauw)
Goto main ontbreekt.
ledaan: movlw b'11111111'
movwf portc
goto main
noone
483726095 / Een foto zegt meer dan 1000 woorden.