BartR
Computers doen wat je zegt, niet wat je wilt
Hallo allemaal,
Ik ben bezig met een programma wat 16 lampen aan stuurt. Eigenlijk is de hele software en hardware al klaar. Maar ik wil de lampen in verschillende patronen laten knipperen, ook dit is nog geen probleem, tot ik het idee had om de random te laten knipperen.
heeft iemand een idee hoe je een random getal uit een pic krijgt??? het gaat om de pic16F84A (idd, van het artikel van deze site)
alvast bedankt
Groeten
Bart
dat staat uitgelegd op : www.picbasic.nl
staat volgens mij in een van de cursusen
BartR
Computers doen wat je zegt, niet wat je wilt
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
LAat je PIC/AVR met een paar onstabiele factoren rekenen.
BV de lichtsterkte, warmte etc.
Niets zo variabel als analoog en als je zoiets ADC omzet, heb je een paar mooie factoren om mee te rekenen.
BartR
Computers doen wat je zegt, niet wat je wilt
Ik denk dat ik de code van basic pic ff ga uit ravelen. moet vast wel leuken.
ik heb helaas geen analogen signaalen op me pic. anders had k wel iets van een sinus generator op een ingang gezet en dan iderekeer bepalen of het 1 of 0 is. maar dat gaat nu niet. (pic zit nok vol.)
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Gejat van www.piclist.com
16-bit random generator (tested)
The 0xA1 is part of a prime polynom value 0xA1A1 which generates a full LFSR
Random:
BCF STATUS,C
RRCF LFSRVALUEH,F
RRCF LFSRVALUEL,F
BTFSS STATUS,C
RETURN
MOVLW 0xA1
XORWF LFSRVALUEH
XORWF LFSRVALUEL
RETURNZie of je de seed (de startwaarde) ergens willekeurig vandaan kan halen (tijd dat een knopje bijvoorbeeld is ingedrukt), anders begin je gewoon met 0x0000.
BartR
Computers doen wat je zegt, niet wat je wilt
Ok,
ik heb net een ander stukje code van die site gestest! 
dit werk volgens mij nu goed.
in idergeval bedankt!
gr
Bart
Load a register called "RANDOM" with any non-zero value, then call this routine each time you'd like a new pseudo-random value:
LFSR: RLF RANDOM,W
RLF RANDOM,W
BTFSC RANDOM,4
XORLW 1
BTFSC RANDOM,5
XORLW 1
BTFSC RANDOM,3
XORLW 1
MOVWF RANDOM
RETLW 0
Scott Dattalo says:
[with the double RLF at the start of this routine,] Andy is implementing 'roll left' where the most significant bit of RANDOM will get copied to least significant position. This is how it works. The first RLF will copy the most significant bit of RANDOM into the carry. What ever was in the carry prior to the first RLF will get copied into the least significant bit position - but we don't care. Also, since the destination is the W register, the variable RANDOM is unaffected. The second RLF repeats the same rotate operation, but this time the carry has been initialized to the MS bit of random. So this second rotate will copy the MS bit into the least significant bit. All of the other bits are of course shifted left one bit position. See?
Ik heb laatst in assembler een dobbelsteen gebouwd, deze ging zolang de switch ingeduwd was aftellen.
Als de waarde 0 was begon hij weer bij 6. Je moet wel opletten dat je bij de overstap van 0 naar 6 even veel kloktikken kwijt bent als bij het aftrekken. Hiervoor heb ik vertraging gebruikt.
TELLER BTFSS PORTA,SW4
GOTO VERVOLG1
DECFSZ DOBBEL, 1
GOTO VERTRAGING
MOVWF DOBBEL
NOP
GOTO TELLER
VERTRAGING GOTO TELLER