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



Teraz jest 28 mar 2024, o 23:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 20 wrz 2017, o 11:29 
Offline
Nowy

Dołączył(a): 23 mar 2013
Posty: 11
Pomógł: 0

Witam serdecznie.

Pracuję na mikrokontrolerze ATmega64 i ładuje wsady przez bootloader. Wsad bootloadera generowany z "plików wzorcowych". Prędkość to 115200 bodów transmitowane przez USB i przejściówke na FT232.
Urządzenie docelowo ma pracować w sieci opartej o RS485

postanowiłem więc od nowa wygenerować bootloader do pracy w sieci. Natknąłem się na wątek:
http://forum.atnel.pl/topic2168.html?hilit=mkbootloader%20485
gdzie bardzo fajnie została opisana zmiana bootloadera. Ustawiłem więc wszystko tak jak w artykuje:

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


Plik makefile ustawiony tak:

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


BLS start ustawiony tak jak w "plikach wzorcowych" czyli 0xFE00
Wszystko się bardzo dobrze kompiliuje i wgrywa do procka. Fusebity ustawione tak:
ObrazekObrazek

Jednak podczas próby wgrania programu przez RS485 występuje błąd.
Obrazek

Procesor odzywa się i wysyła wszystkie dane na temat bootloadera, jednak w momencie kiedy program wysyła dane, procek spóźnia się z odesłaniem potwierdzenia "@" albo wysyła go w momencie kiedy wysyłane są dane z komputera (dwie wysokie szpilki na drugim screenie).
ObrazekObrazek


Myślałem, że źle ustawiłem parametry bootloadera, i za drugim razem ustawiłem BLS_START tak jak na stronie:
http://atnel.pl/mkbootloader.html
czyli: 0x7E00 *2 = 0xFC00, Ustawiłem więc nowy BLS lecz problem dalej pozostał ten sam.

Nie wiem czy jest to problem z przejściówką (opartą o FT232 i MAX485) czy programu ale skoro odczyt parametrów odbywa się poprawnie to nie wiem dlaczego transmisja już nie.
Jakieś podpowiedzi co ustawione jest źle?

Błagam, męczę się z tym już kilka dni a deadline goni :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 12:46 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Na RS232 wszystko jest ok? Jak tak to może źle sterujesz kierunkiem przepływu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 14:25 
Offline
Nowy

Dołączył(a): 23 mar 2013
Posty: 11
Pomógł: 0

Właśnie na RS232 wszystko działa jak należy. Co ciekawe gdy wygeneruje z czystych plików bootloader to program działa i wszystko się ładuje poprawnie, nawet gdy wprowadzę zmiany dla rs485 a wyślę program przez rs232 to poprawnie wchodzi.

Ciekawi mnie fakt dlaczego BLS_Start jest inny względem obliczeń a inny względem opisu w programie:
Obrazek

w stosunku do obliczeń ze strony: 0x7E00 *2 = 0xFC00

W sumie nawet na stronie z obliczeniami są błędy. Sam już nic nie wiem
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 15:42 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

W bootloader kreatorze kieruj się wybranym prockiem i podpowiedzią z boku rozwijanej listy adresów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 20:28 
Offline
Nowy

Dołączył(a): 23 mar 2013
Posty: 11
Pomógł: 0

Zrobiłem próby z generowaniem plików z kreatora i z własnych plików. Oba bootloadery działają lecz nie działa tryb RS485.
Mam wrażenie, że program przygotowany jest do pracy Full-duplex co odcina pracę w sieci RS485. Na załączonym screenie procesor odpowiada lecz program nawet nie przewidział dla niego okna czasowego na odpowiedź, przez co dostajemy odpowiedź w programie "time out".

Panie Mirku, poradzi Pan coś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 21:02 
Offline
Moderator
Avatar użytkownika

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

Ja jestem do końca tygodnia tutaj:

http://delphi.pl/zlot/

czytam sobie jednak wątek i się dziwię, skąd koledze przyszło do głowy, że MkBootloader działa natywnie z RS485? Czy ja gdzieś o tym pisałem? Mówiłem?

nigdzie teggo nie mówiłem ani nie pisałem

