Stm32 · Kasım 10, 2012 0

CooCox ile ADC ve PWM

timing_10[1]Bu yazıda uygulayacağımız programı, stm32vl kartını kullanacağız. Analog kanaldan ölçtüğümüz değer ile PWM duty değerini değiştirerek, karta bağlı olan ledlerin parlaklıklarını değiştireceğiz.
Önce ADC den bahsedelim. Stm32F100RB işlemcisi 16kanal ve 12bitlik Analog Digital Convertore sahip. İşlemci nin çeşitli portları adc olarak kullanabiliyoruz. Bu pinlerin neler olduğunu  dökümanınınTable 4. Low & medium-density STM32F100xx pin definitions Bölümünden ulaşabilirsiniz.

ADC yi kullanabilmek için kanalın belirlenmesi gerekir. Biz GPIOC.0 ı giriş olarak kullanacağız. Yukarıda bahsedilen tabloya bakacak olursanız bu pin ADCnin 10. kanalına denk geliyor. yani biz okumalarımızı 10. kanaldan yapacağız. Daha sonra ölçtüğümüz bu değeri Timer3 ile hazırlanmış olan 4 kalan PWM in 3 ve 4. kanallarına vererek (GPIOG.8 ve GPIOC.9) ledleri n parlaklığını ayarlayacağız.
önce sistemin saat sinyalini ayarlamamız gerekecek. bunun için daha önce kullandığımız fonksiyonu kullanabiliriz.

Burada Fazla söze gerekyok. Daha sonra ADC ölçümü için gerekli kodları yazıyoruz. Genelde Buarad açıklamaktansa kodların içerisinde açıklama yapmayı tercih ediyorum

Şimdi ise Gerekli olan PWM ayarlamalarımızı yapalım.

son olarak ana blogumuz olan main.c fonksiyonumuz.

Programın tüm kodları için TIKLAYINIZ.
Herkese iyi çalışmalar.
 

Ziyaretci : 314