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



Teraz jest 20 kwi 2024, o 03:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 sty 2019, o 13:17 
Offline
Użytkownik

Dołączył(a): 02 maja 2013
Posty: 111
Pomógł: 0

Witam wszystkich forumowiczów :)
Piszę z jednym pytaniem. Otóż piszę program dla pewnego urządzenia. Na pokładzie jest ATmega88P. Urządzenie to komunikuje się ze światem zewnętrznym po RS485. W różnych okolicznościach przesyła różne komunikaty, (8-9 znaków), nie mniej jednak generalnie jest tego trochę. Po napisaniu programu i skompilowaniu (zajętość pamięci FLASH - 30%, pamięci RAM - 50%) urządzenie non stop samoczynnie się resetowało. Po próbie uszczuplenia wszystkich transmitowanych napisów zajętość pamięci RAM spadła do 30 % a całe urządzenie działa poprawnie, nic się nie resetuje. Zależałoby mi jednak na transmisji pełnych komunikatów. W związku z tym mam pytanie - w jaki sposób powinno się umieścić moje komunikaty w pamięci FLASH mikrokontrolera (najlepszą opcją byłoby utworzenie jakiejś tablicy napisów, lub czegoś podobnego, gdyż mogę pogrupować te komunikaty w jakieś tablice), oraz później wydobywać te komunikaty i wkładać je do funkcji uart_puts()?

Będę wdzięczny za jakąkolwiek pomoc, gdyż chwilę z tym walczyłem, a i tak każda próba kończyła się błędami kompilacji :/

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2019, o 13:40 
Offline
Moderator
Avatar użytkownika

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

Polecam częściej czytać mojego bloga - znajdziesz tam mnóstwo informacji w tym odpowiedź na swoje pytanie

http://mirekk36.blogspot.com/2013/11/ta ... ogmem.html

_________________
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: 25 sty 2019, o 14:37 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

Tak na szybko
Nie możesz użyć funkcji uart_puts()
z tego względu że wkładasz do tej funkcji string z pamięci RAM.
Trzeba użyć uart_puts_P()
Ten program pobiera stringi z pamięci FLASH.
Nie napisałeś jakie masz biblioteki Mirka
Łatwiej można było nakierować co i jak.
Oczywiście ten link do poradnika jest fajny, ale na początek warto by choć jeden napis puścić na UART z pamięci FLASH.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2019, o 13:32 
Offline
Użytkownik

Dołączył(a): 02 maja 2013
Posty: 111
Pomógł: 0

Akurat w tym układzie mam bibliotekę z GreenBooka. Generalnie odpowiedź Pana Mirka była bardzo przydatna, a funkcję uart_puts_P() już sobie napisałem, więc wszystko zaczęło ładnie chodzić, za co bardzo serdecznie dziękuję :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 14 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