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



Teraz jest 29 mar 2026, o 21:34


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 14 sty 2016, o 20:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Witam po raz kolejny melduję się z problemem ;]

Poczyniłem sobie taki sprzęcik, co to potrzebuje do pracy dwóch UARTÓW. Jednego do komunikacji ze światem przez "Mirkowe Wi-Fi" a drugiego jako RS485 - Modbus RTU.

Do tej pory miałem to zrobione na dwóch atmegach32 gadających ze sobą po SPI. Działało ale miało to swoje wady.

Teraz chcę to wszystko wrzucić w jeden procek i zaczęły się schody. Po dodaniu bibliotek od modbusa procek przestaje działać. Nawet nie mignie diodą. Nie muszę nawet mieć w kodzie żadnego wywołania funkcji modbusa a i tak nie działa. Sądzę, że to problem gdzieś z ustawieniami uarta0.


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


portserial.c -z freemodbus ze zmianami rejestrów i przerwań
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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

kompiluje się bez błędów ale nic działa nic. Nawet nie sprawdzam czy działa UART jak nie chce nawet diodą mignąć.
Coś jeszcze gdzieś pewnie trzeba zrobić ale to moje pierwsze starcie z dwoma uartami

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 20:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

A jak nie włączysz przerwania
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to także masz problem. Czy jak zakomentujesz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to coś zmienia albo jak dodasz do tego także zakomentowanie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zrób proste testy a będzie wiadomo gdzie szukać.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 20:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

// sei(); - nie działa
dokładamy:
//eStatus = eMBEnable(); - nie działa
dokładamy
//eMBInit( MB_RTU, 0x0B, 0, 57600, MB_PAR_EVEN ); - voila MIGA DIODA

Póżniej: odblokowanie przerwań nic nie zmienia,
włączenie któregokolwiek z pozostałych blokuje program

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 20:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

To co masz w eMBInit(), bo tego kodu nie załączyłeś.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 21:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

to jest eMBInit. znajduje się w mb.c /niżej dam cały mb.c

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


cały mb.c

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



uzywam tylko RTU więc duża część pliku jest u mnie wyłączona z kompilacji

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 21:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Pewnie jak odkomentujesz eMBInit() a w zakomentujesz w nim
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a najlepiej jak przypiszesz jakiś poprawny status do zmiennej eStatus, to będzie dioda działać. Dlatego będzie trzeba zajrzeć do eMBRTUInit(), którego znowu nie ma :(

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 sty 2016, o 22:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

niestety, po zakomentowaniu tego co piszesz nie miga.

w ten sposób można brnąć coraz głębiej biblioteki. na pw wysłałem Ci link do całej ;]

Zastanawia mnie, że na m32 chodzi to u mnie od około pół roku 24h i jest wszystko ok. Nie zmieniałem nic poza nazwami przerwań i rejestrów z np z UCSRB na UCSR0B itp

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2016, o 00:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Wrzuciłem Twój kod do ATmega128 i miganie diodą działa :)
Czy masz na pewno wyłączony bit M103C (tryb ATmega103 Compability Mode)?
Najlepiej podaj jak masz ustawione fuse bity.

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 17 minutach ]

Przy okazji to popraw kod w kilku miejscach, bo kompilator wyrzuca warningi:
- w port.h zakomentuj poniższe, bo to już deklaruje io.h:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

- w portserial.c zakomentuj poniższe, bo teraz dla przerwań powinien być używany plik nagłówkowy avr/interrupt.h a ten jest już wcześniej includowany:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

- dodatkowo możesz w porttimer.c zakomentować, bo i tak nie jest używane:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

- oraz także możesz zakomentować, bo też nie jest używane w mbrtu.h w funkcji eMBRTUReceive():
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 19 minutach ]

A zadam jeszcze takie podstawowe pytanie. Czy po zmianie procesora zrobiłeś Clean projektu?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2016, o 08:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Wyłączenie m103c to była pierwsza rzecz jaką zrobiłem ;]

dziwne, że u mnie nie działa - sprawdzone na dwóch prockach.

Ogólnie warningi nie problem, wiem o co z nimi chodzi - posprzątam wszystko ale powinno i tak ruszyć.

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2016, o 09:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Bez poprawiania elementów wywołujących warningi dioda także miga.
Wziąłem Twój main.c z pierwszego posta oraz podesłaną bibliotekę i zmieniłem tylko przypisanie portu i pinu diody do PD4 i nic więcej nie zmieniałem i działało.
Jak nadal będziesz miał problem, to podeślij hex-a, to wieczorem będę mógł załadować go do siebie i zobaczyć czy po Twojej kompilacji też u mnie działa.

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2016, o 10:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

To już nie wiem, może mój eclipse coś miesza albo sama biblioteka io128 czy jak tam ona się zwie...

Tak zrobimy - wieczorem będę w domu to skompiluję z PD4 i Tobie podrzucę. Jak zadziała to szukamy u mnie w sprzęcie, jak nie - w eclipse...

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 sty 2016, o 21:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

Witam ponownie,
Problem chyba opanowany, wszystko wydaje się być ok. Jutro testy modbusa, potem wifi na drugim uarcie.

Teraz pora się przyznać...co było skopane...

kolega rskup pyta ładnie:
rskup napisał(a):
Czy masz na pewno wyłączony bit M103C (tryb ATmega103 Compability Mode)?


a ja mu bezczelnie:
skalarro napisał(a):
Wyłączenie m103c to była pierwsza rzecz jaką zrobiłem ;]

:oops:
się okazuje to co Mirek powtarza: JAK JESTEŚ CZEGOŚ ABSOLUTNIE PEWIEN ŻE JEST DOBRZE A NIE DZIAŁA, TO SPRAWDŹ JESZCZE RAZ!!! NA PEWNO MASZ ŹLE!!!

Fusy zmieniałem a jednak nie zmieniłem. Podejrzewam, że wybrałem dobrze wszystkie ptaszki a potem nie zmieniłem z odczyt na zapis. Już się kiedyś na to złapałem ;]

W każdym razie dioda miga, psujemy dalej... "POMOGŁEMY" lecą tam gdzie mają ;] Dzięki

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



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