[Home]PIC 10F204

HomePage | RecentChanges | Preferences

LED Flasher

This uses the following code



This was my first go with a 10F204. It uses the TMR0 to generate timer events.

;    Notes:                                                           *
;	PICkit2 Programming Header	10F204
;	1	Vpp,/MCLR 	p8
;	2	Vdd		p2
;	3	Vss		p7
;	6	AUX				

Random Number flasher using PRBS

This uses a PRBS to produce a random flasher. WDT is used as a timer. The chip sleeps until woken up by the WDT.







Random Number flasher with random startup


A post on the Microchip Forum had a requirement to have a random start up.

There is no EEPROM to remember the state when it was turned off.

It was suggested that the WDT be used. The chip has two independent oscillators, which are set to free run and sampled after a number of cycles. It may be possible to use the least significant bits as a seed for a random number.

Hopefully the temperature affects the frequencies of the two oscillators differently.

Using the modulus of the ratio of the two frequencies is used.

This is very simple and produced a flickering flasher, which did lock up at certain temperatures.

This worked and it was very simple.

The demo starts TMR0 at a fast speed and then uses the WDT to reset the processor. TMR0 is samples, and in this demo, the bottom three bits are output onto the LEDs

Measuring the WDT random number generator

 ; PICkit 2 demo - Random Numbers by measuring the WDT time out period.
 ; Doug Rice, www.dougrice.plus.com or http://www.doug.h.rice.btinternet.co.uk/ on 05/08/2010 

Being an RC based oscillator, the WDT timeout will have a noise element, hence an element of randomness.

Uses WDT and TMR0 TMR1 to produce random number.

WDT is allowed to time out and TMR0 and or TMR1 is read on timeout. TMR0 and TMR1 are reset for the next measurement.

Temperature affects the WDT and clock frequencies so produces a noisy 'random' value.

Output the value to the serial port to measure the values to see how random the numbers are.

Serially output using the UART.

Using 16F690 on LowCost Demo Board, connect RB7 to RA0 with 100 ohm resistor ( for protection )

Use PICkit 2 v2.50 and UART tool at 9600 baud

You can use the PICkit2 UART tool to log the serial output to a csv file to import into Excel.

Uses PICkit 2 Starter Kit DV164120


here is a plot of some TMR1 timeout values produced with the code above on a PIC kit 2.

Random Number flasher with random Alternating step generator


HomePage | RecentChanges | Preferences
This page is read-only | View other revisions
Last edited October 14, 2011 9:21 pm by Doug