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



Teraz jest 30 lis 2024, o 20:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 14 lut 2016, o 11:16 
Offline
Nowy

Dołączył(a): 13 kwi 2015
Posty: 8
Pomógł: 0

Witam Was , możecie mi podpowiedzieć, co się dzieje ?
Mam prosty programik na attiny13 w którym chcę generować falę o zmiennej częstotliwości.
Wykombinowałem sobie prostą funkcję która ma to robić.

Zagadka:

- Jak wpisać wartość bezpośrednią do funkcji _delay_us (...) - wszystko gra.

- Jak wcześniej utworzyć zmienną np. 8 bit i ją tam podstawiać - kompilator owszem kompiluje , ale wywala 412% objętości pamięci kontrolera ( :shock: )

Zobaczcie jak to się odbywa - niby nic szczególnego:

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


Możecie podpowiedzieć dlaczego następuje tak skokowy , jakiś dziwny wzrost objętości kodu ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lut 2016, o 11:20 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

Do funkcji _delay_ms() nigdy nie przekazujemy zmiennej tylko stało jak chcesz przekazywać zmienną to możesz zrobić sobie taką funkcję:

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

W twoim przypadku zmienną time możesz zamienić na uint8_t :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lut 2016, o 11:24 
Offline
Nowy

Dołączył(a): 13 kwi 2015
Posty: 8
Pomógł: 0

Dzięki, tego nie nie wiedziałem, zaraz sprawdzę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lut 2016, o 12:25 
Offline
Moderator
Avatar użytkownika

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

protech.bielsko napisał(a):
Możecie podpowiedzieć dlaczego następuje tak skokowy , jakiś dziwny wzrost objętości kodu ?

Ani nie jest skokowy, ani szokujący ani nie powoduje dziwnego wzrostu kodu. Jest to normalne, opisane nie tylko w dokumentacji ale i setkach jak nie tysiącach postów na różnych forach ... owszem szokujące dla początkującego który tego nie doczyta ...

Podsumowując jak masz sprawdzić to sprawdź w dokumentacji AVR GCC, zaś kolega wyżej pokazał bardzo słuszny sposób realizacji takiego zadania - można nawet ciut krócej to zapisać:

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

_________________
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: 14 lut 2016, o 21:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

Jako początkujący też kiedyś musiałem zapłacić "frycowe" :D

http://forum.atnel.pl/topic8926.html

Gdzieś w którymś kościele dzwonili, że podając zmienną do tej funkcji traktowana jest ona jako float, a tego bardzo ośmiobitowe avr'ki nie lubią....
Nie sprawdzałem tej opinii - przyjąłem jako pewnik (nie wiem, czy czasem Mirek na blogu o tym nie mówił/pisał)

_________________
Mr. Nobody



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: 5 ] 

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