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



Teraz jest 17 kwi 2024, o 01:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 33 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 19 paź 2016, o 10:15 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Cześć, mam problem z wypróbowaniem pliku demo bibliotek freemodbusa, zdesperowany przychodzę po podpowiedzi.

Całość montowana na płytce stykowej, sprawdzałem setki razy, raczej nie chodzi o pomyłkę A-B lub RX-TX. Używam do testów http://gridconnect.com/usb-to-rs485.html oraz mbpolla lub chipkina. Pytam o dobre rejestry.

W oryginalnym kodzie zmieniłem prędkość na 9600 i brak parzystości, w pliku port dodalem definicje #define __AVR_ATmega16__ , #define RTS_ENABLE oraz zmieniłem PB0 na PINB0. Dodałem też definicję F_CPU w ustawieniach projektu.

Używam MAX485. Wewn. zegar ustawiony na 8 Mhz.

AVR nie odpowiada w ogóle, zauważyłem że gdy kliknę reset konwerter świeci diodą odbioru danych, po resecie urządzenie jednokrotnie niby coś odpowiada ale tester nie rozumie odpowiedzi i ja też
[19:58:09] Recv error: Invalid function code
[19:58:08] <= Response: 00 00 00 00 F0 80 00 3F 00 00 00 00 F0 00 FF 00 00 00 00 FF 00 00 00 F0 00 00 00 00 00 00 70 00 00 00 00 00 00 00 1C 00 00 00 80 00 00 C0 00 00 00 00 00 E0 00 00 00 00 00 00 00 00 80 00 00 00 E0 00 FC 00 00 C0 C0

później już sam TIMEOUT. Prosiłbym o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 10:47 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

Kolego a mozesz zaprezentowac kod, bo tak bez kodu to ciężko będzie cokolwiek powiedzieć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 10:57 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Oczywiście

dwa pliki których dotykałem, reszta jest bez zmian względem oryginału

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.



dodatkowo, po kompilacji dostaję takie ostrzeżenia

Warning 8 'SIG_OUTPUT_COMPARE1A' appears to be a misspelled signal handler [enabled by default]
Warning 6 'SIG_UART_TRANS' appears to be a misspelled signal handler [enabled by default]
Warning 4 'SIG_USART_DATA' appears to be a misspelled signal handler [enabled by default]
Warning 5 'SIG_USART_RECV' appears to be a misspelled signal handler [enabled by default]
Warning 9 'usTimerOCRBDelta' defined but not used [-Wunused-variable]
Warning 3 #warning "This header file is obsolete. Use <avr/interrupt.h>." [-Wcpp]
Warning 7 #warning "This header file is obsolete. Use <avr/interrupt.h>." [-Wcpp]
Warning 1 variable 'eStatus' set but not used [-Wunused-but-set-variable]
Warning 2 variable 'xFrameReceived' set but not used [-Wunused-but-set-variable]

atmel studio 6, 6.2.1153



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 11:19 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

"Sig_output" i "sig_uart" to są stare nazwy przetwań, zmień je na nowe bo i to może być problemem. Stare i nowe nazwy są dostępne w eclipse w zakładce, lub też gdzieś luźno w necie.

------------------------ [ Dodano po: 4 minutach ]

W drugim pliku zmień:
Kod:
#include "avr/ (...) "


na:
Kod:
#include <avr/ (...) >


bo kompilator w innych miejscach szuka tych plikow w zależności czy sa "" czy też <>

------------------------ [ Dodano po: 6 minutach ]

Jak na razie to niestety tyle widzę (na telefonie) później jeszcze postaram się temu przyjrzeć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 13:52 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Poprawiłem przerwania i "", niestety to nie to.

Używam schematu z tego wątku topic1523.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 17:50 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

@Rozkokoszony - a powiedz mi jedno, skąd pobrałeś to demo ? Z tego postu gdzie jest schemat, czy z innej lokalizacji.
Bo w tym wątku, który Ty podajesz, jest dość sporo podpowiedzi, i z tego co wyłapałem chłopakom to ruszyło.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2016, o 19:24 
Offline
Użytkownik

Dołączył(a): 02 sty 2013
Posty: 35
Pomógł: 1

Kolego biblioteki freemodbus posiadają port dla atmegi 16

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


Ja na twoim miejscu odpaliłbym najpirw komunikacje po rs232 a doipiero potem 485.

