Başlangıç > Donanım/Yazılım > MSP430 ile rastgele sayı üretmek (Random Number Generator)

MSP430 ile rastgele sayı üretmek (Random Number Generator)

Rastgele sayı üreteci olmayan mikrokontrolcülerde çeşitli oyunlarla rastgele sayılar üretilebilmektedir. MSP430 da bu iş VLO ve DCO ortak çalışması (bkz. application report SLAA338) ile yapılabildiği gibi ADC ile de yapılabilir.

MSP430 un 10 numaralı analog kanalına bağlı dahili bir sıcaklık sensörü vardır. ADC girişi bu kanala yönlendirilip sıcaklık bilgisi dijital olarak okunmaya başlandığında, her okumada oluşacak analog dan dijitale dönüşteki bit hataları ve sıcaklık sensöründen gelen değişimlerle ADC sonucunun en anlamsız (LSB) bitinde rastgele farklılıklar meydana gelir. Basit bir döngü ile ADC n kere okunup n kere kaydırıldığında ortaya n bitlik rastgele bir sayı çıkar.

Aşağıdaki verilen wCreateRandomNumber fonksiyonu 16 bitlik rastgele sayı üretmektedir.


unsigned short wCreateRandomNumber(void)
{
unsigned char i;
unsigned short wRandomNumber;

 ADC10CTL1=INCH_10;
 ADC10CTL0=SREF_1 + ADC10SHT_0 + REF2_5V + REFON + ADC10ON;

 for(i=0;i<16;i++)
 {
   ADC10CTL0|=ENC + ADC10SC;
   while (ADC10CTL1 & ADC10BUSY);

   if(ADC10MEM&0x01) wRandomNumber|=1;
   wRandomNumber<<=1;
 }

 ADC10CTL0 &= ~ENC;
 ADC10CTL0 = 0x0000;
 ADC10CTL1 = 0x0000;

 return wRandomNumber;
}

Reklamlar
Kategoriler:Donanım/Yazılım
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s