Hallo
Ik wil graag een soort van robot gaan maken en daarvoor moet ik seriele singalen omzetten naar parallelle om motortjes en dergelijke te sturen
heeft iemand tips om dat te doen?
nog eventjes een vraagje
weet iemand of ik ook als ik al een paar pinnen hoog heb staan een pin erbij aan doen zonder te weten welke pinnen op dat moment hoog zijn???
als je een pin op een ingang zet, hoe kun je dan weten of die pin hoog is of laag??
vanhims
soms moeit de duivel zich met m'n schakeling!
je moet in je programma schrijven, welke poort een ingang of een uitgang is.
bedoel je robot in plaats van robit?
ps welke µchip gebruik je? of ga je gebruiken?
Heb je het artikel al gelezen hier op deze site! prachtige uitwerking van zo een µchip, zeker de moeite om het eens na te bouwen en te LEZEN natuurlijk. daar staat al de info in die je nodig hebt!
[Bericht gewijzigd door vanhims op ]
vanhims
soms moeit de duivel zich met m'n schakeling!
effe de link voor je opgezocht,
http://www.circuitsonline.net/artikelen/view/8
sven
pointers don't kill programs, programmers kill programs
Misschien moet je eens zoeken achter wat site met voorbeeldprogramma's ; daar kan je soms veel uit leren.
* sven stelt avr als alternatief voor en weet dan ook een goed beginpunt
ik denk dat ik de pic16F628 ga gebruiken
inderdaad ik bedoelde robot eventjes verbeterd
ik heb de tutorial al doorgelezen ik vind het zelf een heeele duidelijke tutorial
maar ik heb er dus nog een paar vraagjes over
[edit]
nog even een quote uit het vorige topic
Op 28 oktober 2004 21:18:10 schreef klc:
doe eens wat sven zegt open eens een nieuw topic met je vraag
lees ook eens de datasheet
na dat je poort hebt ingesteld test je de status
BTFSC PORTA,drukknop1
GOTO .........
wat bedoel je met drukknop1??
[Bericht gewijzigd door ocmer op ]
vanhims
soms moeit de duivel zich met m'n schakeling!
RESET?
zodat je programma van 0 af aan begint?
normaal moet je dit in je program schrijven ,maarja...
voor alle zekerheid
het is dus de bedoeling dat ik er een pin bij hoog kan maken
is het dan een idee om de waarde (bijv. 01000110) van potra in een file te zetten om hem later terug kan halen
en kan ik dat op zo'n manier doen om er een bij hoog te maken? (hier de waarde van dat moment) OR 03h
en dan de waarde van dat moment hier in staat: waarde
==========================================================================
; Variable Definition
;==========================================================================
;INPUTS
SW1 EQU H'00' ;SW1 is triggering RA0
SW2 EQU H'01' ;SW2 is triggering RA1
SW3 EQU H'02' ;SW3 is triggering RA2
SW4 EQU H'03' ;SW4 is triggering RA3
TIMER1 EQU H'20' ;Used in delay routine
TIMER2 EQU H'21' ; " " "
PATERN EQU H'22' ;Pattern data for effect's
ORG 0 ;Reset vector address
GOTO RESET ;goto RESET routine when boot.
; *********************************************
; * Example of a delay routine *
; *********************************************
DELAY_ROUTINE MOVLW D'100' ;54 Generate approx 10mS delay at 4Mhz CLK
MOVWF TIMER2
DEL_LOOP1 MOVLW D'100' ;60
MOVWF TIMER1
DEL_LOOP2 BTFSC PORTA,SW1
GOTO MENU
BTFSC PORTA,SW2
GOTO MENU
BTFSC PORTA,SW3
GOTO MENU
BTFSC PORTA,SW4
GOTO MENU
DECFSZ TIMER1,F
GOTO DEL_LOOP2
DECFSZ TIMER2,F
GOTO DEL_LOOP1
RETLW 0
; **********************************
; ** RESET : main boot routine **
; **********************************
RESET MOVLW B'00000111' ;Disable Comparator module's
MOVWF CMCON
;
BSF STATUS,RP0 ;Switch to register bank 1
;Disable pull-ups
;INT on rising edge
;TMR0 to CLKOUT
;TMR0 Incr low2high trans.
;Prescaler assign to Timer0
;Prescaler rate is 1:256
MOVLW B'11010111' ;Set PIC options (See datasheet).
MOVWF OPTION_REG ;Write the OPTION register.
;
CLRF INTCON ;Disable interrupts
MOVLW B'11000000'
MOVWF TRISB ;RB7 & RB6 are inputs.
;RB5...RB0 are outputs.
MOVLW B'11111111' ;all RA ports are inputs
MOVWF TRISA
BCF STATUS,RP0 ;Switch Back to reg. Bank 0
CLRF PORTB
GOTO EFFECT_4
;
MENU CLRF PORTB
;
BTFSC PORTA,SW1
GOTO EFFECT_1
BTFSC PORTA,SW2
GOTO EFFECT_2
BTFSC PORTA,SW3
GOTO EFFECT_3
BTFSC PORTA,SW4
GOTO EFFECT_4
GOTO MENU
EFFECT_1 BTFSC PORTA,SW1
GOTO EFFECT_1
E1 MOVLW B'00100000' ;
MOVWF PORTB
........
.... enzoverder
dit is een voorbeeldje van hoe je drukknop leest
stuur eens een mail dan stuur ik je het volledige progje
(van velleman (c))
kun je eens testen en spelen er mee
Hardstikke bedankt voor je mail.
ik had nog even een vraage, kun je da par. poort ook gebuiken om seriele singalen te maken??
en weet iemand toevallig hoe je het progje kan simuleren in het programma
bestaad er ook een commando waarmee je bijv. '10010011' bij '00101000' kan optellen en dat er dan '10111011' uit komt
Op 30 oktober 2004 18:47:53 schreef cociedecooc:
bestaad er ook een commando waarmee je bijv. '10010011' bij '00101000' kan optellen en dat er dan '10111011' uit komt
Misschien is het handg om eens wat meer over digitale technieken te lezen, want je bedoelt een logische OR. Deze heeft de pic gewoon als commando, zie de instructieset in de datasheet.
'k heb gekeken en ik heb dit commando gevonden: IORWF
als ik dat die en je hebt '01100010' en '11001100'
dan komt er toch '11101110' uit
maar is er ook een commando als je '01001011' hebt en '11110111' dat er '01000011' uit komt?
Op 30 oktober 2004 20:48:15 schreef cociedecooc:
'k heb gekeken en ik heb dit commando gevonden: IORWFals ik dat die en je hebt '01100010' en '11001100'
dan komt er toch '11101110' uitmaar is er ook een commando als je '01001011' hebt en '11110111' dat er '01000011' uit komt?
dat is een AND..
maar zoals wouter al zei bestudeer de logische poorten eens.
AND, OR, NOT, NOR, NAND, EXOR enz.
[Bericht gewijzigd door Electroboy op ]
Op 30 oktober 2004 20:53:07 schreef Electroboy:
[...]dat is een AND
end klopt da over die IORWF ook?
en allemaal hardstikke bedankt allemaal nu is't al een stuk makkelijker
instelporta EQU 85h
instelportb EQU 86h
porta EQU 05h
portb EQU 06h
ingang EQU H'00'
ORG 00h
BSF 03,5
MOVLW B'11000000'
MOVWF instelporta
MOVLW B'00000000'
MOVWF instelportb
BCF 03,5
bitstesten BTFSS porta,ingang
GOTO bitstesten
NOP
NOP
BTFSC porta,ingang
GOTO check_1
GOTO af_1
check_11 BTFSC porta,ingang
GOTO check_2
GOTO af_2
check_12 BTFSC porta,ingang
GOTO check_3
GOTO af_3
check_13 BTFSC porta,ingang
GOTO check_4
GOTO af_4
check_14 BTFSC porta,ingang
GOTO check_5
GOTO af_5
check_15 BTFSC porta,ingang
GOTO check_6
GOTO af_6
check_16 BTFSC porta,ingang
GOTO check_7
GOTO af_7
check_17 BTFSC porta,ingang
GOTO check_8
GOTO af_8
check_18 GOTO bitstesten
check_1 MOVLW B'00000001'
IORWF portb,1
GOTO check_11
af_1 MOVLW B'11111110'
ANDWF portb,1
GOTO check_11
check_2 MOVLW B'00000010'
IORWF portb,1
GOTO check_12
af_2 MOVLW B'11111101'
ANDWF portb,1
GOTO check_12
check_3 MOVLW B'00000100'
IORWF portb,1
GOTO check_13
af_3 MOVLW B'11111011'
ANDWF portb,1
GOTO check_13
check_4 MOVLW B'00001000'
IORWF portb,1
GOTO check_14
af_4 MOVLW B'11110111'
ANDWF portb,1
GOTO check_14
check_5 MOVLW B'00010000'
IORWF portb,1
GOTO check_15
af_5 MOVLW B'11101111'
ANDWF portb,1
GOTO check_15
check_6 MOVLW B'00100000'
IORWF portb,1
GOTO check_16
af_6 MOVLW B'11011111'
ANDWF portb,1
GOTO check_16
check_7 MOVLW B'01000000'
IORWF portb,1
GOTO check_17
af_7 MOVLW B'10111111'
ANDWF portb,1
GOTO check_17
check_8 MOVLW B'10000000'
IORWF portb,1
GOTO check_18
af_8 MOVLW B'01111111'
ANDWF portb,1
GOTO check_18
END
zou dit moeten kunnen werken??
en ik heb een even gekeken in de datasheet hoeveel cycles de commando's duren maar zommige stonden '1(2)'
waar is dat voor?
Dat 1 (2) komt voor bij de conditionele instructies. De btfss-instructie zorgt er voor dat je of naar de volgende regel gaat of de volgende regel overslaat. In het tweede geval duurt de uitvoering van de instructie 2 cycles, in het eerste geval 1 cycle.
Maar nu over je programma..wat moet het doen? Het ziet er namelijk wel erg omslachtig uit, waardoor ik niet zo goed snap wat je wilt bereiken.
Wat voor processor gebruik je? Dit gaat natuurlijk een heel stuk handiger met een UART.
Want wat ik niet uit deze code haal is een gedefinieerde baudrate.
Een UART is de seriele poort op een processor. Volgens mij heeft die F628 zo'n ding.
Dit bespaart je al die ellende met softwarematig proberen serieel data binnen te halen.
EDIT//
Chapter 12 datasheet
Op 2 november 2004 17:46:06 schreef DIY:
Een UART is de seriele poort op een processor. Volgens mij heeft die F628 zo'n ding.
Dit bespaart je al die ellende met softwarematig proberen serieel data binnen te halen.
hoe werkt dat dan?
't is inderdaad wel ingewikkeld op deze manier
[edit]
dit wil ik gaan doen:
ik had ergens op internet iets gezien over robot voetbal, en leek het mij vel leuk om zelf ook zoiets te maken maar dat hij dan alleen kan sturen, naar voor en achter rijden, en iets pakken. (en dan maken met lego of zo)
en dat ik dan met het zendertje van velleman dat ding aansturen
[Bericht gewijzigd door ocmer op ]