Demo z strony freemodbus praktycznie odpala od kopa.
Pamiętaj tylko że mbpolloa ma przesunięty adres o 1 (offset).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 06:08 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Jedyna zmiana która została wprowadzona w tamtym temacie to dodanie RTS_ENABLE, tak też zrobiłem. Niestety nie odpala od kopa. Demo pobrałem z sourceforge v1.5.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 17:32 
Offline
Użytkownik
Avatar użytkownika

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

Rozkokoszony napisał(a):
Pytam o dobre rejestry.


Jesteś pewien?? Dobre czyli jakie? Ile? Jakiej funkcji używasz??
Nazwy przerwań dobrze zmieniłeś?? Dla różnych procków mogą mieć różne nazwy.
Dla m32 będą to:

USART_RXC_vect
USART_UDRE_vect
USART_TXC_vect

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 18:24 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

Tego motywu nie łapie:

Rozkokoszony napisał(a):
oraz zmieniłem PB0 na PINB0.



zamieniłeś wyjście w procku na wejście ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 18:43 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

zmienione na PORTB0, przepraszam.

Siedze i glowie sie na tym nadal, doszedlem do takiej sytuacji:

na zapytanie ze skanera avr w koncu odpowiada, ale nadaje bardzo dlugo a skaner wyrzuca oczywiscie blad Error - Modbus message invalid length, long
moze teraz bedzie latwiej mi pomoc... macie jakies pomysly ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 18:48 
Offline
Użytkownik
Avatar użytkownika

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

Po pierwsze proponuje na jakimś trminalu sprawdzić wokół komunikację uarta z terminalem przy twojej prędkości. Jak używasz wewn taktowania może jest po prostu zbyt rozkalibrowany?
Pod tx i rx podłącz ledy przez duże rezystory do vcc. Będziesz widział co się dzieje na liniach.

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 18:53 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

Miałbym prośbę wrzuć cały projekt (wszystkie pliki) do jednego archiwum, i podepnij tutaj.
Mając całość przed oczami będzie łatwiej, aniżeli widząc dwa pliki a reszty się domyślając lub próbując trafić na te same w czeluściach sieci.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 19:27 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Zalaczam calosc tutaj. Na konwerterze mam diody sygnalizujace wyslanie zapytania i przyjscie odpowiedzi, ale faktycznie diody pod avr sa dobrym pomyslem.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 20:35 
Offline
Użytkownik
Avatar użytkownika

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

Na dzień dobry zrób to co ci pisałem wyżej.

w pliku portserial.c na dole nazwy przerwań. Jak nie poprawisz dalej nie sprawdzam

Pozdrawiam

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 20:53 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

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


tak to wyglada w moim pliku... pokrywa sie to z Twoim postem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 20:55 
Offline
Użytkownik
Avatar użytkownika

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

SIGNAL jest be

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

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 21:03 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

OK, to moze byc kompletnie glupie ale zauwazylem dodatkowo, ze ta "dluga" odpowiedz dostaje tylko przy odpietym programatorze, gdy jest zapiety mam timeout - czy to jest zwiazne z trybem programowania?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 21:11 
Offline
Użytkownik
Avatar użytkownika

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

Rozkokoszony napisał(a):
gdy jest zapiety mam timeout

daj jakiegoś leda migającego bo może procek jest cały czas trzymany w resecie po podlaczeniu programatora. czym programujesz?

Jakieś zmiany po zmianie nazw przerwań??

spróbuj na chwile dla testu zmienić pzrzystość na even

dołożyłeś ledy na uarta??

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 21:20 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

programuje tym:

https://www.piekarz.pl/pl/?item=41450

diody dolozylem: swieci sie nonstop TXD , leciutko przygasa na moment gdy wysylam zapytanie z PC.

gdzie dolozyc leda aby spr procesor? jesli na reseci to zapala sie bardzo lekko gdy podlaczam programator.



przy EVEN tak samo, konwerter odbiera dluga wiadomosc, TXD swieci sie, RXD nie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 21:40 
Offline
Użytkownik
Avatar użytkownika

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

Rozkokoszony napisał(a):
gdzie dolozyc leda aby spr procesor

gdziekolwiek do wolnego pinu i ustaw niech sobie miga co 1s. BędIesz widział czy miga czy nie po podpięciu programatora.
Rozkokoszony napisał(a):
swieci sie nonstop TXD

podłączyłeś do gnd czy vcc?


Dziwne z tym długa wiadomość. jakiej funkcji używasz, jakie adresy i ile odpytujesz? czywysyłasz zapytania?

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 21:47 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

do GND przez 10kOhm

