• Merhabalar, thread mantığı arduino da yok diye duydum. doğru mudur ?
    Benim yapmak istediğim şey, can bus shield ile can high ve can low çıkışı üzerinden seri port a aşağıdaki dataları göndermek. bir datayı gönderebiliyorum. fakat işin içine 3 tane data ve farklı milisaniyeler girdiğinde durumu yönetemiyorum. Arduino uno ile bu yapılabilir mi ? yani hepsi birbirinden bağımsız çalışacak ve kendilerine atadığım milisaniyede datayı gönderecek. Şimdiden teşekkür ediyorum yardımlarınız için. İyi akşamlar. (1.ci data 12 milisaniyede 1 gidiyor, 2.ci data 18 milisaniyede 1 gidiyor, 3.cü data 25 milisaniyede 1 gidiyor ve sürekli gidiyor, yani şu an gitmiyor ama gitmesi için uğraşıyorum :)

    #include



    void setup() {

    CAN.begin(250);

    }



    void loop(){

    CAN_TxMsg.id=0x521;
    CAN_TxMsg.header.rtr=0;
    CAN_TxMsg.header.length=8;


    CAN_TxMsg.data[0]=0x00;
    CAN_TxMsg.data[1]=0x01;
    CAN_TxMsg.data[2]=0x03;
    CAN_TxMsg.data[3]=0x30;
    CAN_TxMsg.data[4]=0x00;
    CAN_TxMsg.data[5]=0x00;
    CAN_TxMsg.data[6]=0x40;
    CAN_TxMsg.data[7]=0x00;
    CAN.send(&CAN_TxMsg);
    delay(12);


    CAN_TxMsg.id=0x612;
    CAN_TxMsg.header.rtr=0;
    CAN_TxMsg.header.length=8;


    CAN_TxMsg.data[0]=0x00;
    CAN_TxMsg.data[1]=0x3E;
    CAN_TxMsg.data[2]=0x47;
    CAN_TxMsg.data[3]=0x1C;
    CAN_TxMsg.data[4]=0xA3;
    CAN_TxMsg.data[5]=0x1D;
    CAN_TxMsg.data[6]=0xD2;
    CAN_TxMsg.data[7]=0x1C;
    CAN.send(&CAN_TxMsg);
    delay(18);


    CAN_TxMsg.id=0x111;
    CAN_TxMsg.header.rtr=0;
    CAN_TxMsg.header.length=8;


    CAN_TxMsg.data[0]=0x03;
    CAN_TxMsg.data[1]=0x6E;
    CAN_TxMsg.data[2]=0x43;
    CAN_TxMsg.data[3]=0x1D;
    CAN_TxMsg.data[4]=0xA2;
    CAN_TxMsg.data[5]=0x1A;
    CAN_TxMsg.data[6]=0xD6;
    CAN_TxMsg.data[7]=0x1C;
    CAN.send(&CAN_TxMsg);
    delay(25);


    }
  • Kimse yok mu ? :(
  • Coşkun bey yardım edebilir size sanırım. Bu ağaç mantığını arduinoda ilk defa duymul bulunuyorum.
  • embedded sistemlerde thread mantığı pc deki gibi değil. hepi topu 16mhz hızda çalışıyor cpu, embedded sistemlerde rtos ile threading yapılıyor ama sizin işte ve arduinoda zor biraz gereksiz şu anda. canbus H ve canbus L çıkışlarını seriporta bağlamak diye yazmışın olmaz o öyle, canH ve canL hattı canbus arabirimlerinin kendi arasında haberleşme için kullandığı diferansiyel bir bus tur seriye bağlamayın. yok eğer oyle demek istemediniz canbustan gelen bilgiyi seriporttan vericem alıcam oradan tekrar canbus a yollayacam diyorsan seriport için interrupt kullan seriden gelen her karakter bilgide interrupt oluşturup buffer a atacaksın. canbustan bilgileri okurkende düzenli olarak okuman lazım her okuduğunda canbus buffer boşalır yeni bilgiye yer açılır yani sık sık okuyup canbus bufferi boşaltmazsan alacağın verinin zamanlaması da tutmaz ayrıca canbus u hangi hızda kullanıyorsun 500kbitmi 250 kilobitmi bilemiyorum o hızlarda gelen yığın datayı arduino biraz zor yetiştirir gibi geliyor bana canbus hızı 300kbyte data alır verir siz seriden 9600 baudla bunu biraz zor yönetirsiniz nerden baksan 20 kat yavaş kalır seri port ... deneysel arduino rtos çalışmaları http://jeelabs.org/2013/05/25/chibios-for-the-arduino-ide-2/ https://code.google.com/p/rtoslibs/ http://code.google.com/p/duinos/
  • Teşekkür ederim. Şimdi daha iyi yerleşti :)

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.