Trzeba sobie zatem samemu przerobić kod BLS we wasnym zakresie do komunikacji we własnej sieci RS485 i wcale nie musi być żaden ful duplex ... toż wystarczy prawidłowo strować kierunkiem przepływu - czego pewnie nie robisz w ogóle albo źle robisz. Trzeba sobie nadawać adresu urządzeń i jakoś je adresować - no chyba że chodzi ci o połączenie 1:1 po RS485 to wtedy najmniejszy problem

wielu ludzi zrobiło sobie komunikację po RS485 - ja nie bo nie miałem jak na raze takiej potrzeby a przecież kod BLS do procka masz otwarty w programie

więc zacznij od jego przeróbki i prawidłowego sterowania linią kierunku przepływu scalaka MAX485 - to podstawa

_________________
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: 20 wrz 2017, o 21:16 
Offline
Użytkownik

Dołączył(a): 23 cze 2014
Posty: 54
Pomógł: 0

Ooo to może wrócą wtorki z Delphi ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 22:48 
Offline
Nowy

Dołączył(a): 23 mar 2013
Posty: 11
Pomógł: 0

mirekk36 napisał(a):
Trzeba sobie zatem samemu przerobić kod BLS we wasnym zakresie do komunikacji we własnej sieci RS485 i wcale nie musi być żaden ful duplex ... toż wystarczy prawidłowo strować kierunkiem przepływu - czego pewnie nie robisz w ogóle albo źle robisz. Trzeba sobie nadawać adresu urządzeń i jakoś je adresować - no chyba że chodzi ci o połączenie 1:1 po RS485 to wtedy najmniejszy problem


Tak, chodzi o połączenie 1:1. Sterowanie przepływem na pewno działa prawidłowo gdyż urządzenie już pracuje w sieci i komunikuje się z innymi, Z reszta na jednym z oscylogramów widać, że do transmisji od strony PC próbuje wbić się procesor, przez to poziom sygnału jest podniesiony i zaburzony.

Co do full-duplexu chodziło mi o to, że w trybie rs232 jest możliwa wymiana full-duplex i w tej konfiguracji wszystko pasuje lecz w sieci RS485 już mamy tylko half-duplex więc program musiałby niejako wystawić slot czasowy i poczekać na odpowiedź procesora po każdej stronie wysłanego kodu, czyż nie?

Nie wiem tylko do końca jak działa protokół wymiany danych programu z bootloaderem. Gdyby ktoś nakierował mnie na to to rozwiązałbym problem sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2017, o 23:15 
Offline
Moderator
Avatar użytkownika

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

robosom napisał(a):
Co do full-duplexu chodziło mi o to, że w trybie rs232 jest możliwa wymiana full-duplex i w tej konfiguracji wszystko pasuje lecz w sieci RS485 już mamy tylko half-duplex więc program musiałby niejako wystawić slot czasowy i poczekać na odpowiedź procesora po każdej stronie wysłanego kodu, czyż nie?


odpowiem tak: czyż nie

a kolega wie co to jest MAX485 i sterowanie linią kierunku przepływu danych?

_________________
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: 21 wrz 2017, o 00:21 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

Podpowiem - w bootloaderze musisz dodać odpowiednie sterowanie kierunkiem przepływu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2017, o 10:24 
Offline
Nowy

Dołączył(a): 23 mar 2013
Posty: 11
Pomógł: 0

Przecież dodałem, co z resztą widać na załączonym kodzie bootloadera:

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


Sterowanie przepływem odbywa się prawidłowo, sprawdzone oscyloskopem. Dodatkowo sygnały zmierzone na kablu RS485 pokazują komunikację w dwie strony.

Przejściówka po stronie komputera też działa, gdyż na komputerze mam uruchomiony docklight do symulacji urządzeń slave kiedy pracuję w sieci (oczywiście kiedy programuję to odłączam wszystkie pozostałe układy i wyłączam docklight'a).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2017, o 22:55 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
Sterowanie przepływem odbywa się prawidłowo, sprawdzone oscyloskopem.

No to nie ma o czym rozmawiać skoro prawidłowo ;).... czyli wszystko działa - gratulacje

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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