Mikro C armda değişkene pin atama ve kontrolü

Başlatan Murat Mert, 08 Ekim 2017, 13:29:24

Murat Mert

S.A.
Herkese kolay gelsin.
Mikro c arm da daha önce CCS C de yaptığım bir şeyi yapamadım belki basittir ama çözmeye vasıl olamadım. Pini bir değişkene atamadım.

CCS de:

Kod Seç


int kirmizi
=pin_D0;
int beyaz=pin_D1;

void ledyak(int pin)
{
    
output_high(pin); delay_ms(500);
    
output_low(pin); delay_ms(500);
    
output_high(pin); delay_ms(500);
    
output_low(pin); delay_ms(500);
}

void main()
{
   while(
1)
     {
         
ledyak(kirmizi);
         
ledyak(beyaz);
     }
}



Discovery407 kit kullanıyorum üzerindeki ledleri kontrol ediyorum ama bu şekilde edemedim. Farklı bir metodu varsa yardımcı olursanız sevinirim. Kolay gelsin.


mert07

LukeSkywalker

CCS C işte insanları bu şekilde sabitliyor. Ben de zamanıda kullanıp register erişimlerinde sorun yaşamaya başlayınca hemen bırakmıştım.
Öncelikle output_high diye bir komu yok mikroC 'de. Register bazında işlem yapmanız lazım pin durumlarını okumak ve değiştirebilmek için.
Diğer bir durumda ANSI C uyumu. Bir pini  int diye tanımlayıp geçemezsiniz.


Murat Mert


Hocam output microc de yok tamam tanımlıpin=1 yada 0 var orası tamam. Eğer mikroc de bunun benzeri bir komut yada önerilecek bir yol varmı yada kolaylık. Kulağı uzun yoldan tutmamak için. Aynı yöntemi CS pinleri içinde kullanıyorum kod kalabalığından kurtulmak ve sade bir yazım için.



mert07

LukeSkywalker

Fonksiyonu sizin oluşturmanız lazım.

Kod Seç

#define kirmizi 12
#define beyaz 13

void ledyak(char pin)
{
 
GPIOD_ODR|=(1<<pin); delay_ms(500);
 
GPIOD_ODR&=~(1<<pin); delay_ms(500);
 
GPIOD_ODR|=(1<<pin); delay_ms(500);
 
GPIOD_ODR&=~(1<<pin); delay_ms(500);
}
void main() {
GPIO_Digital_Output(&GPIOD_BASE,_GPIO_PINMASK_12|_GPIO_PINMASK_13);
while(
1)
        {
         
ledyak(kirmizi);
         
ledyak(beyaz);
        }
}

Murat Mert

mert07

Murat Mert

mert07

LukeSkywalker


Murat Mert

mikroc arm a taşındım, ama bazı şeyler hemen olmuyor. Teşekkürler.
mert07