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



Teraz jest 10 mar 2025, o 23:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 22 sty 2013, o 11:30 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

Witam!

Mam malutkie pytanie, jak przerobić mkbootloader aby był w stanie współpracować z RS485 w half-duplex. Po RS232 wszystko działa bez zarzutu, po rs485 widać znaki zapytania w terminalu natomiast nie reaguje na "U" i "I". Pin do zmiany kierunku transmisji do PD2 (INT0) w Atmega8. Chodzi mi o kawałek kodu, który wysłałby zachętę np:"???" a potem przełączył się na odbiór. Jeżeli chodzi o język C to dopiero zaczynam się uczyć....

pozdrawiam
BS



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2013, o 12:11 
Offline
Moderator
Avatar użytkownika

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

Ale tobie chodzi o połączenie RS485 tak 1:1 , czy żeby działał w sieci gdzie jest wiele układów SLAVE ?

_________________
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 sty 2013, o 12:33 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

W sieci RS485 byłoby przeidealnie, ale na razie wystarczy również 1:1. Mam 32 moduły w których musiałem się dolutowywać kynarkiem przed SN75176 aby móc wrzucić wsad (nie projektowałem złącza ISP w płytce). Docelowo będą one schowane w puszkach podtynkowych więc będzie utrudniony dostęp aby zrobić aktualizację firmware.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2013, o 13:17 
Offline
Moderator
Avatar użytkownika

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

1:1 powinno spokojnie działać - sterowanie linią kierunku dla MAX485 masz przecież w przykładach w książce niebieskiej.

A jeśli chodzi o sieć z wieloma układami Slave to trzeba byłoby przerabiać już aplikację na PC. Mam to w planach i jest na liście rozwojowej programu ale niestety ma niski priorytet :(

Za to pomyśl sobie o innym sposobie aktualizacji wsadów w trudno dostępnych sterownikach. Bluetooth, tylko nie pisz mi zaraz że to za drogie - bo odpowiem ci że można to wręcz za DARMO zrobić ;) nie trzeba przecież wkładać BT do każdego sterownika SLAVE, tylko wyprowadzić na wierzch obudowy gniazdko na moduł BT, z którym chodzisz i masz go w walizce serwisowej. Potrzebujesz podmienić wsad? to wyjmujesz moduł BT z walizki, wpinasz w obudowę i bez żadnych kabli pięknie tym samym bootloaderem lecisz ;) .... może troszkę wolniejsza transmisja ale za to JAKA WYGODA ;)

obejrzyj sobie to:

http://mirekk36.blogspot.com/2012/12/bt ... -do-z.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: 22 sty 2013, o 13:43 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

mirekk36 napisał(a):
1:1 powinno spokojnie działać - sterowanie linią kierunku dla MAX485 masz przecież w przykładach w książce niebieskiej.

A jeśli chodzi o sieć z wieloma układami Slave to trzeba byłoby przerabiać już aplikację na PC. Mam to w planach i jest na liście rozwojowej programu ale niestety ma niski priorytet :(

Za to pomyśl sobie o innym sposobie aktualizacji wsadów w trudno dostępnych sterownikach. Bluetooth, tylko nie pisz mi zaraz że to za drogie - bo odpowiem ci że można to wręcz za DARMO zrobić ;) nie trzeba przecież wkładać BT do każdego sterownika SLAVE, tylko wyprowadzić na wierzch obudowy gniazdko na moduł BT, z którym chodzisz i masz go w walizce serwisowej. Potrzebujesz podmienić wsad? to wyjmujesz moduł BT z walizki, wpinasz w obudowę i bez żadnych kabli pięknie tym samym bootloaderem lecisz ;) .... może troszkę wolniejsza transmisja ale za to JAKA WYGODA ;)

obejrzyj sobie to:

http://mirekk36.blogspot.com/2012/12/bt ... -do-z.html


Dziekuję za pomoc, jak wrócę do domu sprawdzę przykłady z książki, z przenośnym BT jest to świetny pomysł, ale wolałbym nie wyprowadzać więcej przewodów niż to potrzebne. Obudowa będzie typu 'zalewajka żywicą poliuretanową" więc ciężko mi będzie dodatkowe kable lub złącze odpowiednio ułożyć. Szkoda, ża aplikacja na PC obsługująca wiele modułów slave ma na razie niski priorytet :-(( Ale wydaje mi się, że warto będzie poczekać :-))

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2013, o 22:47 
Offline
Użytkownik

