Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Brzina serial.read?

[es] :: Elektronika :: Mikrokontroleri :: Brzina serial.read?

Strane: 1 2

[ Pregleda: 1270 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

boogi
RS-BiH

Član broj: 56974
Poruke: 334
*.public.t-mobile.at.

Sajt: www.elektrohackl.at


+7 Profil

icon Brzina serial.read?21.11.2019. u 20:40 - pre 7 meseci
Pozdrav...
Situacija:
Arduino uno... Prima podatke u bafer preko serijskog porta... Primi ih recimo 20 bajtova.... Po zavrsetku prijema svih 20 bajtova pocinje da ih cita i smjesta ih u niz...
Nesto tipa petlje koja radi:
a=1 do 20,
x=serial.read(),
niz[a] = x...

Koliko vremena (cca) mu treba da ih procita i smjesti u niz?

Tj... Kako procitah negdje na nekom forumu, pri 9600bps, prijem u bafer traje cca 1mS za jedan bajt (ispravite ako grijesim)... Znaci 20 bajtova cca 20mS...jel taj omjer i za citanje iz bafera il to ide mnogo brze...
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Beograd, Vračar

Član broj: 288510
Poruke: 4178
93-86-239-207.dynamic.isp.telekom.rs.

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+458 Profil

icon Re: Brzina serial.read?22.11.2019. u 23:25 - pre 7 meseci
Pre for petlje staviš OldMilliseconds = milis() a kada iščitaš bafer ispišeš milis()-OldMilis.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?24.11.2019. u 12:27 - pre 7 meseci
Vreme potrebno da se procita podatak sa seriske linije je iskljucivo vezan za brzinu prenosa, 9600 BAUD znaci da se salje brzinom 9600 bitova u sekundi ili oko 960 bajtova u sekundi (racuna se okvirno 10 bitova po karakteru jer ima start i stop bit po protokolu) sto ispada oko 1ms po karakteru.

Dakle citanje je relativno "sporo" i tu ne moze mnogo da se promeni situacija.

Dodeljivanje iscitanog podatka nekoj drugoj variabli je "brzo", to se desava u okvirima oko ili manje od 1us (mikro sekunde).

BTW: Dignes brzinu na 115200 BAUD i sve proradi doosta brze ;)
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?24.11.2019. u 13:17 - pre 7 meseci
Uzgred serial.read() funkcija kod Arduino je BLOCKING tipa sto u prevodu znaci da ce funkcija cekati dok se ne iscita sve sto je stiglo na liniju (u interni buffer funkcije, cekajuci dok ne stigne CR\LF ili NULL karakter) i ne moze da se predje na sledecu funkciju dok se ta operacija ne zavrsi, dakle BLOKIRA se dalji rad dok ne iscita.

Kod malih brzina prenosa je to ogroman problem jer se ceo program blokira za to vreme a mogao je hiljade nekih drugih instrukijza da uradi dok ceka podatak!

Iz tih razloga postoji NON-BLOCKING pristup gde se to radi malo drugacije preko DMA i Interupt rutina.
Podatak se iscitava karakter po karakter preko interupta, upisuje preko DMA u rezervisani buffer i ceka se statusni flag za IDLE od USART-a koji znaci prakticno kraj prenosa paketa podataka i naj taj nacin mogu da se primaju paketi razlicite duzine i sto je najbitnije mogu da sadrze NULL (0x00) karakter u sebi, dakle binarni prenos podataka.
Interapt (ISR) rutina radi jedan po jedan karakter i ta operacija je veoma brza tako da ne blokira ostatak programa i na kraju setuje neki flag u programu "stigao_paket" i program odradi sta treba, ima duzinu + binardni sadrzaj u bufferu i to je to!

Sa ovim pristupom citanja, glavna petlja moze da se ubrza nekoliko hiljada puta, radi kao da ga "nema", "u pozadini", minimalno resursa oduzima.

[Ovu poruku je menjao mikikg dana 24.11.2019. u 14:40 GMT+1]
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Beograd, Vračar

Član broj: 288510
Poruke: 4178
93-86-239-207.dynamic.isp.telekom.rs.

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+458 Profil

icon Re: Brzina serial.read?24.11.2019. u 14:25 - pre 7 meseci
Miki, ima li Atmega328 DMA?
Nešto nisam siguran.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?24.11.2019. u 15:01 - pre 7 meseci
Hehe, niko nije naveo koji je MCU u pitanju, samo je receno Arduino, i Atmel/MCP SAM3 moze da ide pod Arduino, isto kao sto moze i STM32 i jos gomila drugih koji imaju DMA ... ;)

Atmega328 ko to jos koristi pored zivih ARM-ova :)
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15252
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2316 Profil

icon Re: Brzina serial.read?24.11.2019. u 18:00 - pre 7 meseci
328 jeste patetican ali ako se dobro secam i on ima dma
 
Odgovor na temu

boogi
RS-BiH

Član broj: 56974
Poruke: 334
*.public.t-mobile.at.

Sajt: www.elektrohackl.at


+7 Profil

icon Re: Brzina serial.read?24.11.2019. u 18:05 - pre 7 meseci
Hvala!

ZAS011 nesto tako sam napisao i dosao do nekih meni korisnih podataka...


mikikg...prva poruka mi jasna...druga nije bas skroz pa bi molio pojasnjenje...

Citat:
Uzgred serial.read() funkcija kod Arduino je BLOCKING tipa sto u prevodu znaci da ce funkcija cekati dok se ne iscita sve sto je stiglo na liniju (u interni buffer funkcije, cekajuci dok ne stigne CR\LF ili NULL karakter) i ne moze da se predje na sledecu funkciju dok se ta operacija ne zavrsi, dakle BLOKIRA se dalji rad dok ne iscita.


Znaci...imam recimo situaciju gdje sa racunara saljem arduinu kroz serijski port niz podataka(iz IDE monitora)....recimo 0123456789...neka brzina bude 9600bps... racunar ustvari salje ASCII kodove za taj niz 48 49 50 51 52 53 54 55 56 57 ...da pretpostavimo da na kraju nema line feed tj 10...za ovih 10 bajtova treba cca 10ms da stignu u bafer....

nakon stizanja svih podataka sa Serial.read() se moze iscitati svih 10 bajova i dodjeliti ih nekoj promjenjivoj...

Sta znaci BLOCKING tip?
Jel to znaci da ako sam pokusao citati podatke iz bafera prije nego li su svi stigli da bi Serial,read cekao dok stigne zadnji tj 57 ili
ako sam recimo poceo citati a u toku je bilo stizanje podatka npr 52 da bi on cekao dok se ne zavrsi prijem 52 i onda iscitao 48 49 50 51 52 ?
ili nesto trece....
Ako sam dobro formulisao pitanje :)

Adruino Uno BTW je...

Hvala jos jednom...
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Beograd, Vračar

Član broj: 288510
Poruke: 4178
93-86-239-207.dynamic.isp.telekom.rs.

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+458 Profil

icon Re: Brzina serial.read?24.11.2019. u 19:46 - pre 7 meseci
Citat:
mikikg:
Hehe, niko nije naveo koji je MCU u pitanju, samo je receno Arduino, i Atmel/MCP SAM3 moze da ide pod Arduino, isto kao sto moze i STM32 i jos gomila drugih koji imaju DMA ...

Atmega328 ko to jos koristi pored zivih ARM-ova


Citat:

Situacija:
Arduino uno... Prima podatke u bafer preko serijskog porta... Primi ih recimo 20 bajtova.... Po zavrsetku prijema svih 20 bajtova pocinje da ih cita i smjesta ih u niz...


Prebrzo čitaš
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4099
*.dynamic.sbb.rs.



+455 Profil

icon Re: Brzina serial.read?24.11.2019. u 23:27 - pre 7 meseci
Blocking tip ti je ukratko prevedeno - dok se proces ne zavrsi, novi ne zapocinje. To ti je kako su nekad racunari funkcionisali, bez multitaskinga. Znaci kao da si lupio komandu "delay" i cekas da ona prodje.

Ne bi mogao da iscitas nista dok se kompletno ne iscitaju podaci koji stizu, sledeca proceduralna komanda bi cekala.

Necu ti puno pomoci, ali neke kljucne reci na koje bi valjalo da obratis paznju: software spi; spi dma; naravno sve vezano za Arduino. Mislim da na taj nacin mozes mnogo mnogo vise podataka brze da iscitas nego preko serial.read.

p.s. 328 jeste po danasnjim standardima los, i iskreno mislim da direktna zamena u 2019. godini postaje esp32 "SoC" ako mogu tako da ga nazovem. Ali daleko od toga da je 328 neupotrebljiv u nekim realnim aplikacijama, samo mislim da je od skoro postalo bacanje para na bilo sta sto nije arduino nano (kineski ofc) u poredjenju sa esp32 plocicama. Sve vise i vise mi je neophodno da 328ici dodam nesto sto esp32 vec ima, ili plocice imaju. Prvi put kad je trebalo da napravim sa arduinom nesto sto je islo na daljinski je ukljucivalo 2 328ice i 433mhz transmiter + risiver. Pre par godina super opcija, danas posle IoT-a, wifija, bta, nikako. 328 mi ostaje sasvim solidna stvar za neke autonomne stvari koje su danas sve redje i redje.

http://ww1.microchip.com/downl...llers-ATmega328P_Datasheet.pdf

Evo kompletnog DSa za UNO na 300 strana. Obrati paznju na sekciju 19, i 19.9.



[Ovu poruku je menjao Zlatni_bg dana 25.11.2019. u 00:38 GMT+1]
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?25.11.2019. u 10:37 - pre 7 meseci
Citat:
bogdan.kecman:
328 jeste patetican ali ako se dobro secam i on ima dma