sprawdze z dioda

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2016, o 22:07 
Offline
Użytkownik
Avatar użytkownika

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

No właśnie. Zobacz parę psów wyżej. Miało być do vcc. Wtedy by nie było ciągłe światło tylko ładne błyski jak procek odpowiada na zapytania


zadeklaruj sobie tablicę holding_registers zamiast input. zadeklaruj sobie 10 elementów od 1000 a odpytuj na poczateg powiedzmy z 5 od 401002
przez funkcję 03 albo zapisuj przez 16

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 16:48 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Spr program, jest OK. Dioda mruga. Generalnie mam timeout, diody na TX i RX nie mrugaja, podciagniete do vcc, wolalbym nie bawic sie w deklarowanie i odpytywanie czegokolwiek poza standardem w demie bo i po co? Jesli program jest OK i na atmedze32A da sie odpalic freemodbusa, to musi byc problem hardwarowy - niestyk / oscylator ?

te warningi raczej wplywu na nic nie maja:

Warning 6 'usTimerOCRBDelta' defined but not used [-Wunused-variable]
Warning 3 #warning "This header file is obsolete. Use <avr/interrupt.h>." [-Wcpp]
Warning 4 #warning "This header file is obsolete. Use <avr/interrupt.h>." [-Wcpp]
Warning 1 variable 'eStatus' set but not used [-Wunused-but-set-variable]
Warning 2 variable 'xFrameReceived' set but not used [-Wunused-but-set-variable]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 17:51 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Rozkokoszony napisał(a):
te warningi raczej wplywu na nic nie maja:

Warning 6 'usTimerOCRBDelta' defined but not used [-Wunused-variable]
Warning 3 #warning "This header file is obsolete. Use <avr/interrupt.h>." [-Wcpp]
Warning 4 #warning "This header file is obsolete. Use <avr/interrupt.h>." [-Wcpp]
Warning 1 variable 'eStatus' set but not used [-Wunused-but-set-variable]
Warning 2 variable 'xFrameReceived' set but not used [-Wunused-but-set-variable]

ad 6. to zostało zdefiniowane, ale nigdzie tego nie użyłeś - zajmuje niepotrzebnie miejsce
ad 3. używasz starego pliku nagłówkowego - zamień na ten sugerowany bo jest nowszy. Skoro używasz teraz ISR zamiast (beee) SIG powinieneś zmienić
ad 4. jak pkt 3
ad 1. trochę podobne do ad. 6 - tutaj ustawiłeś zmienną ale nie jest użyta w kodzie
ad 2. tak jak ad. 1

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 17:59 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

Tak, rozumiem co te warningi oznaczaja, ale na dzialanie programu nie powinny miec wplywu.

Mam zewn rezonator kwarcowy 8MH HC49/S, podlaczylem go tak jak w temacie do ktorego link dawalem, ale szczerze mowiac nie wiem jak ustawic fuse bity, moglby ktos mi podac czy zaznaczyc CKOPT i co wybrac w SUT_CKSEL ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 18:44 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

A korzystasz może MKAVRCalculatora? Czy ustawiasz fusy "ręcznie"?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:14 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

OK, udalo sie ustawic zew kwarc, niestety na calosc wplywu to nie mialo, nadal timeout.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 paź 2016, o 14:05 
Offline
Nowy

Dołączył(a): 14 paź 2016
Posty: 21
Pomógł: 0

W końcu udało się odpalić 3modbusa i jestem już po paru dniach testów, chciałbym zapytać bo może tym razem odpowiedź będzie prostsza o coilsy:

static unsigned char ucRegCoilsBuf[REG_COILS_SIZE / 8]; z czego wynika to dzielenie przez 8 i jak / czy się da zrobić tak aby leciało to faktycznie co 1 a nie co 8.



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

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

Coilsami się nigdy nie bawiłem bo nie miałem takiej potrzeby.
Chodzi tu na pewno o to żeby nie marnować pamięci i jeśli coils to stan cewki czyli 1bit, zniszczono pewnie 8 coilsow w jednym bajce. Stąd dzielenie.

Ale o to odczytywanie co 8 to musze sprawdzić. Ale to było by logiczne. Jak w jednym elemencie tablicy masz 8 cewek to następnym elementem do odczytania jest nr coils+8 czyli następny bajt. Potem musisz pewnie przez maskowanie wydłubać to co co potrzebę

Wysłane z mojego SM-G850F przy użyciu Tapatalka


Autor postu otrzymał pochwałę

_________________
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: 33 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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