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