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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 20 cze 2025, o 09:19


    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: 1085
    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: 27409
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 1085
    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: 27409
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27409
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27409
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27409
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 9 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