Arduino a rychlost

Jaroslav Lukesh (seznam IMAP) lukesh na seznam.cz
Pondělí Leden 23 12:44:42 CET 2017


Mě funguje tohle:

void pipnuti(byte pocet = 1){

    for (unsigned int j = 0; j < pocet ; j++){
        for (unsigned int i = 0; i <= 33 ; i++){
            bitWrite(PORTB,0,0);// D8     // pravá kaskáda tranzistorů
            bitWrite(PORTB,2,1);// D10    // levá
            delay(2);
            bitWrite(PORTB,0,1);// D8     // pravá kaskáda tranzistorů
            bitWrite(PORTB,2,0);// D10    // levá
            delay(2);
        }
        delay(400);
    }
}


           bitWrite(PORTB,0,A11);// D8     // pravá kaskáda tranzistorů
            bitWrite(PORTB,2,A10);// D10    // levá

             bitWrite(PORTB,5,Q14); // D13   // BLIK

            if     (Q10 == 0 and Q13 == 0) delayMicroseconds(15);

Jo a výstupy musí být zatížené pár mA, jinak z toho lezou nevyzpytatelně 
občas divné věci.

  ----- Původní zpráva ----- 
  Od: Ales Filip
  Komu: HW-news
  Odesláno: 23. ledna 2017 11:17
  Předmět: Re: Arduino a rychlost


  Dobrý den,

  Tak jsem si s tím o víkendu chvilku hrál.
  Původní digitalWrite - 83,3kHz
  digitalFastWrite  - 2,00MHz

  bitWrite(PORTB,1, 0)
  bitWrite(PORTB,1, 1)
  udělá jenom Hi čáru, žádné pulzy. Jakmile mezi vložím nějaký příkaz, tak 
klesne rychlost na nesmysl.
  Dá se v Arduinu nějak použít např. assemblerovské NOP?

  Ještě jsem to zkoušel na ESP8266-12
  digitalWrite - 160kHz
  digitalFastWrite  - 160kHz
  Při použití FastWrite byla rychlost stejná
  bitWrite se mi nepodařilo rozchodit.


  S pozdravem,

-- 
 Aleš Filip
 Kutná Hora
 http://xanadu.khnet.info




  Dne 20.1.2017 v 8:46 Pavel Kutina napsal(a):

    Zkuste se nekde googlu pozeptat, co vlastne vsechno digitalWrite dela - 
ona je to opravdu hodne pomala mrcha.

    Jednak existuji knihovny pro fast write (v nazvu neco jako 
digitalFastWrite, lovim z hlavy, nevim), druha varianta je cvicit primo s 
pinama pres masky. Oboji je radove rychlejsi.

    Skoro bych to ani nenazyval bugem, spis vlastnosti.

    Pavel Kutina



    Dne 20.1.2017 v 8:32 Ales Filip napsal(a):

      Dobrý den,

      Včera jsem něco dělal na Arduinu, a nějak mi nevycházely časy. Vytáhl
      jsem osciloskop, a měřil. Nakonec jsem skončil na tomto:

      Arduino MEGA (16MHz)
      Program:

      void setup() {
      pinMode(8, OUTPUT);
      }

      void loop() {
      digitalWrite(8, HIGH);
      digitalWrite(8, LOW);
      }


      Na pinu 8 jsem naměřil frekvenci 83.3kHz :-O

      To by mě zajímalo, co mezi tím přepnutím zi Hi na Lo procesor dělal. 
Asi
      si vařil kafe :-)



      S pozdravem,

      -- 
       Aleš Filip
       Kutná Hora
       http://xanadu.khnet.info



      _______________________________________________
      HW-list mailing list  -  sponsored by www.HW.cz
      Hw-list na list.hw.cz
      http://list.hw.cz/mailman/listinfo/hw-list


    _______________________________________________
    HW-list mailing list  -  sponsored by www.HW.cz
    Hw-list na list.hw.cz
    http://list.hw.cz/mailman/listinfo/hw-list





------------------------------------------------------------------------------


  _______________________________________________
  HW-list mailing list  -  sponsored by www.HW.cz
  Hw-list na list.hw.cz
  http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20170123/0d65e5c0/attachment.html>


Další informace o konferenci Hw-list