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



Teraz jest 29 mar 2024, o 14:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 19 paź 2017, o 09:01 
Offline
Nowy

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

Jako, że to mój pierwszy post chciałbym się z wszystkimi przywitać na forum! :)

Tworzę program na Atmega8, który ma mieć za zadanie:

sprawdzić czy na porcie PC (całym) są stany zerowe -> jeśli pojawi się sygnał na którymś z portów (ale mają to być określone sygnały) ma wykonać odpowiednią instrukcje (miganie diodą).
Jeśli żadna z opcji się nie sprawdzi to dioda ma zacząć szybko mrugać.

napisałem taki kod:

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


Moje pytania:

Czy definicja PUSTE_WEJSCIA (PINC & 0b00000000) sprawdza czy stany są zerowe na pinach?
Czy w funkcji switch case mogę używać pętli for? Bo miałem problem z kompilacją jak użyłem pętli for(chciałem jej użyć do migania diodą)
Czy brnę w ogóle w dobrą stronę? ;)

Serdecznie pozdrawiam
Marcin



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2017, o 09:20 
Offline
Moderator
Avatar użytkownika

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

Proponuję po pierwsze obejrzeć ten poradnik:



ale również ten



bo widać, że kolega na razie w ogóle nie wie co to znaczy maskowanie i jak do tego podchodzić

polecam też zdecydowanie zacząć od książki
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

marcinceber napisał(a):
Czy brnę w ogóle w dobrą stronę?

bo rzeczywiście kolega brnie niestety w ślepą uliczkę

_________________
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: 19 paź 2017, o 09:26 
Offline
Nowy

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

Dziękuję za odpowiedź.
Książkę oczywiście posiadam. Jednym słowem zaczynam to wszystko raz jeszcze, bo "wydaje się", że gdzieś dzwoni, ale tylko "WYDAJE" ;)
Dziękuję za szybką odpowiedź :)

Pozdrawiam
Marcin



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 paź 2017, o 09:28 
Offline
Moderator
Avatar użytkownika

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

marcinceber napisał(a):
Książkę oczywiście posiadam.

To warto wejść w ustawienia swojego konta na forum i dodać ikonkę Bluebooka - żeby było wiadomo, że już się ją posiada ;)

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

Zanim jeszcze obejrzysz poradniki a warto obejrzeć to pomyśl .... (o ile ja dobrze zrozumiałem twoje założenia)

Jeśli normalnie na wszystkich pinach portu C masz stan wysoki i masz podjąć akcję gdy na dowolnym albo kilku pojawi się stan NISKI to wystarczy prosty IF aby to wyłapać

if( PINC != 0xFF ) ....

i wtedy wywołać funkcję (pisz funkcje a nie cały kod w pętli głównej programu) ... funkcję która sobie sprawdzi po kolei które bity są wyzerowane tu już możesz sobie przelecieć maskowaniem bitów no ale nie tak jak to próbujesz robić teraz - jak mówię, poradnik o MASKOWANIU bitów dużo ci wyjaśni ale też w Bluebooku jest to opisane jak to działa - więc tam też zajrzyj do rozdziału np o przesunięciach bitowych

warto zrozumieć te PODSTAWOWE operacje w języku C bo później to jest chleb powszedni podczas pisania praktycznie każdego programu

_________________
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: 19 paź 2017, o 10:29 
Offline
Nowy

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

Uzupełniłem dane w profilu ;)

Chciałem na wejścia podawać stan wysoki ale mogę też zastosować odwrotną logikę sterowania przy przekaźniku.

Docelowo program ma zadziałać tak, że gdy nie będzie, żadnego sygnału to program ma na niego oczekiwać (w pętli) jak pojawi się tylko 1 sygnał na którymś z 5 wejść
to ma wykonać odpowiednie funkcje (dla danego wejścia np. dla każdego wejścia będą inne czasy migania diodą) , a gdy pojawią się dwa sygnały jednocześnie program będzie zgłaszał błąd (na początek awaryjne miganie diodą, później krótki sygnał buzzerem) który przerwie prace na 5sek. i powróci do pętli oczekiwania na sygnał.

Jeszcze raz siadam do materiałów z książki, następnie Twoje filmy i spróbuje to ponownie napisać i pozwolę sobie odezwać się ponownie na forum ;)

Dzięki za wskazówki.

Pozdrawiam,
Marcin



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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