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



Teraz jest 26 kwi 2026, o 01:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 29 paź 2014, o 11:35 
Offline
Nowy

Dołączył(a): 17 paź 2014
Posty: 2
Pomógł: 0

Witam mam takie pytanie czy jest jakiś łatwy sposób na rozwiązanie przełączania pomiędzy trybem odbioru/transmisji
obecnie aby mój kod zadziałał muszę każdorazowo resetować obie atmegi32.
Zaznaczam ze jestem początkującym.
Dziękuje za wszelkie podpowiedzi.

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



Ostatnio edytowano 29 paź 2014, o 20:32 przez MarcinPieta, łącznie edytowano 4 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2014, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Kolega bez obrazy ale ten kod to jakaś "sieczka" jest.

Kod Enigmy szybciej bym rozszyfrował. Tabulację do poprawy, liczby heksadecymalne nawet przy sczytywaniu wciśnięcia klawisza. Parę takich kwiatków jest.

Pamiętaj, że udostępniając kod na forum, musisz zachęcić kogoś, aby ten kod chciało mu się przeczytać. Tak więc im lepszej jakości kod wrzucisz tym szybciej znajdziesz chętnego.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2014, o 18:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Więc tak - może nie zagłębiłem się w program wielce, ale inicjację masz poza while, więc odbędzie się tylko raz. Dodaj zmienną "aktualny tryb pracy" i dodatkową pętlę wewnątrz while, która sprawdzi, czy ustawiony tryb (na pinach o ile dobrze widzę) jest rożny od tej nowej zmiennej - jeśli tak, to init w nowym trybie i aktualizacja zmiennej.

tak na szybko - nie gwarantuję że dobrze - nie zagłębiłem się w kod



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2014, o 18:59 
Offline
Użytkownik

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

A z ciekawości takie pytanko. Po co jakieś przełączanie na master czy slave?
Wszak USART potrafi działać w trybie full duplex (jednoczesna łączność dwukierunkowa).
W związku z tym przecież możesz zrobić tak żeby wysyłał kiedy chcesz
A odbierze wtedy gdy drugi procek mu coś wyśle ;-)
Po co te całe zabawy? Czy jest w tym może jakiś głębszy sens?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2014, o 19:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

MirkoT napisał(a):
Wszak USART potrafi działać w trybie full duplex (jednoczesna łączność dwukierunkowa).


Sam zapomniałem. Głupoty w sumie wyszły. Grypa robi swoje... Full duplex i przerwania - zero problemu.



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

Dołączył(a): 17 paź 2014
Posty: 2
Pomógł: 0

hmm przerwania jak na razie za wysokie progi na moja wiedzę.
Cel tego w sumie taki bajer światła drogowe ( ustawiasz czas na światłach master i wysyła do drugich świateł, w zależności które pracują jako master drugie ustawiasz jako slave)
program działa prawidłowo przy czym pozostaje problem w momencie przełączenia ze slave na master oczekuje na ostatnia transmisje (gdy dane zostana wyslane )przestawia się na master.
Mam nadzieje ze ktoś to zrozumie :)


kolego doman89
a czy teraz kod sie bardziej podoba czy muszę jeszcze nad nim popracować.
W razie jak się nie podoba proszę o przykłady jak już wspominałem jestem początkującym i sczytywanie wciśnięć klawiszy było zaczerpnięte z książki tak jak kod hex czy binarny, wszelkie błędy są niezamierzone i wynikają tylko z mojej niewiedzy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 paź 2014, o 23:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

MarcinPieta napisał(a):
kolego doman89a czy teraz kod sie bardziej podoba czy muszę jeszcze nad nim popracować.W razie jak się nie podoba proszę o przykłady jak już wspominałem jestem początkującym i sczytywanie wciśnięć klawiszy było zaczerpnięte z książki tak jak kod hex czy binarny, wszelkie błędy są niezamierzone i wynikają tylko z mojej niewiedzy.


Kolega proszę może nie z tak dużych liter ok? Ja nie miałem zamiaru się czepiać, tylko w dobrym zamiarze Ci napisałem, bo naprawdę sam zobacz, że już teraz jest o niebo lepiej ;) Tak by post wisiał nikt by nic nie napisał, daje sobie rękę uciąć (no dobra z tą ręką to przesadziłem :D)

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


Porównaj to teraz z Twoim pierwszym który tu był i odpowiedz szczerze który jest przyjemniejszy w analizie?

Co do liczb hexadecymalnych to w małym programie ogarniesz luz, ale wyobraź sobie, że masz program na 1000 linijek kodu, zmieniasz kolejność klawiszy bo tak projekt np. zakłada i teraz sieczka... każdą liczbę hex analizujesz i zmieniasz krok po kroku. Tak więc zobacz na starcie ile chce Ci nerwów zaoszczędzić ;) Teraz to jak wyżej zmienisz kilka makrodefinicji, a w kodzie automatycznie wszystko masz tak jak chcesz.

Pamiętaj to z czym się pomęczysz na początku, to gwarantuję Ci, że zwróci się z naddatkiem.

z Niebieskim pozdRowieniem,
Doman89


------------------------ [ Dodano po: 15 minutach ]

Co do programu nie wiem, czy to jest zamierzony cel, ale w pętli while masz 2 ify.

Strzelam, że masz tam podłączone jakieś przełączniki i na podstawie pozycji chcesz przełączać tryb. Więc ja bym dał if... else if. Inaczej jeżeli będziesz miał 2 włączone to program będzie skakał od jednego do drugiego. No chyba, że tak ma być to ok.

Po drugie nie rozumiem czemu masz inicjalizację USART'u w programie. Przecież chyba wystarczy raz w main? Tym bardziej, że obie się niczym raczej nie różnią. Tak jak koledzy wyżej napisali, przydały by się przerwania. Wtedy ładujesz do bufora dane do wysłania oraz ewentualnie z bufora odczytujesz dane odebrane. Czyli jak wspomnieli full duplex.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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