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



Teraz jest 11 wrz 2025, o 04:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 3 sty 2015, o 15:03 
Offline
Użytkownik

Dołączył(a): 03 sty 2015
Posty: 25
Lokalizacja: Mielec
Pomógł: 0

Witam
jest to mój pierwszy wątek więc proszę o wyrozumiałość.
Zaczynam naukę programowania w C AVR i mam problem związany z odczytem portu.
Chciałbym aby odczytać port w postaci 1 bajtu binarnie: "0b00000000" i zapisać ją do zmiennej "a" i porównać go ze zmienną "b" w postaci też jednego bajtu binarnie 0b00000000 (zależy mi binarnie gdyż chcę porównać kazdy pin) jeśli się różnią to inna zmienna "c" przyjmuje jedynkę oznacza błąd.


A jeszcze lepszym rozwiązaniem by było gdyby każdy bit był odczytany i umieszczony w tablicy, później porównanie całej zawartości tablicy do zmiennej "b" i wypisanie na LCD tylko te bity które się różnią względem porównanej zmiennej



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

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

W książce niebiańskiej atnelańskiej przeczytaj o tablicach.

Dlaczego odsyłam do książki? Ponieważ nie widzę co już poczyniłeś tzn kodu twojego.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



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

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Hey ,

Ja bym zrobil pewnie cos w rodzaju ze jesli PORTX "AND" (czyli operacja logiczna) "b" sa rozne od PORTX to wtedy podejmujesz jakas akcje. Do operacji logicznych / maskowania bitow etc mozesz zajrzec do poradnikow Mirka lub tj wspomnial kolega Majster do niebieskiej ksiazki.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2015, o 15:10 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27425
Lokalizacja: Szczecin
Pomógł: 1044

ja koledze zdecydowanie polecam obejrzeć po kolei to:

http://mirekk36.blogspot.com/2014/03/li ... stawy.html

i to:
http://mirekk36.blogspot.com/2014/03/li ... malne.html

ale także to:
http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html

oraz to:
http://mirekk36.blogspot.com/2014/05/if ... -o-co.html

a tak w ogóle to zacząć najlepiej od:
http://atnel.pl/mikrokontrolery-avr-jezyk-c.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: 3 sty 2015, o 15:11 
Offline
Użytkownik

Dołączył(a): 03 sty 2015
Posty: 25
Lokalizacja: Mielec
Pomógł: 0

ok tylko ja nie rozumiem jak odczytać cały baj i go porównać. Czy jedyne rozwiązanie to tablice



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2015, o 15:12 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27425
Lokalizacja: Szczecin
Pomógł: 1044

dawid333 napisał(a):
ok tylko ja nie rozumiem jak odczytać cały baj i go porównać. Czy jedyne rozwiązanie to tablice

przeczytaj co napisałem WYŻEJ - obejrzyj to - to zrozumiesz

_________________
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: 3 sty 2015, o 15:36 
Offline
Użytkownik

Dołączył(a): 03 sty 2015
Posty: 25
Lokalizacja: Mielec
Pomógł: 0

Dziękuję za szybka odpowiedź.
Oglądnę podsunięte materiały, przetestuje.
Książkę niebieską mam dotarłem do obsługi lcd.
I tam świetnie opisane jest jak ustawić każdy pin lub port czy mam być in/out, +5/0
, ale co do odczytu to przykłady są na zasadzie sprawdzania jednego pinu tzn czy jest na nim +5 czy 0
I tak trochę dziwnie w moim odczuciu, czy pin ma być IN czy OUT czy na pinie ma być +5 czy 0 to coś takiego ustawia się jednym poleceniem.
A co do odczytu jest już trochę inaczej. Chyba ze czegoś nie rozumiem. Ale gdzieś przewinęło mi się że C nie ma bezpośredniego dostępu do pinów i trzeba stosować "maskowanie" ale nie rozumiem o co chodzi.
Ale to moje początki wiec piszę na "gorąca" bo nie chcę błądzić i szukać w sieci i czytać niesprawdzonych informacjach choć jest tego sporo.



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

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Jak masz "niebieski" przewodnik po elektronice :) to tam znajdziesz to wszystko dokladnie wyjasnione. A jak wtedy bedziesz miec watpliwosci to pytaj dalej. ale ogolnie korzystajac z rejestrow masz dostep do portow mikrokontrolera. Za ich pomoca mozesz ustawic ich kierunki. A dodatkowo mozesz takze ustawic czy jest na nim stan wysoki / niski

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2015, o 15:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27425
Lokalizacja: Szczecin
Pomógł: 1044

dawid333 napisał(a):
Chyba ze czegoś nie rozumiem.

No DOKŁADNIE - tu się zgodzę

dawid333 napisał(a):
Ale gdzieś przewinęło mi się że C nie ma bezpośredniego dostępu do pinów i trzeba stosować "maskowanie" ale nie rozumiem o co chodzi.

Dlatego TYM bardziej nie rozumiem dlaczego nie chcesz obejrzeć tych poradników do których ci linki podałem ... i wrócić też w książce wtedy do maskowania - bo to się ładnie uzupełnia ...

możesz tak jeszcze długo pisać i wymyślać że coś gdzieś słyszałeś i tracić czas poniekąd ;) ... ale ja na twoim miejscu zamiast tego obejrzałbym te poradniki NAJPIERW, przeczytał jeszcze raz w książce o maskowaniu i dopiero wtedy ew dalej dopytał

_________________
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: 4 sty 2015, o 02:53 
Offline
Użytkownik

Dołączył(a): 03 sty 2015
Posty: 25
Lokalizacja: Mielec
Pomógł: 0

A więc tak. Oglądałem, przeprowadziłem ćwiczenia. Poradniki naprawdę super. Gratuluje Panie Mirku.
Ale do rzeczy. Czegoś moim skromnym zdaniem mi brakuje a co chciałbym wykonać. Jeśli chodzi o maskowanie bitów / bajtów. Wszystko fajnie, jeśli nie interesuje cię który z badanych pinów zmienił stan tylko odpowiedź jest jedna albo prawda albo błąd.
A co jeśli (podam przykład) . Sprawdzam cały portx. Wszytkie piny jako wejścia i wszystkie podciągnięte do 1.
I teraz wiem ze będzie sie pokazywać 0 kolejno na każdym pinie w różnym odstępie czasowym.
Stosując if-y i maskowanie pinów aby sprawdzić stan na poszczególnych pinach muszę napisać 8x8=64 IF (sprawdzając każdego pina z osobna na porcie 8 raz)

Wstępna wersja programu
1 if + maskowanie - sprawdza nadejście sygnału (na którym pinie jest 0)
2 po wykryciu następne 8 if- na którym rzeczywiście jest sygnał (0)

Czy to tak miało by wyglądać? czy jest jakieś inne rozwiązanie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lut 2015, o 15:47 
Offline
Nowy

Dołączył(a): 16 sie 2013
Posty: 1
Pomógł: 0

Proste porównanie stanu dwóch portów możesz zrobić w następujący sposób:

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


Jeśli chcesz badać i porównywać stan poszczególnych pinów na dwóch portach - to musisz zapoznać się maskowaniem bitów, pętlą "for" przesunięciami bitowymi, zapisywaniem i odczytywaniem elementów tablicy. Na początek spróbuj porównać stany jednego potem dwóch pinów itd. Rozbuduj pętlę for aż porównasz wszystkie bity zmiennej a i b.
Wszystkie zagadnienia opisane są w książce BB.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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