Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Hallo,
Ik ben begonnen met uC te programmeren, alleen nou wil ik een robot maken met een PIC16F84A of 628, en dan moet 1 of meerdere uitgangen een bepaalde tijd hoog zijn en dan heb ik het of 1 of 2 sec of langer.
Mijn vraag is hoe doe ik dat, ik heb gezien hoe het moet met knipperled in het artikel maar dat is 200mS.
Is dat de enigste manier of zit er een speciaal instructie/timer ingebouwt in de PIC16F serie ?
Of moet ik dan een andere uC hebben, zo ja welke ?
Ik ben pas net begonnen dus hoef geen PIC met 100en instructies.
Groeten,
Jeroen
Gerwin
An amplifier is just a modulator for a power supply |Toffe Gebruiker
Door dat lusje een beetje uit te breiden (er nog een lus omheen te zetten bijvoorbeeld) Kun je inderdaad zorgen dat de microcontroller een vaste tijd wacht.
Er zitten ook een aantal timers in, die kun je ook gebruiken, dan kan je pic namelijk iets doen terwijl hij wacht. Maar bij knipperende leds ed is dat meestal niet nodig.
Rik_J
Problems do not concern me. I want solutions, not excuses!
Als je pas begint zou ik niet meteen een robot gaan bouwen maar eerst wat simpelere dingen programmeren. Een knipperled is goed omdat je daarbij de simpele basics leert zoals nesting en dergelijke. Dan de knipperled uitbreiden en bijv. een looplicht maken.
Simpel beginnen dus en misschien moeilijk eindigen!
In een familie pic's bezitten alle varianten dezelfde instructieset. Alleen de periferie verschilt.
Gtz,
Rik.
Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Nou heb op school al verschillende opdrachten gedaan knightrider looplicht en nog wat dingen.
Maar hoe kun je de timer dan gebruiken in PIC16F serie ?
Jeroen Boere
IF you can't convince them, then confuse them!
Op 6 april 2005 17:38:49 schreef DJJeroen:
Nou heb op school al verschillende opdrachten gedaan knightrider looplicht en nog wat dingen.Maar hoe kun je de timer dan gebruiken in PIC16F serie ?
datasheet lezen en google raadplegen...
Rik_J
Problems do not concern me. I want solutions, not excuses!
Da's raar, je weet niet hoe je een timing lus kunt verlengen maar je hebt al wel een knightrider licht gemaakt? Of heb je dat alleen maar overgetypt....
Ik zou toch maar weer eens de boeken in duiken of zoals mijn voorganger zegt het datasheet en google!
Gtz,
Rik
Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Op 6 april 2005 18:28:54 schreef Rik_J:
Da's raar, je weet niet hoe je een timing lus kunt verlengen maar je hebt al wel een knightrider licht gemaakt? Of heb je dat alleen maar overgetypt....Ik zou toch maar weer eens de boeken in duiken of zoals mijn voorganger zegt het datasheet en google!
Gtz,
Rik
Ik kan de tijd lus wel verlengen, maar het leek mij beter om een timer te gebruiken mits die erin zit.
En in de Datasheets kon ik niks kwa instructies vinden misschien heb ik er wel langs gekeken, en google ook niks.
BTW in assembler
[Bericht gewijzigd door Jeroen13 op ]
Willie Worteltje
Er zijn 10 soorten mensen. Mensen die binair begrijpen en mensen die het niet begrijpen... http://home.versatel.nl/edithenwilliam/william.htm
Hier een voorbeeld van een 1 seconde wachtlus
aanroepen met:
call seconde
;*********************
;* Wachtlus Routines *
;*********************
; Zijn alleen van toepassing bij 4Mhz
seconde call msec250
call msec250
call msec250
call msec250
return
msec250 movlw D'250'
nmsec movwf cntmsec ; delay for N (in W) millisec
mseclp movlw D'248' ; 1 usec for load
call usec ; this instruction is 995 usec
nop ; 1 usec
decfsz cntmsec,f ; 1 usec, (2 if skip taken)
goto mseclp ; 2 usec, loop = 995+5 = 1 msec
return
usec addlw D'255' ; subtract 1 from 'W'
btfss STATUS,Z ; skip when you reach zero
goto usec ; more loops
return
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Op 6 april 2005 19:46:31 schreef DJJeroen:
En in de Datasheets kon ik niks kwa instructies vinden misschien heb ik er wel langs gekeken, en google ook niks.
Dacht je dan dat ze bij Microchip bij alle beschrijvingen van elke perifere functie voorbeelden gaan zitten opsommen? Voor een timer (de 628 heeft er 3) zijn honderden toepassingen denkbaar, en 1 ervan is een tijdvertraging maken.
De datasheet geeft ruim voldoende informatie om alle functies te kunnen gebruiken. Jij zult de basiskennis moeten hebben om met die informatie een routine te schrijven.
Rik_J
Problems do not concern me. I want solutions, not excuses!
Preciess en daarbij denk ik dat je een typefout in google moet maken om niet heeeel veeeeel links te krijgen!
Gtz,
Rik
Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Ik heb het gevonden van timer in datasheet.
Nou heb ik nog en vraag,
Ik heb dit bordje van velleman http://www.velleman.be/common/product.aspx?lan=2&id=350903
en nou wil ik op TRISB bit 1 een 1 hebben.
TRISA EQU 85h
PORTA EQU 05h
TRISB EQU 86h
PORTB EQU 06h
ORG 00h
BSF 03,5
CLRF TRISB
BCF 03,5
MOVLW 00000001b
MOVWF PORTB
ENDKlopt dit of niet,zo niet wat doe ik fout want hij werkt niet ?
EDIT
[Bericht gewijzigd door Jeroen13 op ]
Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Op 7 april 2005 21:01:40 schreef JoWi:
Je wilt wat doen met TRISA en PORTA neem ik aan, maar je adresseert de B poorten ??
A moet de ingang zijn en B moet uitgang zijn
Ok, voor allemaal aan doe je het volgende:
TRISA EQU 85h
TRISB EQU 86h
PORTA EQU 05h
PORTB EQU 06h
ORG 00h
BSF 03,5 ;naar bank 1
CLRF TRISB
BCF 03,5 ;naar bank 0
movlw b'11111111' ;alles aan
movwf PORTB ;waarde van W naar de poort
end
Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Werkt niet als ik de schakelaar op het bordje op run zet staat er percies 5V op de MCRL pin4 maar de uitgangen RB0 t/m RB7 zijn 0.5v dus laag.
en zodra ik mijn vingers op de Jumpers houd doet hij het wel
Wiebo
For Every Existing Problem Exists a Solution, Just Try To Find It...
TRISA EQU 85h TRISB EQU 86h PORTA EQU 05h PORTB EQU 06h ORG 00h BSF 03,5 ;naar bank 1 CLRF TRISB BCF 03,5 ;naar bank 0 movlw b'11111111' ;alles aan movwf PORTB ;waarde van W naar de poort end
Waarom gebruik je niet de Include-files? (Zie onderstaand voorbeeld) Zo word je programma veel overzichtelijker en kan je de registers en bits in je programma met de naam noemen die in de datasheet staat aangegeven. Als je een groot programma maakt, wie weet nu direkt dat 0x03 het adres van het statusregister is? en 0x05 de RP0-bit?
#include "P16F628.inc" ORG 00h BSF STATUS, RP0 ;naar bank 1 CLRF TRISB BCF STATUS, RP0 ;naar bank 0 movlw b'11111111' ;alles aan movwf PORTB ;waarde van W naar de poort end
Ok, dit is niet de oplossing voor je vraag, maar het programmeerd al veel overzichtelijker.
Btw, heb je al eens geprobeerd PORTB als input te gebruiken en PORTA als output? Bij PORTB kan je de pull-ups inschakelen, want ik denk dat dat het probleem kan zijn bij je projekt...
Groetjes
Jeroen13
//Project Quadrocopter 2.0 in progress //dsESC4x //PIC32Flight
Dat heb ik gedaan na een tip van iemand anders. Zie: http://www.circuitsonline.net/forum/view/16644
Willie Worteltje
Er zijn 10 soorten mensen. Mensen die binair begrijpen en mensen die het niet begrijpen... http://home.versatel.nl/edithenwilliam/william.htm
Op 18 april 2005 19:42:37 schreef Wiebo:
[...]Waarom gebruik je niet de Include-files? (Zie onderstaand voorbeeld) Zo word je programma veel overzichtelijker en kan je de registers en bits in je programma met de naam noemen die in de datasheet staat aangegeven. Als je een groot programma maakt, wie weet nu direkt dat 0x03 het adres van het statusregister is? en 0x05 de RP0-bit?
[...]
Groetjes
Vette opmerking Wiebo.
Dit is zo waar!!!!
Echt doen als je in ASM progt.
Bij mij duizeld het ook als ik andermans code doorneem en er staat:
BSF 03,5
terwijl
BSF STATUS, RP0
zoveel duidelijker is.
Wiebo
For Every Existing Problem Exists a Solution, Just Try To Find It...
In dat geval, ik heb eens iets opgesteld om overzichtelijk in ASM te programmeren. Misschien enkele tips die handig kunnen zijn? Dit heb ik enige tijd geleden "gepost". Misschien zijn er nog enkele dingen bij die je nog niet wist 
http://www.circuitsonline.net/forum/view/13171/1/
Succes!
