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



Teraz jest 28 mar 2024, o 23:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 21 kwi 2019, o 15:30 
Offline
Nowy

Dołączył(a): 15 lip 2016
Posty: 6
Pomógł: 0

Witam,

Od dłuższego czasu nie mogę sobie poradzić z pewnym problemem, mianowicie:

Mam zbudowaną transmisję w oparciu o Rs485, zarządzaniem sieci zajmuję się PC który to dokładnie co 1s odpytuje procesor po czym oczekuje na jego odpowiedz, i wszytko byłoby ok gdyby nie to że podczas wysyłania zapytania procesor potrafi się zresetować, występuję to niezależnie, raz na jakiś czas, lub od razu po pierwszym wysłaniu zapytania przez PC. Zauważyłem że jeżeli PC zacznie wysyłać częściej zapytania to procesor zaczyna się szybciej resetować, lub i tutaj dziwna sprawa procesor wpada w dziwny stan i przez port w ciągu wysyła wszystkie (dosłownie wszystkie) informacje zawarte na wyświetlaczu LCD.

-Procesor to Atmega 644
-Używane biblioteki
*LCD---> Pana Mirka
*MK_USART---> Pana Mirka
-Winę aplikacji na PC wykluczamy sprawdzane przez PuTTY objaw ten sam
-Testowane różne prędkości oraz różne rozmiary buforów, bez zmian
-Schemat części Rs strony procesora Obrazek
-Stroną PC zajmuję się ATB-USB-RS232
-Wybrane fragmenty kodów
*
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

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


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


Z góry dziękuję wszystkim za pomoc i życzę Wesołych Świąt !



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2019, o 18:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 485
Lokalizacja: Siedlce
Pomógł: 9

Czy na prototypach działa wszystko w porządku a w miejscu pracy są problemy?
Podejrzewam że coś ci się w kabelku jakaś "szpilka indukuje" czy kabelki leżą w pobliżu innych kabli?

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2019, o 19:33 
Offline
Nowy

Dołączył(a): 15 lip 2016
Posty: 6
Pomógł: 0

Co do wielkości buforów to testowane były od najmniejszych do wręcz ogromnych niestety zero poprawy :/

Natomiast co do elektroniki, to hmm mało prawdopodobne ponieważ płytkę stosuję któryś raz i pierwszy raz mam taki problem. Ale muszę dodać że jest to pierwszy projekt gdzie procesor komunikuję się z PC wcześniejsze były procesor do procesora i wszytko śmigało na moich płytkach...

Z własnej obserwacji wydaję mi się że jest to błąd kodu.. ale już nie mam pomysłu, widać jakby bufory się przepełniały albo coś się nadpisywało ponieważ wraz z częstym wysyłaniem po rs485 z PC na procka jedna wartość wyświetlana na LCD zaczyna wariować... gdzie ta wartość nie ma żadnego powiązania z rs .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2019, o 20:32 
Offline
Moderator
Avatar użytkownika

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

No zdecydowanie coś źle robisz - czyli babol w kodzie - ale ciężko coś podpowiedzieć - nie widząc co dokładnie robisz w tym swoim kodzie

_________________
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: 22 kwi 2019, o 09:59 
Offline
Nowy

Dołączył(a): 15 lip 2016
Posty: 6
Pomógł: 0

Wiec tak, po uprzednim opierdzieleniu przez Pana Mirka wywaliłem z kodu praktycznie wszytko, zostawiłem tylko prosty licznik w celu sprawdzenia czy się procesor nie wiesza oraz obsługę odbierania danych przez Rs i odpowiadania.

Głównym celem programu jest odesłanie wybranej wartości tablicy RS485[40] --------> PC wysyła zapytanie "PolWib =1,1" procesor odpowiada wysyłając Polwib =1,RS485[1].

Po odciążeniu procesora nic się nie zmieniło, jeśli ustawię żeby to procesor wysyłał jakiś ciąg znaków na PC wszytko przebiega bez najmniejszych problemów, gdy natomiast PC zacznie odpytywać następują randomowe resetowania procesora.


Główny:

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



Ustawienia w bibliotece MK_USART:

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


Komendy AT:

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



Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć 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: 22 kwi 2019, o 11:44 
Offline
Użytkownik

Dołączył(a): 27 cze 2018
Posty: 116
Pomógł: 6

patrykt30 napisał(a):
z częstym wysyłaniem po rs485 z PC na procka jedna wartość wyświetlana na LCD zaczyna wariować... gdzie ta wartość nie ma żadnego powiązania z rs .


Tu coś czuć jakby brakowało pamięci i/lub rozpasany stos.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2019, o 14:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

Miałem kiedyś podobny problem przy połączeniu z PC. Program z PC wykonywał detekcję twarzy poprzez kamerkę, zliczał osoby i ilość osób przesyłał do atmegi gdzie ich wartość była sumowana. No i frustracja - ilość osób jest przesyłana a licznik sumy wszystkich osób jest ciągle zero. Zajęło to dłuższą chwilę za nim zrozumiałem, że z jakiegoś powodu nowe dane resetują mi mikrokontroler.
Problem rozwiązałem wtedy połowicznie - po odebraniu liczby z PC zapisywałem ją od razu do pamięci eeprom i potem gdy przychodziła nowa zostawała dodawana do tej zapisywanej i nadpisywała tą zapisaną. Kod był dość krótki, co powodowało takie zachowanie, nie znalazłem odpowiedzi.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2019, o 18:13 
Offline
Użytkownik

Dołączył(a): 05 wrz 2017
Posty: 169
Pomógł: 31

Nie wiem czy przy BDR 9600 to będzie miało tak duże znaczenie ale przyjmując, że korzystasz z przewodu do RS485 o impedancji 120R, Twój terminator jest wyznaczony niepoprawnie, aktualnie masz terminator równy 107R. Proponuje coś w okolicy R12 = 130R, R13=R14 = 680R lub 720R, co da odpowiednio 118,6R i 119,2R.
Druga sprawa to połączenie potencjałów odniesienia, nie wiem jak to połączyłeś ale sprawdź czy Twój układ będzie działał z drugim takim samym układem "udającym PC" jeśli tak, to znaczy że masz namieszane w przewodach itp, jeśli nie to babol jest w kodzie tak jak poprzednicy sugerowali.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO