ATNEL tech-forum https://forum.atnel.pl/ |
|
Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń https://forum.atnel.pl/topic23024.html |
Strona 1 z 1 |
Autor: | dikens [ 14 kwi 2020, o 08:33 ] |
Tytuł: | Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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 ??? |
Autor: | Jarecki [ 14 kwi 2020, o 08:42 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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ć |
Autor: | mirekk36 [ 14 kwi 2020, o 09:40 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | dikens [ 14 kwi 2020, o 12:14 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. https://youtu.be/_7PLz0DVD0s |
Autor: | Jarecki [ 14 kwi 2020, o 13:06 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
Co to jest DB? Dlaczego znajduje się w tablicy cyfr? Po co zmieniać G z DB? Poza tym raz piszesz DB a raz BD |
Autor: | dikens [ 14 kwi 2020, o 13:25 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | auers [ 14 kwi 2020, o 14:04 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | mirekk36 [ 14 kwi 2020, o 14:19 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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 |
Autor: | dikens [ 14 kwi 2020, o 14:45 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
Działa, dzięki. Wypróbowałem i jeden i drugi przykład. A co z zamianą portów na anodach wyświetlacza? |
Autor: | mirekk36 [ 14 kwi 2020, o 16:25 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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 |
Autor: | mirekk36 [ 14 kwi 2020, o 19:46 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
Masz może Bluebooka ? https://atnel.pl/mikrokontrolery-avr-jezyk-c.html |
Autor: | dikens [ 14 kwi 2020, o 19:50 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
mam w wersji papierowej....gdzieś się pogubiłem, i ruszyć z miejsca nie mogę. |
Autor: | mirekk36 [ 14 kwi 2020, o 20:01 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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 |
Autor: | dikens [ 14 kwi 2020, o 20:26 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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 |
Autor: | auers [ 14 kwi 2020, o 20:50 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
dikens napisał(a): Skąd kontroler bierze numer portu |
Autor: | dikens [ 14 kwi 2020, o 20:59 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
auers napisał(a): 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 |
Autor: | auers [ 14 kwi 2020, o 21:00 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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) |
Autor: | dikens [ 14 kwi 2020, o 21:10 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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 |
Autor: | auers [ 14 kwi 2020, o 21:17 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | dikens [ 14 kwi 2020, o 21:21 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
W tym właśnie problem że jakiekolwiek zmiany w tych ustawieniach nic nie dają. I to jest zagadka dla mnie |
Autor: | auers [ 14 kwi 2020, o 21:23 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
Pokaż jak to zmieniłeś. A jak chcesz na sztywno to wpisz tak jak wcześniej Ci policzyłem 0x3C a nie 0x0C, |
Autor: | auers [ 14 kwi 2020, o 21:38 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | dikens [ 14 kwi 2020, o 21:45 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | auers [ 14 kwi 2020, o 21:53 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
Już wiem gdzie masz problem. Sprawdż to> 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. |
Autor: | dikens [ 14 kwi 2020, o 21:56 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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. |
Autor: | auers [ 14 kwi 2020, o 22:13 ] |
Tytuł: | Re: Multipleksowanie LED - ćwiczenie - zmiana wyprowadzeń |
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ę. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |