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



Teraz jest 31 mar 2026, o 10:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 1 lut 2016, o 20:59 
Offline
Nowy

Dołączył(a): 11 lip 2015
Posty: 12
Pomógł: 0

Witam, robię sobie permutacje programu zapalającego diody. 4 diody zapalają się na portach PB1 do PB4, pozostałe od PC2 do PC5. I problem polega na tym iż zapalają się kolejno PB1 i gdy ma przejść na od PC2 do PC5 zapala mi się ostatnia PC5 i już nie gaśnie. Troszkę się zagubiłem, bo nie rozumiem błędy w tym kodzie. Po dojściu do wartości 4 powinien wykonać się kod wewnątrz pętli if. Mógłby ktoś to mi troszkę objaśnić ?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2016, o 21:08 
Offline
Użytkownik

Dołączył(a): 16 sty 2015
Posty: 84
Pomógł: 6

jaki ma być cel tego programu ?
w tym momencie jest tak że przy każdym obrocie pętli ustawia number na portB a w tej jednej jedynej iteracji kiedy i jest równe 4 wrzuca number na portC (ale w tej samej iteracji wcześniej wrzuca też na portB)
Prawdopodobnie chciałeś coś takiego

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


edit. oczywiście ten kod powyżej jest źle napisany i powinno się to zrobić inaczej (choćby delay i mnożnik wyrzucić poza ifa) ale czy o takie zachowanie Ci chodziło?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2016, o 21:16 
Offline
Użytkownik

Dołączył(a): 30 paź 2014
Posty: 92
Lokalizacja: Mikołów
Pomógł: 1

a to mnie kolega ubiegł właśnie miałem napisać podobnie hehe:):)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2016, o 21:47 
Offline
Nowy

Dołączył(a): 11 lip 2015
Posty: 12
Pomógł: 0

Kombinowałem rozwiązać ten problem z dwoma pętlami "for" jedna po drugiej i dwoma zmiennymi "liczba". I prawie działało, lecz po zakończeniu migania czterech diod była przerwa 2 sekundy i kontynuacja pozostałych czterech na innych portach. W tym kodzie jak wspomniałeś, nie działa to poprawnie. To też ciężej mi to zrozumieć, przyznam iż nie za bardzo rozumiem tego kodu. Dlaczego pierwszy warunek if ma zmienić zmienną "number"? Jeśli drugi warunek ma wartość do 4 ?

Zamysł jest taki aby kolejno zapalały się wszystkie diody od lewa do prawa. Lecz 4 diody są na portach PB a pozostałe diody na portach PC. I to mi przysporzyło kłopot.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2016, o 22:18 
Offline
Użytkownik

Dołączył(a): 16 sty 2015
Posty: 84
Pomógł: 6

nie działa to znaczy co się dzieje? to co faktycznie może nie działać to że nie gasną ostatnie diody, ale powinno być znacznie lepiej niż w Twoim programie.

pierwszy if jest po to żeby wyrównać licznik (number) kiedy zmieniasz port na którym wyświetlasz - zobacz że jak przełączasz kończysz wyświetlać na porcieB to number ma wartość 16 jak pomnożysz *2 to będziesz miał 32 i taką liczbę wrzucasz na portC (czyli tam było to zapalenie tylko ostatniej diody (PC5) a tak na prawdę musisz zacząć liczyć od nowa - od PC2.

Z dwoma pętlami for będzie znacznie łatwiej masz rację
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


to jest bardziej czytelne dla Ciebie?

Daj sobie pomóc i opisz dokładnie co się dzieje i czego oczekujesz.

Zapisz sobie na kartce kolejne wartości jakie potrzebujesz wyświetlić na poszczególnych portach może to Ci ułatwi sprawę...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2016, o 00:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Można z użyciem tablicy:

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


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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2016, o 22:35 
Offline
Nowy

Dołączył(a): 11 lip 2015
Posty: 12
Pomógł: 0

Wiem, że metodą tablicową da się to zrobić. Po prostu ćwiczę sobie pisanie różnych opcji. Wielkie dziki, za pomoc. Ten kod jest dla mnie zrozumiały i bardzo mi to pomogło :).

PS: Tak na marginesie, po wczorajszym transporcie mojego ATB-USBASP. Chyba uszkodził mi się przełącznik. Przełączam nim, a on stale daje zasilanie na procesorek. Czy komuś się coś takiego przytrafiło ? Podejrzewam iż po wymianie będzie pracował jak wcześniej. Jakie Jakie oznaczenie ma ten przełącznik ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 22:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Cytuj:
PS: Tak na marginesie, po wczorajszym transporcie mojego ATB-USBASP. Chyba uszkodził mi się przełącznik. Przełączam nim, a on stale daje zasilanie na procesorek. Czy komuś się coś takiego przytrafiło ? Podejrzewam iż po wymianie będzie pracował jak wcześniej. Jakie Jakie oznaczenie ma ten przełącznik ?

A zaglądałeś na strony Atnela? Masz tam wszystkie potrzebne informacje. A do tej wersji programatora to nawet nie musisz wertować instrukcji, bo jest zrobiona w postaci video poradnika https://www.sklep.atnel.pl/pl/p/Programator-AVR-ATB-USBASP-4.0-MkAvrCalculator/39 :)
A o przełączniku i jego działaniu masz w tym momencie: https://youtu.be/dzV3__2l8a4?list=PLtXXWLsA5QNiI_d8fE9nAZiRnncT3lmfK&t=306. Jak zachowuje się inaczej to jest uszkodzony.

Co do wymiany przełącznika, to skontaktuj się bezpośrednio z Mirkiem na maila/skype.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lut 2016, o 16:01 
Offline
Nowy

Dołączył(a): 11 lip 2015
Posty: 12
Pomógł: 0

Zachowuje się inaczej, bo w domu jeszcze przełącznik mi chodził. Ale gdy poszedłem do pracy i wrzuciłem go do plecaka, do kieszonki to już później przełącznik przestał wyłączać i stale podaje zasilanie. Mam już ten programator z pół roku, nie wiem czy aby tu jakaś gwarancja go obejmowała, bo to raczej mechaniczne uszkodzenie. Choć nie ma fizycznych oznak uszkodzenia czegokolwiek. Dalej programuje. A może kot mi go uszkodził gdy chodził po biurku ? Tak czy inaczej stale podaje napięcie i dioda stale sygnalizuje podawanie napięcia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lut 2016, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Chyba najlepsze rozwiązanie to jest które wcześniej podałem. Mirek nie gryzie :)
Cytuj:
Co do wymiany przełącznika, to skontaktuj się bezpośrednio z Mirkiem na maila/skype.

Koszt przełącznika, to grosze. Więcej kosztuje logistyka i czas.
Przy okazji to może warto zaopatrzyć się w obudowę do ATB-USBasp. Z niej wyłącznik tak bardzo nie wystaje :)

--
Pozdrawiam,
Robert



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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