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 9 cze 2025, o 12:43


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
    Autor Wiadomość
    PostNapisane: 15 lut 2012, o 19:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    Witam, niedawno zacząłem naukę języka C bo z techniku elektronicznego nie udało mi się wynieść żadnego języka programowania...
    Przy nauce pomocna jest mi książka Pana Mirka.
    Zatrzymałem się na przerwaniach oraz multipleksowaniu 4 wyswietlaczy, jak w przykładzie z książki.
    Jedynymi różnicami które są w moim przypadku to anody podłączone do PORTD (PD2...PD5)
    oraz katody zajmujące cały PORTB.
    Problem polega na tym że działają tylko 2 ostanie wyświetlacze ( 3, 4)
    Próbowałem zmieniać kolejności w d_led.h
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Z problemem walczę od wczoraj, proszę o pomoc jeśli trzeba jakiś dodatkowych informacji to proszę pisać.

    //edit. Zapomniałem napisać że atmege napędzam kwarcem 8MHz (fusy dobrze ustawione) dzielnik przez 8 wyłączony.

    Pozdrawiam
    KoreX



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2012, o 21:03 
    Offline
    Nowy

    Dołączył(a): 26 paź 2011
    Posty: 12
    Pomógł: 0

    Proponowałbym sprawdzić problem w sposób czysto elektryczny.
    Podłącz pod PD2 i PD3 zwykle diody LED poprzez R300 ohm i spróbuj to zrobic na samych wyprowadzeniach AVR-a.
    W ten sposób wyeliminujesz brak przejścia na płytce stykowej ( tanie płytki często mają lekko skorodowane styki).
    W przeciwnym wypadku masz błąd w kodzie - sygnał na segmenty jest podawany w innym momencie niż na anody.
    Pozdrowionka.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2012, o 21:30 
    Offline
    Moderator
    Avatar użytkownika

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

    Zmiana kolejności anod nie ma tu znaczenia - ale czy wprowadziłeś odpowiednie poprawki do kodu w przerwaniu ? Tam jest klucz do sukcesu a coś mi się wydaje że ty tylko podmieniłeś piny w tych definicjach i teraz dziwisz się, że nie działa ? :(

    _________________
    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: 15 lut 2012, o 22:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    jesli chodzi o timer0 to sprawdzalem noty i rejestry sie zgadzaja. jesli chodzi o obsluge przerwania to probowalem wpisac na sztywno 0 na port anod i wtedy swiecily wszystkie segmenty.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2012, o 23:09 
    Offline
    Moderator
    Avatar użytkownika

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

    Eeee no na sztywno to można wiesz gdzie leżeć ;) .... a nie wpisywać na port anod ;)

    Pokaż że Pan co tam wymodziłeś w tym przerwaniu - bo to pokaże czy w ogóle zrozumiałeś zasadę sterowania takim wyświetlaczem ..... i wtedy spróbujemy coś pomóc OK ? bo tak w ciemno to można sobie gdybać i gdybać na 20 stron a i tak nic to nikomu nie da..... chyba że wróżka się znajdzie. No trzeba się w takich przypadkach jakimś kodem podeprzeć zadając takie pytanie.

    _________________
    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: 15 lut 2012, o 23:14 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

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


    zmienna licznik po kolei przyjmuje wartosc 1,2,4,8 (dzieki przesunięciom) i zapala nam kolejne wyswietlacze.
    U mnie 2 pierwsze nie świecą a na 2ch ostatnich cyfry są odwrotnie ( na 3cim widać cy4 a na 4tym cy3)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2012, o 23:38 
    Offline
    Moderator
    Avatar użytkownika

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

    No i tak jak myślałem - pytanie teraz - czy rozumiesz zasadę jak to się dzieje, że zapalane są te kolejne anody wyświetlaczy ???? bo z tego widać że chyba w ogóle ?

    Masz rację, że zmienna licznik przyjmuje wartości 1,2,4,8 .... a jak to się ma do pinów na których ty podłączyłeś swoje anody ???? No przecież ma się to NIJAK .... poza tym, że jest to prawidłowy efekt, że dwa pierwsze ci się nie świecą przy takim kodzie a w ostatnie wyświetlają nie to co trzeba

    Niestety ale wygląda na to, że ty na razie dokonujesz zmian w kodzie na zasadzie takiej:

    "hmmm może tą linijkę skasuję i może się uda pomimo to że podłączam anody inaczej"

    nie mam racji ? ale tak szczerze

    napisz mi np dlaczego jeśli anody byłyby podłączone tak jak to opisane w książce to by się zapalały ??? z czego to konkretnie wynika ? hmmm?

    _________________
    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: 15 lut 2012, o 23:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    Juz wiem, ale gafa... Anody w książce są na 4rech pierwszych kolejnych pinach portu...
    Z tym przepisuje/kasuje bezmyślnie to nie ma Pan racji bo nie o to w tym chodzi, ale no widać że nie mam jeszcze nawyków i nie widzę błedów na pierwszy rzut oka które dostrzega wieloletni programista:)

    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2012, o 23:49 
    Offline
    Moderator
    Avatar użytkownika

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

    Wcale nie miałem na myśli że coś tam przepisujesz czy kasujesz bezmyślnie, nie wiem co niektórzy się tak zaraz honorem unoszą. Przecież staram się naprowadzić na problem a nie go podać na talerzu i jak widać się udało chyba ? A to czasem lepiej niż wprost ręką pokazać - bo dzięki temu że sam znajdziesz babola - na drugi raz lepiej będziesz się w tym orientował - tak mi się przynajmniej wydaje.

    A to że anody w książce są na 4 pierwszych pinach to wynika nawet nie z ustawień w pliku nagłówkowych tylko chociażby z wartości krążącego licznika. Przecież 1,2,4,8 - odpowiadają kolejno bitom: 0,1,2,3 zgadza się ? Warto nawet pod tym kątem czasem na kod patrzeć.

    _________________
    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: 15 lut 2012, o 23:51 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    Zgada się, nie unoszę się wcale honorem, jestem bardzo wdzięczny za naprowadzenie na rozwiązanie problemu który drugą noc nie dawał mi spać:]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2012, o 23:56 
    Offline
    Moderator
    Avatar użytkownika

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

    A no to ok ;) jak coś to śmiało pytaj 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: 15 lut 2012, o 23:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    to pytam dalej, gdybym licznik startował od wartości 4 i wartość tą ustawiał na nim gdy licznik >32 a zamiast 1,2,4,8 ustawił w warunkach 4,8,16,32 to rozwiązanie zadziała w moim przypadku, dobrze kombinuję?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 lut 2012, o 00:23 
    Offline
    Moderator
    Avatar użytkownika

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

    Bardzo dobrze kombinujesz i teraz widzę że już zaskoczyłeś dobrze o co chodzi ale ...

    ale jedno ważne ALE ..... bo widzę, że w kodzie przerwania zaremowałeś bardzo WAŻNĄ linię

    Kod:
    //ANODY_PORT = (ANODY_PORT & 0xF0) | (~licznik & 0x0F); 


    A za to na początku przerwania zamiast wykasować wszystkie ANODY to ty tam sobie niefrasobliwie przypisujesz na cały port zanegowaną wartość licznika.

    Przeczytaj sobie w książce z czym to się wiąże i jakie dwa babole popełniasz. Wprawdzie wyświetlanie niby ci działa ale:

    1. będziesz miał zjawisko "duszków" na wyświetlaczu
    2. niszczysz zawartości innych nie używanych pinów portu na którym są ANODY !!!! to już bardzo źle ...

    a właśnie taki sposób jak w książce pokazałem - to nie na darmo - bo później ludzie piszą na różnych forach pytania typu:

    "a od czego na moim wyświetlaczu w ciemności widać takie jakby duszki czy smużenie ???"

    albo

    "a dlaczego inne piny portu zmieniają swoje wartości - tam gdzie mam podłączone anody???"

    jeszcze raz polecam - poczytaj o tym dokładnie - bo w tej linii gdzie ty sobie niefrasobliwie teraz przypisujesz licznik a nawet (o zgrozo komentarza nie zmieniłeś było tak)

    Kod:
    ANODY_PORT = (ANODY_PORT & 0xF0);   // wygaszenie wszystkich wyświetlaczy


    zresztą zawsze oryginał kodu źródłowego znajdziesz na DVD

    _________________
    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: 16 lut 2012, o 10:37 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2012
    Posty: 193
    Pomógł: 6

    Mam tego pełną świadomość, skracałem kod do jak najprostszej wersji(taka jak na początku w książce) i dlatego wygaszałem anody negacją całego portu z którego używam tylko 4rech pinów;)
    Ale dziękuję za uwagę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 lut 2012, o 12:03 
    Offline
    Moderator
    Avatar użytkownika

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

    A no tak - jak coś nie wychodzi to się zawsze skraca tak byle by w podstawowy sposób działało ;) ....

    _________________
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Majestic-12 [Bot] 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO