Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 lis 2025, o 07:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
 Tytuł: Czas przerwania
PostNapisane: 2 sty 2017, o 13:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

cześć

Panowie siedzę sobie nad matrycą z YB no i wiadomo, że chodzi nam o jak najszybszą procedurę przerwania
i teraz wysyłamy 4 bajty po kolei
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


a gdyby w to miejsce dać pętlę?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jak to będzie czasowo? pewnie dłużej bo dochodzi sprawdzenie "i" i inkrementacja ale pytam dlatego, że moja matryca jest trochę większa tzn. 96x8 więc muszę wysłać 12 bajtów i zwyczajnie nie chce mi się klepać 12 linijek.
Wiem - powiecie, że to się robi raz i załatwione ale z czystej ciekawości....
I nie odsyłajcie mnie proszę do pliku .lss bo ja tego na razie nie łykam :oops:

_________________
Pomóżcie mi stanąć na nogi



Ostatnio edytowano 2 sty 2017, o 17:30 przez mczarny, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 13:35 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Ja to jestem lejek tak jak i Ty, ale to chyba nie jedyne problemy dlaczego pętla będzie czasowo dłuższa.
Dochodzi jeszcze kwestia skoków na początek pętli, a to też zabierze czas.
Chociaż to tylko gdybanie bo prawdziwa odpowiedź faktycznie tkwi w pliczku "sam wiesz którym" ;-)
Na dodatek za każdym razem może to być inna odpowiedź, bo kompilator, bo optymalizacja...

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 13:57 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mczarny napisał(a):
jak to będzie czasowo? pewnie dłużej bo dochodzi sprawdzenie "i" i inkrementacja

No to sam sobie odpowiedziałeś.

Mogę jednak podpowiedzieć, że ustawiając poziom optymalizacji na -O3 zamiast zwykle używanego -Os, istnieje duże prawdopodobieństwo, iż kompilator sam "rozwinie" pętlę, a może nawet zmieni funkcje na "inline" (co dodatkowo przyspieszy wykonanie kodu). Trzeba się jednak liczyć z tym, że w takiej sytuacji wzrośnie zajętość FLASH.

mczarny napisał(a):
Wiem - powiecie, że to się robi raz i załatwione ale z czystej ciekawości....
I nie odsyłajcie mnie proszę do pliku .lss bo ja tego na razie nie łykam

Nie trzeba znać asemblera. Używając symulatora Atmel Studio można w prosty sposób porównać czasy wykonania procedury obsługi przerwania przy wykorzystaniu różnych opcji, więc jeśli jesteś bardzo ciekawy, to do dzieła...
Chyba, że Atmel Studio też "nie łykasz" ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 15:34 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27444
Lokalizacja: Szczecin
Pomógł: 1045

Ja bardzo uprzejmie proszę - aby już z tematu wątku wynikało COKOLWIEK jeśli chodzi o ten wątek - a nie zakładać wątki na zasadzie:

"pytanie"

"pytanie laika"

"pomóżcie"

Pomyśl sam proszę czy miło byłoby tobie przeglądać jakiekolwiek forum, gdybyś na nie zajrzał i zobaczył SAME tego typu wątki ?


------------------------ [ Dodano po: 4 minutach ]

mczarny napisał(a):
I nie odsyłajcie mnie proszę do pliku .lss bo ja tego na razie nie łykam

Ja ciebie do asemblera nie będę odsyłał bo w YB nie tylko to opisałem ale na dodatek zdaje się, że pokazuję na rysunkach (Zrzuty ekranu) z tymi fragmentami z pliku *.lss a na dodatek pokazuję przebieg na OSCYLU ile zajmuje czasu takie przerwanie .... więc hmmm czy można już dokładniej coś takiego pokazać ? Wystarczy sięgnąć do YB

A poza tym wiele razy piszę czy mówię w poradnikach, że NAWET nie trzeba znać asemblera żeby zaglądać do pliku *.lss bo podpowiadałem jak się w nim poruszać w takiej sytuacji i na co zwrócić uwagę, jak policzyć chociaż z grubsza czasy - jak mówię nawet gdy się kompletnie nie umie jeszcze asemblera ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 17:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

mirekk36 napisał(a):

Ja ciebie do asemblera nie będę odsyłał bo w YB nie tylko to opisałem ale na dodatek zdaje się, że pokazuję na rysunkach (Zrzuty ekranu) z tymi fragmentami z pliku *.lss a na dodatek pokazuję przebieg na OSCYLU ile zajmuje czasu takie przerwanie .... więc hmmm czy można już dokładniej coś takiego pokazać ? Wystarczy sięgnąć do YB



Tytuł wątku poprawiony.
Pytanie pojawiło się dlatego, że moja procedura obsługi przerwania jest zupełnie inna niż w książce.
Wiersze są sterowane nie przez rejestr tylko bezpośrednio z pinów procesora a dodatkowo z pewnych względów z dwóch różnych portów więc ja i tak nie osiągnę czasu 8us.
Poza tym w książce nie widziałem zastosowania pętli do wysyłania bajtów-dlatego pytałem.

No nic to - ściągnąłem sobie tabelkę z instrukcjami i taktami zegara w asemblerze i popatrzę......

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 17:55 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27444
Lokalizacja: Szczecin
Pomógł: 1045

ale przecież ja nie mam nic przeciwko temu że pytanie się pojawiło ;) po to jest forum - chodziło tylko o to aby z tytułu wątku cokolwiek wynikało - no i teraz wynika ... ;)

mczarny napisał(a):
Wiersze są sterowane nie przez rejestr tylko bezpośrednio z pinów procesora a dodatkowo z pewnych względów z dwóch różnych portów więc ja i tak nie osiągnę czasu 8us.

No ale czy ty masz jakiś problem ze swoim czasem ?

Pewnie, że będzie on różny dla różnych technik sterowania takich wyświetlaczy. No nie może być inaczej ;) co nie oznacza, że przy korzystaniu bezpośrednio z pinów procka nie da rady zrobić czegoś szybciej albo wolniej - żeby tu o czymś mówić to trzeba by było zobaczyć jak ty w ogóle podszedłeś do tej operacji ... i wcale nie oznacza to, że użycie pętli może być hmm niewskazane - bo czemu nie - jeśli ci się to wszystko wyrabia?

Ja szedłem na MEGA optymalizację czasową z uwagi na fakt, że chciałem i zrealizowałem przecież na końcu podwójne buforowanie - a do tego jak widać trza się sprężać ... Myślę, że przy innych metodach sterowania - ty masz jak wynika z twojego opisu sterowanie w pewnym zakresie "równoległe" to powinno też dać spore oszczędności czasowe przy dobrym zagospodarowaniu kodem źródłowym

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 18:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

No do podwójnego bufora jeszcze nie doszedłem ale mam zamiar się z tym zmierzyć nie dlatego, że będę z tego korzystał teraz ale chcę wiedzieć jak do tego podejść - na pewno kiedyś się przyda.

Moje przerwanie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i definicje pinów
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jak widać wachlowanie tablicami w przerwaniu nie jest najszczęśliwsze ale do tej pory jakoś to wszystko się ładnie wyrabia
co nawet prezentowałem na forum w DIY

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO