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



Teraz jest 25 cze 2026, o 14:05


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 27 lis 2016, o 21:45 
Offline
Użytkownik

Dołączył(a): 07 lut 2015
Posty: 157
Pomógł: 2

Problem następujący:
Wysyłam GSM-ową komendę: ATD*101#; na którą powinienem otrzymać odpowiedź:
CUSD: 0, "Pozostalo Ci 4,19zl do wykorzystania ..... o ilości znaków poniżej 255.

Biblioteka USART Mirkowa, bufor ustawiony mam na 256.

Do tej pory wszystko działało, ale w tej chwili wysyłają w odpowiedzi na stan konta prawdopodobnie powyżej 255 znaków.
Objaw jest taki, że w efekcie resetuje mi się Atmega (poprzez wdt).

Jak ustawię bufor na 512 (na czas prób), to działa.
Ale:
1. Mam w tej chwili wykorzystanego 97% RAM-u, gdy ustawię bufor na 512 to mam 108% RAM-u.
2. Przede wszystkim denerwuje mnie to, że nie rozumiem co może blokować? Nawet jakby ogon zjadał głowę, to co? Chyba, że to akurat by był znak 13?

Czy ktoś ma jakiś pomysł na rozwiązanie tej zagadki?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2016, o 23:28 
Offline
Użytkownik

Dołączył(a): 07 lut 2015
Posty: 157
Pomógł: 2

PS. Zauważyłem, że nie można było ustawić bufora na 512 przy korzystaniu później z indeksów o wielkości uint8_t,

ale nie zmienia to faktu, że jak pisałem wyżej, bufor odbiorczy o dziwo działał.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 22:04 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Przy takiej zajętości RAMU, stos prawdopodobnie zjada Ci dane (lub odwrotnie) i program idzie w "maliny".
Zoptymalizuj zużycie RAM-u a program prawdopodobnie zacznie działać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 20:05 
Offline
Użytkownik

Dołączył(a): 07 lut 2015
Posty: 157
Pomógł: 2

Problem rozwiązałem, a ten przypadek zaliczyłbym do klasycznych baboli jakie robi się przy tablicach czy wskaźnikach.

I babol ten nie ujawnia się często od razu, ale w pewnych sytuacjach, jak to było u mnie.

Proszę wyobrazić sobie bufor cykliczny UART rozmiar 256 i uart_buf do którego przepisuję, rozmiar 32 i co się dzieje jak z większego przepisuję do mniejszego?
Masakra i resetowanie się procka. Przed czymś takim łobuz "C" nie da po łapach i "programista" czy programista musi sam na to uważać.
To jedno.
Drugie, że nie przewidziałem, że przyjdzie do bufora cyklicznego tekst większy niż 256 znaków.



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