Arduino AVR C ile CTC modda Led Yakma | Arduino Led Burning in CTC mode with AVR C
Arduino UNO R3 ile led yakmayı ve Arduino Genuio platformunda rahatça yazılımını yapabiliyoruz. Peki Arduino Genuio platformunun altında C alt yapısı varken, yaptığımız yazılımları C syntax ve fonksiyonlarına göre neden yazılmasın. Bu yazımızda AVR C’de CTC moda ile yazılan kodlarımızı Arduino’da derleyip led 10 ar saniye aralıklara yakıp söndürmenin mümkün olduğunu göstereceğiz, gerekli fonksiyonların ne işe yaradığı açıklama satırlarında detaylı bir şekilde açıkladık.
Devre;
Sketch;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <avr/io.h>//I/O işlemlerini gerçekleştirmek içim kullanırız. int y=0; int main(){ DDRB|=(1<<1);//DDRD 8-13 arasındaki pinler için kullanılır.Vede çıkış verir. PORTB|=(1<<1);//PORTD 8-13 arasındaki 9 pini yakar. TCCR1B|=(1<<WGM12);//CTC moda dönüşüm TCCR1B|=(1<<CS12);//16 bitlik zamanlayıcı 256 değerine bölündü ve bu değerden başlatıldı OCR1A=62500;//CTC 1MHZ hızıdaki,256 I/O AVR clock değeri atandı. for(;;){//void loop gibi sonsuz döngü oluşturdum. for(y=0;y<10;y++){ while((TIFR1 & (1<<OCF1A))==0);//polling if(y==9){ PORTB^=(1<<1);//PORTD 0-7 arasındaki 5 pini değilini alarak söndürür. } TIFR1|=(1<<OCF1A);//tekrar geri dönebilmesi için bayrak 0 landı. } } return 0; } |
Açıklama:
Bu kodu derleyip, devremizi kurduğumuzda Arduinoda yaptığımız işlemleri AVR C ile CTC modda da gerçekleştirebiliyoruz.
normal modda mesela nasıl 4 saniye led yanacak 7 saniye sönecek nasıl yaparız