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



Teraz jest 29 gru 2024, o 03:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 29 ] 
Autor Wiadomość
PostNapisane: 14 kwi 2020, o 08:33 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Witam Wszystkich. Jestem tu nowy, więc przepraszam jeśli taki temat był a go nie znalazłem.
Rozpocząłem zabawę i naukę z mikrokontrolerami AVR i stanąłem na multipleksowaniu.
Uruchomiłem kod z książki i teoretycznie działa, lecz ja zawsze muszę "po swojemu".
Podłączając wyświetlacze pozamieniałem wyprowadzenia wyświetlacz - mikrokontroler i moje pytanie:
1. nie mogę zmienić w programie sterowania anodami z PD0-PD3 na PD2-PD5 -pomimo zmian świecą tylko 2 cyfry.
Czy kontroler ma jakoś "odgórnie" przypisanie do 0-3
2. w katodach zamieniłem miejsca i segment G mam na PB7 a DP na PB5. Kiedy w kodzie zamieniam te wyprowadzenia program sygnalizuje jakiś błąd przepełnienia.
Czy wyświetlacz zawsze musi być podłączony jak w przykładach katody A-0 .... DP-7 ???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 08:42 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

dikens napisał(a):
Witam Wszystkich. Jestem tu nowy, więc przepraszam jeśli taki temat był a go nie znalazłem.
Rozpocząłem zabawę i naukę z mikrokontrolerami AVR i stanąłem na multipleksowaniu.
Uruchomiłem kod z książki i teoretycznie działa, lecz ja zawsze muszę "po swojemu".
Podłączając wyświetlacze pozamieniałem wyprowadzenia wyświetlacz - mikrokontroler i moje pytanie:
1. nie mogę zmienić w programie sterowania anodami z PD0-PD3 na PD2-PD5 -pomimo zmian świecą tylko 2 cyfry.
Czy kontroler ma jakoś "odgórnie" przypisanie do 0-3
2. w katodach zamieniłem miejsca i segment G mam na PB7 a DP na PB5. Kiedy w kodzie zamieniam te wyprowadzenia program sygnalizuje jakiś błąd przepełnienia.
Czy wyświetlacz zawsze musi być podłączony jak w przykładach katody A-0 .... DP-7 ???


Cześć,
pokaż fragmenty kodów, gdzie dokonałeś swoich zmian to coś poradzimy. Ten wyświetlacz może być podłączony na różne piny i musi dzialać :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 09:40 
Offline
Moderator
Avatar użytkownika

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

To bardzo dobrze, że kolega chce po swojemu i temu ma służyć książka, aby rozwijać przykłady w niej zawarte - "po swojemu" - wtedy można się uczyć

dikens napisał(a):
Czy wyświetlacz zawsze musi być podłączony jak w przykładach katody A-0 .... DP-7 ???

No to już niestety pomysł z kosmosu i gdy coś tobie nie wychodzi to porzuć myśli tego typu jak to niektórzy mają, że albo mikrokontroler zepsuty, albo że może być tak i tylko tak .... to bez sensu ;) ZAMIAST tego szukaj błędów w tym co sam robisz - bo inaczej dalej nigdy nie pójdziesz....

a teraz uwaga! jeśli masz bluebooka to powiedz mi ale tak z ręką na sercu ? Przeczytałeś ty ten rozdział krok po kroku? Próbując zrozumieć o czym w nim mowa ? Bo po twoim opisie problemu wydaje mi się (ale może się tylko wydaje), że książka poszła w kąt a ty dorwałeś się do kodu którego nie rozumiesz kompletnie jak działa i próbujesz na oślep wprowadzać zmiany ...

W książce dokładnie opisuję - i to MEGA ale to MEGA dokładnie co i jak - jak można sobie dobierać porty, piny (dowolne prawie) .... jedynie na sterowanie wspólnych anod proponuję czwórkę bitów w ramach jednego portu ... pokazuję jak maskować te bity itp itd ....

Więc zacznij proszę od książki ... bo tam znajdziesz odpowiedzi na swoje pytania - a jak czegoś nie zrozumiesz z książki - to ŚMIAŁO wpadaj na forum i zadawaj pytanie konkretne - a jeśli coś podmieniasz to pokazuj fragmenty kodu - bo inaczej to są pytania do jasnowidzów - a tu takich nie ma.

_________________
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: 14 kwi 2020, o 12:14 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Przeczytałem i jakąś tam część zrozumiałem ;-). W załączeniu kawałki kodu.
To co mam problem:
1 . gdy zamieniam część wyświetlacza G z BD (teraz jest DB (1<<5) a G (1<<7) w MKCLIPE wyświetla mi błąd:
"C:\Users\Robert_2\Documents\MkClipse\AVR Toolchain\bin\avr-gcc" -Wall -Os -Wstrict-aliasing=1 -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8515 -DF_CPU=1000000UL -MMD -MP -MF"Release/d_led.d" -MT"Release/d_led.o" -c -o "Release/d_led.o" "d_led.c""
d_led.c:28:9: warning: large integer implicitly truncated to unsigned type [-Woverflow]
~(A|B|D|E|DB), // 2

2. gdy zmianiam kolejność CA1-CA4 z PA0->PA3 na PA3->PA0 cyfry nie zmieniają kolejności położenia. (opisany wcześniej przypadek dotyczył innego podłączenia, ale jeśli zmienię kolejność cyfr tu, to i uda mi się zrobić to tam)-tak myślę. ---proszę nie sugerować się opisem że to port C a ja mam PA. Podłączone jast na PA.

ObrazekObrazek

https://youtu.be/_7PLz0DVD0s



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 13:06 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1081
Pomógł: 73

Co to jest DB? Dlaczego znajduje się w tablicy cyfr? Po co zmieniać G z DB? Poza tym raz piszesz DB a raz BD



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 13:25 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Jarecki napisał(a):
Co to jest DB? Dlaczego znajduje się w tablicy cyfr? Po co zmieniać G z DB? Poza tym raz piszesz DB a raz BD


Mój błąd. to DB to miało być DP-kropka.
Chodzi o to że wyświetlacz działa jak na filmiku. ma zamienione te dwa segmenty, środek-G i kropkę. Kropka jest pod 5 a G pod 7. Jak je zamienię port 5 na 7 i 7 na 5 (czyli odwrotnie) to wywala mi błąd. nie ma znaczenia czy zrobię to w definicji bitów G na DB, czy 5 na 7, czy w tablicy znaków. Jeśli w tablicy jest określony bit 7 to jest błąd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 14:04 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

Zamiast:
~(A|B|D|E|DB), // 2
Wstaw:
(~(A|B|D|E|DB)) & 0xff ,
Aczkolwiek przypadek ciekawy. Pewnie chodzi o domyślną promocję do int.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 14:19 
Offline
Moderator
Avatar użytkownika

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

auers napisał(a):
Aczkolwiek przypadek ciekawy. Pewnie chodzi o domyślną promocję do int.

Tak dokładnie o to chodzi w jakimś poradniku a także na forum już to nie raz opisywałem ;) bo stałe dosłowne domyślnie też są traktowane jako uint16_t

inne rozwiązanie to jawne rzutowanie

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

_________________
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: 14 kwi 2020, o 14:45 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Działa, dzięki. Wypróbowałem i jeden i drugi przykład.

A co z zamianą portów na anodach wyświetlacza?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 16:25 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
A co z zamianą portów na anodach wyświetlacza?

Możesz działać dla czwórkami - żeby ci było łatwiej maskować, a później jak poćwiczysz maskowanie i dokładnie zrozumiesz - zresztą tu masz poradnik:



to możesz sobie je dać na DOWOLNE bity portu a nawet na różne porty, czemu nie ;) tylko poza maskowaniem będziesz musiał jeszcze inaczej skonstuować przełączanie wspólnych anod a nie tak jak jest teraz w BB

_________________
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: 14 kwi 2020, o 19:40 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Obejrzałem, przeczytałem.....i chyba do tego nie dorosłem :oops:

Wg mojego rozumowania port anody jest określony w d_led.c i maskowany MASKA_ANODY.
MASKA_ANODY zdefiniowane jest w d_led.h jako CA1,CA2,CA3,CA4. a CA zdefiniowane jako porty PD0-PD3. czyli dla CA1 to PD0 a ja potrzebuję PD5. Niestety zmieniając port nic się nie zmienia.

