aynı anda birbirinden bağimsız program döndürmek nasıl oluyor

Başlatan harmanx, 25 Nisan 2012, 03:04:38

harmanx

selam
pic yazma konusunda daha çok yeniyim öğrenmek amacıyla yardımlarınızı bekliyorum

aynı anda birbirinden bağimsız program döndürmek nasıl oluyor

Yapmak istediğim   mesela portb.0'da 100ms 'de bir led yakıp söndürme aynı anda portb.1' 20ms'de led yakıp söndürme

veya portalrdan biri led yanıp sönerken 10ms hızında başka bir portu butonla açma kapama???

muhittin_kaplan



smartcard

RTOS konusunu incelemeni tavsiye ederim.pic basic RTOS kullanımı hakkında bilgim yok

ahmets

Selam,
Aynı anda olmuyor ama pic yeterince hızlı olduğu için aynı anda oluyormuş gibi görünüyor.

Alıntı yapılan: harmanx - 25 Nisan 2012, 03:04:38
Yapmak istediğim   mesela portb.0'da 100ms 'de bir led yakıp söndürme aynı anda portb.1' 20ms'de led yakıp söndürme


Önce uygun bir zaman aralığı belirleyelim, mesela 10 ms olsun.
do while(1) {
    i = i + 1
    if i >= 10 then i = 0

    if(i == 5) then
        portb.0_ledini_yak
    elseif(i == 0) then
        portb.0_ledini_söndür

    if(i % 2 == 0)  // çift sayı ise
        portb.1_ledini_yak
    else
        portb.1_ledini_söndür

    delay_ms(10)
}


Burada döngü içindeki işlemler hesaba katılmadığı için her döngü 10ms nin biraz üzerinde oldu.
Hassas zamanlama için ya tam hesaplayıp delay süresini değiştireceksin veya kodu timer interrupt ile çalışır şekle çevireceksin. Interrupt ile yazmak bundan çok farklı değil ama yeni başlayanlar için biraz sorunlu olabilir.

muhittin_kaplan