Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Relpol
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega 16 - Prośba o sprawdzenie kodu [język C]

lewytolewy 02 Mar 2014 04:44 1152 5
  • #1 02 Mar 2014 04:44
    lewytolewy
    Poziom 19  

    Witam opiszę w czym tkwi problem, zaprojektowałem i wykonałem układ sterujący dwoma siłownikami- wykorzystuję do tego rygle samochodowe. Odpowiadają one za nastawianie przełożeń w pewnej przekładni.

    Założenia projektu:
    2 przyciski- wyższy bieg, niższy bieg
    7-segmentowy wyświetlacz LED wskazujący aktualną pozycję. Co to znaczy? Ano tylko tyle, że gdy naciskamy + na wyświetlaczu dostajemy 1,2,3,4,5 gdy minus 5,4,3,2,1. Oczywiście gdy np jesteśmy na stanie wyświetlacza 3 i naciskamy - to otrzymamy 2 i analogicznie gdy mamy 3 i naciśniemy + dostaniemy 4. Zakres to 1-5.
    2 elektromagnesy załączające się w zależności który przycisk naciśniemy
    czujnik biegu- sprzężenie zwrotne pozwalające sprawdzić czy po wyzwoleniu siłownika bieg wszedł czy też nie udało się go wbić. W wypadku gdy się nie powiodło stan wyświetlacza zostaje niezmieniony. Płytkę i schemat sprawdziłem 150 000 razy i tam błędów nie stwierdziłem. Wyświetlacz to wyświetlacz ze wspólną katodą- sterowany 1kami z procesora. Siłowniki wyzwalane są 0-1kowo za pomocą 2 mosfetów.

    Przyciski podłaczone do JP2, JP5 obsługuje wyświetlacz, JP7 siłowniki natomiast JP3 odbiera sygnały z czujnika biegu- aktualny bieg daje stan wysoki na odpowiedni pin złącza, tam do działania wkraczają transoptory które złączają odpowiednie piny procesora do masy.

    Może tutaj gdzieś leży błąd? Może w kodzie odczytywane są np stany wysokie a nie niskie a wszystkie piny idące od procesora do transoptora nie mają włączonego wewnętrznego podciągania do VCC?



    Na czym polega problem?
    Po podłączeniu zasilania nic się nie grzeje napięcia są ok jednak na wyświetlaczu palą się wszystkie segmenty (łącznie z kropką...) oprócz segmentu d. Gdy naciskam przyciski nie dzieje się nic, nie załączają się ani mosfety ani nie zmienia się nic na wyświetlaczu. Nie mam pojęcia gdzie może leżeć błąd. Program praktycznie stworzył nasz forumowy kolega Kociejsko.
    Załączam wszystkie potrzebne pliki.

    Nie ukrywając, kod jest dość mocno skomplikowany, dlatego też prosiłem o pomoc osoby z forum ponieważ sam nie jestem jeszcze na takim etapie zaawansowania by to obsłużyć :<

    Pozdrawiam, Krzysiek!

    Atmega 16 - Prośba o sprawdzenie kodu [język C] Atmega 16 - Prośba o sprawdzenie kodu [język C]

    Kody:

    display:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    electro:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    gsens:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod: c
    Zaloguj się, aby zobaczyć kod


    keyboard:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod: c
    Zaloguj się, aby zobaczyć kod

    atmega 16
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod: c
    Zaloguj się, aby zobaczyć kod

    macros
    Kod: c
    Zaloguj się, aby zobaczyć kod

    system
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 5
  • Relpol
  • #2 02 Mar 2014 11:39
    Marek_Skalski
    Moderator Projektowanie

    lewytolewy napisał:
    Program praktycznie stworzył nasz forumowy kolega Kociejsko.

    Na dobry początek, kody znaków dla wyświetlacza są zanegowane. Portem dla wyświetlacza jest PORT C, a dane zapisujesz do PORT D... Dalej nie sprawdzam.
    Adresat wiadomości jest znany, więc dlaczego oczekujesz, że ktoś teraz będzie wnikał w dość dziwacznie napisany program? Jeżeli Kolega napisał program, który nie działa, to może zechce go poprawić? A jeżeli nie, to nie czekaj tylko ucz się i pisz sam.

    0
  • Relpol
  • #3 02 Mar 2014 14:09
    piotrva
    Moderator na urlopie...

    Jak pisze przedmówca - zwróć się do autora - kod jest bez komentarzy, w dodatku coś podczas wklejania Ci nie zaskoczyło, bo nie wszystkie pliki są kompletne - nie wiem czy znajdzie się ktoś, kto to będzie analizował...

    0
  • #4 02 Mar 2014 14:28
    lewytolewy
    Poziom 19  

    Staram się pracować nad swoją znajomością języka C odnośnie avr jednak no idzie to powolutku a temat jest dość palący z tego względu prosiłem kolegów z forum o pomoc z kodem. Wkleiłem na 100% tak jak jest w plikach źródłowych. Również jestem zwolennikiem samodzielnej pracy no ale pewnych rzeczy nie da się przeskoczyć bez treningu, stąd moja prośba. Oczywiście również pisałem do kolegi Kociejsko jednak dawno go na forum nie było jak na jego profilu patrzyłem stąd tutaj temat.

    0
  • #6 02 Mar 2014 15:33
    lewytolewy
    Poziom 19  

    Poprawiłem, wybaczcie przeoczenie.

    Co do poprawiania kodu to próbowałem lecz jest tak dużo plików, że nawet niezabardzo wiem jak całość skompilować w atmel studio... Poszukiwanie w internecie nie przyniosło satysfakcjonujących rezultatów...

    Marek_Skalski napisał:

    Na dobry początek, kody znaków dla wyświetlacza są zanegowane.

    Gdzie tę negację widzisz?

    Ps. Na początku tematu źle napisałem o wyświetlaczu- palą się segmenty a, b, g oraz dp.

    0