Dołączył(a): 26 lis 2012
Posty: 54
Pomógł: 2

Zgadzam się z kolegą może priorytet w przyszłości nieco wzrośnie? :)
Póki co bez problemów da się przerobić MkBootloader w ten sposób, żeby programował jeden układ przez 485. Wystarczy w kodzie bootloadera na avr sterować kierunkiem przepływu przed i po wysłaniu znaku. Kilka linijek kodu w sumie. Jak ktoś potrzebuje to zamieszczę zmianę. Szkoda, że nie da się eepromu programować i lockbitów programować od bootloadera (chociaż to 2 da się przeżyć). Ogólnie program rozwojowy jest. Swego czasu przybierałem się do aktualizacji oprogramowania w układach pracujących w sieci wyposażonej w RFM ciekawe do zabawy, polecam :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2013, o 23:10 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

Jeżeli można to poprosiłbym o zaktualizowany kod :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2013, o 08:09 
Offline
Użytkownik

Dołączył(a): 26 lis 2012
Posty: 54
Pomógł: 2

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


No i gdzieś na początku funkcji main trzeba ustawić:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Natomiast jeszcze przed funkcją main zdefiniować sobie makra do rejestru DDR i rejestru PORT (już pomijam).


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sty 2013, o 11:32 
Offline
Użytkownik

Dołączył(a): 26 lis 2012
Posty: 54
Pomógł: 2

drobna pomylka w kodzie poprzednim ponizej poprawny:
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: 17 lut 2013, o 13:38 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

rayden napisał(a):
drobna pomylka w kodzie poprzednim ponizej poprawny:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Mam jeszcze drobny problem z WDR(); jak powinien być zdefiniowany?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2013, o 14:21 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

W nagłówku avr/wdt.h masz zdefiniowane makro wdt_reset()

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2013, o 15:27 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

tak tylko problem w tym, że po połączeniu z terminalem działają mi tylko znaki zachęty "??????????", bootloader via rs485 nie zgłasza się na komendy "U" i "I". Przejściówka usb-rs485 sprawna:-) Myślałem, że gdzieś tu jest wina.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2013, o 18:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

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

możliwe, że czas oczekiwania jest za krótki dla RS485.

Zalecam też sprawdzenie komunikacji w obie strony na prostszym przykładzie, aby upewnić się, że nie ma kłopotów z komunikacją.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lut 2013, o 20:44 
Offline
Użytkownik

Dołączył(a): 26 lis 2012
Posty: 54
Pomógł: 2

Sprawdz czy pin i port od kierunku transmisjii wysterowujesz


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2013, o 01:00 
Offline
Użytkownik

Dołączył(a): 10 paź 2012
Posty: 123
Pomógł: 10

Witam.
Odgrzeję starego kotleta ale wątek mi pomógł więc napiszę.
Dzięki za poprawki do bootloadera - świetnie działa z rs485.
Oczywiście też czekam na update mkbootloadera do pełnej obsługi rs485 ale chciałbym napisać że również z tą wersją można sobie trochę ułatwić programowanie wielu układów połączonych w sieć. Wprawdzie nie wszystkie na raz ale pojedynczo (ale bez odłączania od sieci) działa całkiem sprawnie. Mam 3 moduły rozrzucone po domu (to nie problem bo dom nie duży) ale mocno zabudowane tzn. do każdego żeby się dostać to trochę się trzeba nademontować :) Wszystkie komunikowały się ze sobą (a raczej z masterem będącym w dogodnym miejscu) po rs485. Protokół prosty jakiś tam sobie wymysliłem czyli np $1X oznacza:
$ - (oznaczenie początku rozkazu)
1 - adres modułu.
X - komenda np odczyt to R, zapis to W+FF (wartość w hex) jest też reset - S
I teraz jak chcę zaktualizować we wszystkich modułach programy z jednego miejsca to się wpinam kompem w sieć rs485, wyłączam mastera (transmisja więc ustaje bo protokół jest tak zbudowany że slave-y siedzą cicho do momentu aż konkretnego master nie zapyta), odpalam mkbootloader, otwieram plik ze wsadem dla odpowiedniego slave-a i ustawiam [software reset] np $1S (jeśli chcę zaktualizować slave-a nr 1), wciskam wstrzyknij i po chwili mam wsad zaktualizowany. I tak z każdym po kolei zmieniając ciąg znaków w opcji [software reset].
Wiem że ameryki nie odkryłem ale może się komuś ta uproszczona wersja przyda bo mi baaaaardzo ułatwiła życie.
Pozdrawiam
Jarek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2013, o 07:08 
Offline
Moderator
Avatar użytkownika

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