Ta mukica nema DMA, u to vreme je DMA bio ekskluzivna funkcionalnost, seti se 8080, uz njega je isao 8257 poseban DMA kontroler IC, ni originalno 8051/52 jezgro nije imalo DMA, tek dosta kasnije su se u nekim jezgrima pojavile "skromne" varijenate DMA kontolera, kao npr ovaj:
https://www.onsemi.com/pub/Collateral/AX8052F143-D.PDF

ATmega328A i drugari iz te serije zvanicno nemaju DMA
https://ww1.microchip.com/down...8A-PA-328-P-DS-DS40002061A.pdf
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4444
82.117.201.*



+921 Profil

icon Re: Brzina serial.read?25.11.2019. u 12:03 - pre 7 meseci
Ne mora da se smara interaptima dovoljno je da podigne jedan thread koji ce da cita. Naravno to ako je multitasking OS na njemu.

press any key to continue or any other to quit....
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?25.11.2019. u 15:45 - pre 7 meseci
Na 8bitnim kontrolerima se najcesce radi preko interapta, nema "OS", ima samo gomila dogadjaja koji trebaju da se "hendluju" najcesce samo preko jedne ISR rutine, nema interupt vektor tablice i odatle poticu svi limiti tog jezgra.
Kod ARM ima lepo tablica vektora (adresa) koja pocinje od nula koja je RESET, pa ide redom, interap od-ovoga, onoga, tajmer, spi, uart, i to pokriva sav implementirani hardver, 32bit adresa, posebno mapirano u adresnom prostoru, imaju i bitovi posebno mapirani na svojim adresama, toooo je nesto drugo ....
STM32 ima NVC (Nested Vector Controler) koji to radi raspodelu IRQ-ova i prioriteta, potpuno je predvidljiv, zna se koliko sta "kosta" u clock-ovima i to je da kazemo softwersko-hardwerski multritreding na jednom core-u.
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4444
109.72.51.*



+921 Profil

icon Re: Brzina serial.read?25.11.2019. u 15:51 - pre 7 meseci
Ovo je taj 8bitni? tough luck.
press any key to continue or any other to quit....
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?25.11.2019. u 16:35 - pre 7 meseci
Steta sto se nisu setili da naprave duplo ili 4x 8bitno jezgro na 100MHz, sta bi mu falilo, to bi radilo sjajno, u 16-20nm tehnologiji, hehe u FPGA da se smesti ... :)

Ubedjen sam da to negde-neko sigurno koristi, samo ne znam zasta :)

Ili QuadCore Z80 na 100MHz, ma idi, to je zlo, ja znam sta je jedan na 4MHz mogao sve da uradi ...
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

Branimir Maksimovic
Senior Software Engineer

Član broj: 64947
Poruke: 4444
109.72.51.*



+921 Profil

icon Re: Brzina serial.read?25.11.2019. u 17:17 - pre 7 meseci
"ja znam sta je jedan na 4MHz mogao sve da uradi ..."

:)
Da ispisuje po ekranu dok se program ucitava sa kasete :P

press any key to continue or any other to quit....
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?25.11.2019. u 20:24 - pre 7 meseci
Citat:
Branimir Maksimovic: "ja znam sta je jedan na 4MHz mogao sve da uradi ..."

:)
Da ispisuje po ekranu dok se program ucitava sa kasete :P


Veruj mi da sam se setio PICK & POKE na Spectrumu, i rekoh zebi sto je to dobra fora bila tada, sto ne i sad, i napravim PICK & POKE za STM32 sa 32bitnim adresama, radi, ceo memooriski prostor mogu da citam i pisem ... Preko seriskog terminala unosim adresu i podatak i teraj, ako znas gde i sta treba da sa se upise ti ga upisi direktno u kontroler, isto kao sto je radilo na ZX Spectrum :)
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

Zlatni_bg
Nikola S
Beograd

Član broj: 65708
Poruke: 4099
*.gprswap.mts.telekom.rs.



+455 Profil

icon Re: Brzina serial.read?25.11.2019. u 22:14 - pre 7 meseci
Ma ljudi, pogledajte za softverski SPI, to resava problem. Datasheet.
THE ONLY EASY DAY WAS YESTERDAY
 
Odgovor na temu

flighter_022
NS

Član broj: 18499
Poruke: 691
*.dynamic.sbb.rs.

ICQ: 23089150


+225 Profil

icon Re: Brzina serial.read?25.11.2019. u 23:50 - pre 7 meseci
Citat:
mikikg:
Veruj mi da sam se setio PICK & POKE na Spectrumu




PEEK & POKE :)

Omatorilo se, hehehe.
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 4946
*.dynamic.sbb.rs.

Sajt: yu3ma.net


+476 Profil

icon Re: Brzina serial.read?26.11.2019. u 00:12 - pre 7 meseci
jao jeste, PEEK i POKE ... mnogo davno bilo ...
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Brzina serial.read?

Strane: 1 2

[ Pregleda: 1270 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.