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



Teraz jest 27 lis 2024, o 03:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 29 mar 2016, o 20:59 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 227
Lokalizacja: LDZ
Pomógł: 22

Witam.

Bibliotekę wstawiam na prośbę kolegi maxus. Przykładowy kod nadajnika poniżej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Biblioteka wraz z dokumentacją w załączniku. Aktualnie obsługuje ATmega8, ATmega16, ATmega2560 i ATmega328P. Dokumentacja może być niekompletna lub pozostawiać niejasności (pisałem na szybko), więc w razie pytań piszcie a postaram się odpowiedzieć. Żeby nie było za łatwo to wszystko w języku angielskim ;)
Trochę bałaganu jest w kodzie, ale poprawiam w wolnym czasie i tylko wieczorami. Mam małą pomocnicę w domu, która uwielbia dopisywać mi dodatkowy kod do programu;)


PS. No i jak ktoś ma jakieś pomysły co dodać z chęcią wysłucham.

Pozdrawiam.


Załączniki:

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



Ostatnio edytowano 31 mar 2016, o 07:22 przez ryba84, łącznie edytowano 13 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 mar 2016, o 23:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 wrz 2014
Posty: 1530
Lokalizacja: Warszawa
Pomógł: 55

Cenna rzecz dzięki! Jeszcze 1wire nie odpalałem....

_________________
--... ...-- - --- -- . -.-



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 06:56 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 227
Lokalizacja: LDZ
Pomógł: 22

To akurat z 1wire ma niewiele wspólnego. Tutaj kodujemy po prostu transmisję kodem manchester i machamy pinem by uzyskać odpowiedni przebieg na wyjściu. Dobrze to działa z tanimi modułami RF. Takimi jak na tej stronie http://www.romanblack.com/RF/cheapRFmodules.htm, jednak ja nie wykorzystuję UART do tego.



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

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

Prostota tych przykładów powala :)

Jeśli masz chwilę to powiedz co pozmieniać żeby działało to na Atmedze328p @11,0592 MHz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 18:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 sty 2015
Posty: 60
Pomógł: 0

Albo mi się wydaje, albo nazwy rejestrów w atmedze2560 są takie same jak w 328P.
Więc jak dodam do pliku manchester_lib-mach.h ten kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to powinno być ok co nie?

------------------------ [ Dodano po: 11 minutach ]

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

Błąd :(
Plik transmitter.c wyłączyłem z kompilacji, a receiver.c zmieniłem nazwę na main.c



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 19:19 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 227
Lokalizacja: LDZ
Pomógł: 22

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

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

Co do błędów kompilacji to wywal z kodu w funkcji dataReceived linie z wywołaniem putBuffer (tej funkcji nie ma w przykładzie ona wysyłała odebrane dane przez uart, więc usunąłem ją z przykładu). Sam sobie wymyśl co zrobisz z danymi ;). To co mi się nasuwa to zajrzałeś do dokumentacji? Bo kolejny błąd jest związany z brakiem włączenia odbiornika. Powinieneś to zrobić w preferencjach projektu (w Eclipse: Properties->C/C++ Build->Settings->AVR Compiler->Symbols). Dodaj tam MAN_RXENABLED. W taki sam sposób możesz definiować inne opcje. Więcej w dokumentacji ;)

PS. Oczywiście możesz zrobić to w pliku manchester_lib.h (#define MAN_RXENABLED), ale nie polecam tego sposobu. Wg. mnie to tak jak byś definiował F_CPU w kodzie ;)

W Pierwszym poście poprawiłem załącznik. Powinien już chodzić na 328P. Dodatkowo poprawiłem komentarze w przykładach, aby nie myliły.

PS2. Zapomniałem. Dodaj jeszcze MAN_CHEAPRF jeśli korzystasz z tych tanich modułów, bo inaczej nic nie odbierzesz ;)



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

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