Ale widać jestem w błędzie, albo coś przeoczyłem (czyt.nie rozumiem) :(

ObrazekObrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 19:46 
Offline
Moderator
Avatar użytkownika

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

Masz może Bluebooka ?

https://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: 14 kwi 2020, o 19:50 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

mam w wersji papierowej....gdzieś się pogubiłem, i ruszyć z miejsca nie mogę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 20:01 
Offline
Moderator
Avatar użytkownika

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

No to na spokojnie - spróbuj zadawać po kolei pytania odnośnie tego - czego nie rozumiesz - bo jak się zatniesz gdzieś w środku to później ciężko iść dalej

_________________
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: 14 kwi 2020, o 20:26 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

W książce jako przykład mamy maskę anody 0xF0 co w połączeniu z licznikiem daje porty 0-3 domyślam się że zmieniając 0xF0 zmieniam wynik operacji licznika. Ale w programie mamy MASKA_ANODY ale to jesz zdefiniowane jako #define MASKA_ANODY (CA1|CA2|CA3|CA4) a CA zdefiniowane jako porty PD1-PD3. teoretycznie odpowiadać to powinno 0xF0, ale zmiana tego portu PD nie daje żadnych efektów i tu mam problem. Skąd kontroler bierze numer portu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 20:50 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

dikens napisał(a):
Skąd kontroler bierze numer portu

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 20:59 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

auers napisał(a):
dikens napisał(a):
Skąd kontroler bierze numer portu

Obrazek


To wiem. Nie chodzi mi o definicje całego portu a poszczególnych bitów. W tej chwili działa 4 cyfry na PD0-PD3, a muszę mieć PD5-PD2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:00 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

Chyba trochę źle przeliczasz.
Skoro MASKA_ANODY (CA1|CA2|CA3|CA4) gdzie Ca to PD0-PD3 to otrzymasz 0x0F a nie 0xF0

------------------------ [ Dodano po: 2 minutach ]

Dla PD2- PD5 otrzymasz 0b00111100 = 0x3C
tylko nie ma potrzeby tego przeliczać, po to stosujesz maski w postaci : MASKA_ANODY (CA1|CA2|CA3|CA4)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:10 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

0F to cytat z książki. u mnie jest faktycznie F0.
Gdy zamiast (CA1|CA2|CA3|CA4) wstawię (0xF0) to jest to samo.
Nie potrafię tego zmienić żeby zapaliły mi się 4 cyfry. 3cia i 4ta to 0x04 i 0x08. Gdy wpiszę 0x0C to mam to samo jak przy 0xF0 Brakuje mi sterowania 1 i 2 cyfrą które sa podłączone pod PD5 i PD4

------------------------ [ Dodano po: 3 minutach ]

tylko nie ma potrzeby tego przeliczać, po to stosujesz maski w postaci : MASKA_ANODY (CA1|CA2|CA3|CA4)[/quote]

I w tym problem że tego nie mogę zmienić, a (CA1|CA2|CA3|CA4) było by najlepsze.
Nie mogę dojść z definiowaniem CA.... bo jakoś nic się nie zmienia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:17 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

Chyba sam sobie tworzysz problem.
Skoro masz definicje typu CA1 (1<<PD0).
To zamień je na te piny z których korzystasz, bo jak na sztywno wpisujesz 0xF0 to nie dziw się, że nie działa skoro 0xF0 odpowiada pinom PD4-PD7.A ty chcesz z PD2 i PD3.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:21 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

W tym właśnie problem że jakiekolwiek zmiany w tych ustawieniach nic nie dają. I to jest zagadka dla mnie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:23 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

Pokaż jak to zmieniłeś. A jak chcesz na sztywno to wpisz tak jak wcześniej Ci policzyłem 0x3C a nie 0x0C,



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:29 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Obrazek

mógł bym wziąć lutownicę, kawałek przewodu i po problemie, ale chyba nie o to chodzi. Muszę to zrobić programowo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:38 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

A sprawdziłeś połączenia. Tu nie ma filozofii jak nic więcej nie namieszałeś to powinno działać.
W programie nie ustawiłeś jakiś innych funkcji które przypadkiem korzystają z tych PINów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:45 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Nie. Dla testów mam czysty plik przykład z ksiązki. Wyprowadzenia sprawdzone programowo jako led, element po elemencie.

W rozbudowanym kodzie mam 2 wyświetlacze 4 cyfrowe. drugi jest fizycznie podłączony pod PA0-PA3. tak jak powinno być, i jest ok. ALE!! gdy w tych ustawieniach zmienię kolejności PA0-PA3 w różne kombinacje, to też nic się nie zmienia pracuje cały czas tak samo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:53 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

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

Mogłem się rąbnąć piszę z głowy bez możliwości sprawdzenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 21:56 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

ANODY_PORT = (ANODY_PORT & ~MASKA_ANODY) | (~licznik & MASKA_ANODY);

U mnie jest tak. Zaraz zobaczę Twoje.

------------------------ [ Dodano po: 7 minutach ]

Prawie działa...tylko jest na odwrót i zamienić nie mogę kolejności

https://youtu.be/eJdjed0pulQ

powinny liczyć tak samo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 22:13 
Offline
Użytkownik

Dołączył(a): 11 sty 2015
Posty: 166
Pomógł: 24

No to daj lusterko (taki żarcik).
Tam gdzie masz if'y z licznikiem w tablicach musisz się odwołać do cyfr w odwrotnej kolejności.
Pokombinuj, dasz sobie z tym radę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2020, o 22:20 
Offline
Nowy

Dołączył(a): 11 mar 2020
Posty: 18
Pomógł: 0

Obrazek

Dałem radę. zamieniłem cyfry w procedurze przerwań, choć nie do końca o to mi chodziło. Ale zadziałało, więc bawię się dalej.

Dziękuję za pomoc.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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