jark no i bardzo fajny sposób ;)

_________________
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: 6 maja 2013, o 12:28 
Offline
Nowy

Dołączył(a): 15 sie 2012
Posty: 19
Pomógł: 0

jark napisał(a):
Witam.
Odgrzeję starego kotleta ale wątek mi pomógł więc napiszę.
Dzięki za poprawki do bootloadera - świetnie działa z rs485.
Oczywiście też czekam na update mkbootloadera do pełnej obsługi rs485 ale chciałbym napisać że również z tą wersją można sobie trochę ułatwić programowanie wielu układów połączonych w sieć. Wprawdzie nie wszystkie na raz ale pojedynczo (ale bez odłączania od sieci) działa całkiem sprawnie. Mam 3 moduły rozrzucone po domu (to nie problem bo dom nie duży) ale mocno zabudowane tzn. do każdego żeby się dostać to trochę się trzeba nademontować :) Wszystkie komunikowały się ze sobą (a raczej z masterem będącym w dogodnym miejscu) po rs485. Protokół prosty jakiś tam sobie wymysliłem czyli np $1X oznacza:
$ - (oznaczenie początku rozkazu)
1 - adres modułu.
X - komenda np odczyt to R, zapis to W+FF (wartość w hex) jest też reset - S
I teraz jak chcę zaktualizować we wszystkich modułach programy z jednego miejsca to się wpinam kompem w sieć rs485, wyłączam mastera (transmisja więc ustaje bo protokół jest tak zbudowany że slave-y siedzą cicho do momentu aż konkretnego master nie zapyta), odpalam mkbootloader, otwieram plik ze wsadem dla odpowiedniego slave-a i ustawiam [software reset] np $1S (jeśli chcę zaktualizować slave-a nr 1), wciskam wstrzyknij i po chwili mam wsad zaktualizowany. I tak z każdym po kolei zmieniając ciąg znaków w opcji [software reset].
Wiem że ameryki nie odkryłem ale może się komuś ta uproszczona wersja przyda bo mi baaaaardzo ułatwiła życie.
Pozdrawiam
Jarek



U siebie zrobiłem podobnie! :-) Z tym, że działa to z 31 modułami, również rozrzuconymi po domu i ogrodzie, u mnie przykładowy format komendy do soft resetu to "!99r" Gdzie ! początek rozkazu, 99 adres modułu, a r to restart i wejście w tryb bootloadera na 5 sekund.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 maja 2013, o 13:18 
Offline
Moderator
Avatar użytkownika

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

bss34 napisał(a):
U siebie zrobiłem podobnie! :-) Z tym, że działa to z 31 modułami, również rozrzuconymi po domu i ogrodzie, u mnie przykładowy format komendy do soft resetu to "!99r" Gdzie ! początek rozkazu, 99 adres modułu, a r to restart i wejście w tryb bootloadera na 5 sekund.


No i piękna sprawa ;) gotowy przepis

_________________
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: 19 gru 2013, o 13:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 maja 2012
Posty: 296
Lokalizacja: Chebzie Dolne
Zbananowany użytkownik

Pomógł: 6

Znowu odgrzewamy kotleta:).
Kombinuje z bootloaderem również po rs485 1:1. Zmodyfikowałem funkcje UART_Rx_Byte. Bootloader sie ładnie wgrywa, procek daje znać o sobie. Lecz problem z wgraniem wsadu. BLS się nie zawiesza w głównej pętli, sprawdziłem diodą led.
Aha procek to atmega324pa

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

_________________
Inspekcja TV kanalizacji
Programowanie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 22:52 
Offline
Użytkownik

Dołączył(a): 10 paź 2012
Posty: 123
Pomógł: 10

Witam.
Linię DE masz podpiętą pod PD4?
Pozdrawiam
Jarek



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO