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



Teraz jest 10 lis 2024, o 00:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 23 sty 2012, o 08:03 
Offline
Użytkownik

Dołączył(a): 23 sty 2012
Posty: 27
Pomógł: 0

zaczynam zabawę z C i AVR, stworzyłem na razie prosty program, ostatnio dodałem prosty podprogram, który załącza buzzer na określony czas(ms), jak niżej:

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


jeżeli zamiast t_buzzer wstawiam na sztywno np. 30(czyli 30ms) to kod po kompilacji = ~6,4kB, jeżeli używam zmiennej t_buzzer do przekazania wartości to kod po kompilacji wynosi 10kB(dodatkowo znacznie wzrasta uzycie pamięci RAM ok. 250B), nie mogę dojść skąd ta różnica bo na pewno nie jest to prawidłowe !



Ostatnio edytowano 23 sty 2012, o 09:26 przez sirk77, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sty 2012, o 08:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 449
Pomógł: 4

Gdzieś było o tym na forum. Nie można wstawiać jako argumentu do instrukcji _delay_ms zmiennej, tylko właśnie trzeba na sztywno określać wartość opóźnienia.
Poza tym kolega nie używa narzędzia do wstawiania kodu na forum, a to znacznie poprawia czytelność zamieszczanych kodów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sty 2012, o 09:27 
Offline
Użytkownik

Dołączył(a): 23 sty 2012
Posty: 27
Pomógł: 0

ok dzięki za info, czyli rozwiązaniem jest poniższy kod:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sty 2012, o 10:49 
Offline
Moderator
Avatar użytkownika

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

Wyjaśnienia tego zjawiska to dokładnie opisałem w książce przede wszystkim, stąd pytanie czy kolega akurat posiada tę książkę i przypadkiem nie doczytał ? ;)

na wszelki wypadek podpowiadam, że lepiej zrobić sobie oddzielną własną funkcję np:

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


ale oczywiście taki sposób jaki wymyśliłeś też jest dobry.

_________________
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: 23 sty 2012, o 12:08 
Offline
Użytkownik

Dołączył(a): 23 sty 2012
Posty: 27
Pomógł: 0

tak, książkę mam, czytam i implementuję w praktyce ;) wynika z tego, że jeszcze nie doczytałem
dzięki za podpowiedzi i za prostszą skłądnię 8-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sty 2012, o 17:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 449
Pomógł: 4

Ciekawe rozwiązanie, ale musisz pamiętać, że o ile dobrze rozumiem pętla ta odliczy tylko 256 ms (uint8_t). Więc jeśli pętla miałaby odliczyć dłuższy okres czasu, to trzeba zmienić wielkość zmiennej i, np. na taką, jak u Mirka - uint16_t.



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

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

bardzo dobre myślenie - tu się zgadzam z kolegą worner (uint8_t) może się okazać za mały.
ale czytając wcześniej temat skłoniło mnie to do małej refleksji na temat delay-a, co opisałem w innym temacie
niestety, ale biblioteki tej funkcji są często dosyć opasłe i jej nadużywanie lub niewłaściwe używanie prowadzi
do wielu kłopotów z niemieszczeniem się kodu w pamięci procka włącznie. Dlatego warto zastępować ją własnymi procedurami i funkcjami.

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



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 5 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO