ADC 값을 이용한 random seed 바꾸기

2019. 5. 21. 17:39임베디드/ATmega128

[참고] https://embed-avr.tistory.com/49#comment17152900

avr-libc 소스파일을 보고 싶으면 아래 이미지 주소로 접속하면 된다. 저는 형광펜으로 칠한 파일 최신 avr-libc를 다운로드 했다. 

http://download.savannah.gnu.org/releases/avr-libc 

avr-libc-2.0.0.tar\avr-libc-2.0.0\libc\stdlib 해당 폴더로 이동하면 rand 함수 소스파일을 열 수 있다

 

rand.c 소스파일
time.c 소스파일

일반적으로 srand(time(NULL))을 작성하면 time 함수를 보면 현재 시스템 시간을 return 해준다. visual stduio에서는 PC가 타켓이기 때문에 내장되어 있는 RTC를 시스템 시간으로 받아 넘겨준다. 하지만 마이크로컨트롤러는 RTC가 없기 때문에 srand를 반복을 계속해도 동일한 값만 동일한 순서대로 나오게 된다. 따라서 RTC가 없다면 외부에서 바꿔줄 수 있는 ADC를 활용할 수 있다.

 

https://github.com/surinoel/avr/tree/master/adc/rval_rand_seed