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

BASCOM - tester układów scalonych, brak reakcji po zaprogramowaniu ATMEGI162

dernis 25 Kwi 2014 17:28 1560 11
  • #1 25 Kwi 2014 17:28
    dernis
    Poziom 15  

    Witam,

    Ostatnim czasem zacząłem zajmować się programowaniem w bascomie. Złożyłem do tego celu projekt AVT2709 B, tester układów scalonych. Pobrałem wsad, zaprogramowałem AT89C55WD i wszystko ładnie działa. Chciałem rozpisać program o kolejne procedury, wzorując się na wielu podręcznikach i okrojonym pliku wsadowym, który pobrałem.
    Program napisałem pod Atmege162. Programator beeProg+.

    Problem polega na tym, że po zaprogramowaniu na wyświetlaczu nic się nie pojawia.
    Na portach nie ma nawet odpowiednich stanów. Próbowałem na obydwóch prockach.

    Proszę o pomoc i wyrozumiałość w tej sprawie i z góry mówię, że jestem początkującym programistą.

    Bascom się kompiluje i symulacja działa prawidłowo ale rzućcie okiem, bo może tutaj jest problem:



    Kod: tekst
    Zaloguj się, aby zobaczyć kod

    0 11
  • #2 15 Maj 2014 17:10
    dernis
    Poziom 15  

    czy nikt nie jest mi w stanie pomoc??

    0
  • #3 15 Maj 2014 22:07
    zumek
    Poziom 39  

    dernis napisał:
    czy nikt nie jest mi w stanie pomoc??

    Na zachętę :D

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #4 17 Maj 2014 19:24
    dernis
    Poziom 15  

    No w końcu coś się dzieje :)

    Próbowałem na wiele sposobów zmieniać częstotliwość ale zawsze i na każdym procku jest to samo. Na początku miałem 12000000, 10000000, 8000000 i żadna zmiana konfiguracja, czy też wymiana kwarcu na inny nie przyniosła rezultatów. Zapomniałem poprawić, kopiując kod źródłowy z bascoma.

    0
  • #5 17 Maj 2014 22:23
    zumek
    Poziom 39  

    dernis napisał:
    ...Próbowałem na wiele sposobów zmieniać częstotliwość ale zawsze i na każdym procku jest to samo...

    Moja propozycja brzmi:
    Pisz program małymi kroczkami, czyli zacznij od uruchomienia wyświetlacza LCD.


    PS
    Muszę Cię zmartwić, ale nawet gdyby działał LCD, to Twój tester i tak nie będzie działał.

    0
  • #6 18 Maj 2014 13:03
    miro340
    Poziom 12  

    A Fusebity zostały skonfigurowane?
    No i tak jak zumek napisał, pisz program i testuj małymi kawałkami.

    0
  • #7 19 Maj 2014 22:20
    dernis
    Poziom 15  

    Tak, zostały skonfigurowane.
    Nie wiem dlaczego miałby nie działać??

    Pisałem go długo linijka po linijce i przeczytałem każda funkcje, która została napisana, może coś przeoczyłem.
    Ale widocznie programowanie nie mi jest dane.. wiec prace oddam w ręce kolegi, który już lata w tym siedzi, bo potrzebuje tego bardzo pilnie.

    0
  • Pomocny post
    #8 22 Maj 2014 21:37
    miro340
    Poziom 12  

    Nie ma co się załamywać drobnymi niepowodzeniami. Trzeba się po prostu zastanowić co jest nie tak. Po przyjrzeniu się bliżej temu programowi nasuwają się takie uwagi:
    1 - nie pisze się programów oddzielając linie pustymi wierszami bo można od tego dostać oczopląsów
    2 - nie wiem jak program się kompilował bo w tym co tutaj zamieściłeś jest jeden błąd w sub 4518 - pętla for z=0 then next x - powinno być next z :) ale to oczywiście nie jest przyczyną nie działania programu
    3 - nie widzę tutaj pętli programu głównego. Program oczywiście działa w symulatorze ale ja bym opakował pętlą do loop end część programu wyświetlającą komunikat TESTER i wywołanie procedury Wybor. Wprowadzi to jakiś ład i skład w tym programie
    4 - No i najważniejsze. Może mi się wydaje ale problem tkwi w sprzęcie. Popatrz sobie na noty katalogowe obu procków. Przecież to są różne procesory z różnych rodzin i nie można tak na beszczela ich podmienić w układzie. Przecież widć wyraźnie, że atmega ma reset poziomem niskim a 51 stanem wysokim, więc układ nie ma prawa działać, przynajmniej wg mnie :)
    Program generalnie jest ok i rzeczywiście śmiga w symulatorze, zajmij się więc częścią sprzętową.

    0
  • #9 23 Maj 2014 02:51
    dernis
    Poziom 15  

    Bardzo dziękuje za pomoc i wskazówki, które na pewno wezmę pod uwagę. Jestem ogromnie wdzięczny. Postaram się to jeszcze poprawić i może jednak ruszy.

    0
  • Pomocny post
    #10 23 Maj 2014 10:40
    miro340
    Poziom 12  

    Mam nadzieję że poprzednie moje uwagi przyczynią się do rozwiązania problemu ale zasugeruję jeszcze jedną rzecz. Zanim jeszcze cokolwiek zrobisz z samym układem, wywal z programu wszystko oprócz konfiguracji wyświetlacza i oczywiście ustawienia typu procesora i taktowania. Następnie wyświetl sobie na wyświetlaczu dowolny napis. Nie zapomnij też wrzucić pętlę do... loop i zakończyć program instrukcją End. Wyświetlanie możesz dać przed pętlą albo w pętli - nie ma to znaczenia. Taki program nie ma prawa nie działać, chyba że uwagi dotyczące resetu procesora są słuszne, a patrząc na układ raczej tak. Przerób sobie układ resetu tak aby był zgodny z tym co potrzebują AVRy, czyli podciągnij sobie ten pin do + zasilania przez rezystor ok 10kom, a kondensator wyrzuć. Samego programu oczywiście dokładnie nie analizowałem więc nie wiem czy te wszystkie procedury są poprawne, ale to akurat w tym momencie nie jest istotne i może jeszcze wymagać dopracowania w późniejszym czasie, gdy urządzenie da już pierwsze oznaki życia :).
    Jeszcze przy okazji zapraszam na mojego bloga BascomMaster. Blog dopiero startuje ale jest już kilka, mam nadzieję ciekawych, poradników dla początkujących.

    0
  • #11 23 Maj 2014 22:41
    dernis
    Poziom 15  

    Dziękuje za link do blogu:) bardzo fajna stronka, szukałem czegoś podobnego, gdzie jest dostęp do napisanego programu, bo można szybciej pojąć niektóre rzeczy i można się z czystym sumieniem na czymś wzorować... zwłaszcza, że pewnie masz większe doświadczenie oraz pojęcie w "pisaniu" i przejrzyście wszystko wygląda.
    Wszystkie uwagi wezmę do siebie i zerknę do datasheeta dla pewności. Choć oryginalny obkrojony wsad z AVT, startował na obu procesorach. Mam procka 55WD, nie 51.

    0
  • #12 24 Maj 2014 18:01
    miro340
    Poziom 12  

    '51 to rodzina procesorów, tak samo jak AVR. AT89C55WD należy właśnie do tej rodziny.Natomiast ATmega 162 należy właśnie do rodziny AVR. Niekture procki z obu rodzin można między sobą zamieniać ale trzeba niestety napisać nowy program, no i trzeba pamiętać np. o różnicach sygnałów RST.

    0