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??

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 ]

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 ]

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

als je hem zou willen sturen dan echt heeeeeeeeeeeeeeel graag
echt super als je dat zou willen doen

...

[Bericht gewijzigd door ocmer op ]

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: 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?

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

het is gelukt!!!!!!!!!!!!!!!!!!!!!!

bedankt allemaal voor de hulp!!!!!!!!!!!!!!!!


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.

ik moet van een serieel singaal naar een parallel singaal

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.

PIC 16F628

wat bedoel je met UART

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 ]