logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

dernis 25 Kwi 2014 17:28 2133 11
REKLAMA
  • #1 13541911
    dernis
    Poziom 15  
    Posty: 148
    Pomógł: 15
    Ocena: 40
    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: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 13603644
    dernis
    Poziom 15  
    Posty: 148
    Pomógł: 15
    Ocena: 40
    czy nikt nie jest mi w stanie pomoc??
  • REKLAMA
  • #3 13604827
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 51
    dernis napisał:
    czy nikt nie jest mi w stanie pomoc??

    Na zachętę :D

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #4 13610646
    dernis
    Poziom 15  
    Posty: 148
    Pomógł: 15
    Ocena: 40
    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.
  • #5 13611315
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 51
    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ł.
  • #6 13612665
    miro340
    Poziom 13  
    Posty: 38
    Pomógł: 7
    Ocena: 18
    A Fusebity zostały skonfigurowane?
    No i tak jak zumek napisał, pisz program i testuj małymi kawałkami.
  • #7 13617845
    dernis
    Poziom 15  
    Posty: 148
    Pomógł: 15
    Ocena: 40
    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.
  • Pomocny post
    #8 13626035
    miro340
    Poziom 13  
    Posty: 38
    Pomógł: 7
    Ocena: 18
    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ą.
  • #9 13626585
    dernis
    Poziom 15  
    Posty: 148
    Pomógł: 15
    Ocena: 40
    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.
  • Pomocny post
    #10 13626929
    miro340
    Poziom 13  
    Posty: 38
    Pomógł: 7
    Ocena: 18
    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.
  • REKLAMA
  • #11 13628708
    dernis
    Poziom 15  
    Posty: 148
    Pomógł: 15
    Ocena: 40
    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.
  • #12 13630500
    miro340
    Poziom 13  
    Posty: 38
    Pomógł: 7
    Ocena: 18
    '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.

Podsumowanie tematu

✨ Użytkownik rozpoczął programowanie w BASCOM i zbudował tester układów scalonych AVT2709 B, programując AT89C55WD, który działa poprawnie. Po próbie zaprogramowania ATmega162, wyświetlacz nie reaguje, a porty nie pokazują odpowiednich stanów. Użytkownik zmieniał częstotliwość kwarcu, ale to nie przyniosło rezultatów. Otrzymał sugestie, aby pisać program małymi krokami, zaczynając od uruchomienia wyświetlacza LCD, oraz aby upewnić się, że fusebity są poprawnie skonfigurowane. Wskazano również na różnice między procesorami AT89C55WD i ATmega162, co może wpływać na działanie testera. Użytkownik planuje oddać projekt bardziej doświadczonemu koledze.
Wygenerowane przez model językowy.
REKLAMA