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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 15 lip 2025, o 13:05


    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: 27416
    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: 27416
    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: 27416
    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: 27416
    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 ] [ Zaznacz wszystko ]
    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 1 gość


    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