Dogadałem się w końcu z możliwością zaprogramowania ATmegi128.
Ale mam kolejny problem: program nie rusza.
Przy symulacji w BASCOM AVR idzie prawidłowo.
Może jest zbyt mały dla pamięci 128kB? Nie wiem.
Oto listing:
-----------------------------------------------------------
$regfile = "m128def.dat"
$crystal = 8000000
Dim I As Integer
Dim A As Byte
Config Portd = Output
A = 99
Portd = A
For I = 1 To 256
Waitms 55
A = A - 1
Portd = A
Next I
End
-----------------------------------------------------------
Zmienna A = 99 jest po to, abym na porcie (diody LED) mógł zobaczyć, czy wpisuje mi się zadana wartość. Ano wpisuje się. Dla: A = A + 1 też nie szło.
Do porgramowania używam PonyProg2000, robię to przez linie PDI, PDO SCK i RESET.
Czy ktoś wie, jak to ruszyć?
Z góry dziękuje za radę.
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięuP ATmega128 - dlaczego nie "ruszył"?
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
?!Może jest zbyt mały dla pamięci 128kB?
Czy PonyProg przechodzi bez protestów etap weryfikacji kodu załadowanego do Flash-a?Do porgramowania używam PonyProg2000, robię to przez linie PDI, PDO SCK i RESET.
Jak ustawiłeś FuseBit-y?
A w szczególności, czy wyłączyłeś "ATMega103 Compatibility Mode"?
Patrz np.: http://avrside.ep.com.pl/ -> Porady
"Atmega 128 jest dostarczona z zaprogramowanym trybem kompatybilności z modelem 103, z czym wiąże się mniejszy obszar RAM oraz niedostępność rozszerzonych rejestrów. Avr-gcc samoczynnie inicjalizuje stos na końcu RAM - a więc w trybie kompatybilności poza rzeczywiście dostępnym sprzętowo obszarem. Objawia się to trudnym do zinterpretowania wywracaniem się programu przy pierwszym przerwaniu czy wywołaniu funkcji, chociaż pierwsze testy wykazały poprawność pracy układu. "
--
MDz
Spróbuj po zaprogramowaniu mikrokontrolera odczytać jego Flasha i porównać z tym co masz po kompilacji. To raz.
De facto zawsze do programowania używam linii MOSI, MISO, SCK i Reset.
Dwa - ustawiłeś prawidłowo Fusebity?
Trzy - po setnym kroku A przyjmie wartość ujemną. Jak chcesz na port wyrzucić taką liczbę, bo z tego co się orientuję może ona przyjąć wartość od 0 do 255. De facto typ zmiennej który użyłeś (Byte) jest tylko i wyłącznie z tego zakresu.
Cztery - na początek zrób pętlę od 1 do 50 tak, a zamiast waitms55 wpisz Wait 1, no chyba, że Twoje oko jest tak sprawne, że zdąży zauważyć zmiany następujące po sobie co 55ms
Pozdrawiam
De facto zawsze do programowania używam linii MOSI, MISO, SCK i Reset.
Dwa - ustawiłeś prawidłowo Fusebity?
Trzy - po setnym kroku A przyjmie wartość ujemną. Jak chcesz na port wyrzucić taką liczbę, bo z tego co się orientuję może ona przyjąć wartość od 0 do 255. De facto typ zmiennej który użyłeś (Byte) jest tylko i wyłącznie z tego zakresu.
Cztery - na początek zrób pętlę od 1 do 50 tak, a zamiast waitms55 wpisz Wait 1, no chyba, że Twoje oko jest tak sprawne, że zdąży zauważyć zmiany następujące po sobie co 55ms
Pozdrawiam
Ale nie w ATMega128 (i bodajze 64). Ten µC programuje się z użyciem linii TxD0/RxD0 a nie SPI. Przeoczenie tego szczegółu jest chyba jednym z częściej popełnianych błędów.De facto zawsze do programowania używam linii MOSI, MISO, SCK i Reset.
I tak być powinno.Do porgramowania używam PonyProg2000, robię to przez linie PDI, PDO SCK i RESET.
RXD0/(PDI) PE0,
TXD0/(PDO) PE1
--
MDz
Dzięki za rady!!!
Odpowiem, co takiego robiłem:
- fusebitów nie ruszałem
- w datasched wyczytałem, że trzeba programować przez PDI, PDO; przez MISO, MOSI nie szło
- procesor programuję szeregowo z pomocą układu MM74HC244N/MC74HC244N
- PonyProg2000 weryfikuje (bardzo powoli) i daje komunikat, że jest OKI
Jeżeli mam za mały czas (55 ms) to i tak przy około 90-ciu zmianach będzie to trwało: 90 x 55 ms = 4,95 sek. To powinienem zauważyć. Pierwotnie startowałem od 0 i dodawałem 1 w pętli do 256.
Nie poszło, zacząłem więc kombinować.
Dla A = 0 wszystkie diody na porcie d świeciły (to mógł byc jakiś błąd), dla A = 255 żadna nie świeciła, stąd wziąłem inną wartość A, aby "zobaczyć ją binarnie" na porcie.
Teraz wiem, że program idzie do momentu pętli i dalej nie rusza.
Nie porównywałem jeszcze odczytu pamięci procesora z plikiem .hex skompilowanego programu. Napiszę, jak to zrobię.
Pisząc o "małym" programie miałem na myśli komunikat z BASCOMa 0 % użytej pamięci flash (w domyśle NIC). Dalej wyczytałem, że jest to 0,16 %. Po zaokrągleniu daje 0%.
Będę wdzięczny za rady i oczywiście sam też będę kombinoiwał z przerwami na . A wiem, że musi mi to ruszyć!!!
Pozdrawiam!!!
Odpowiem, co takiego robiłem:
- fusebitów nie ruszałem
- w datasched wyczytałem, że trzeba programować przez PDI, PDO; przez MISO, MOSI nie szło
- procesor programuję szeregowo z pomocą układu MM74HC244N/MC74HC244N
- PonyProg2000 weryfikuje (bardzo powoli) i daje komunikat, że jest OKI
Jeżeli mam za mały czas (55 ms) to i tak przy około 90-ciu zmianach będzie to trwało: 90 x 55 ms = 4,95 sek. To powinienem zauważyć. Pierwotnie startowałem od 0 i dodawałem 1 w pętli do 256.
Nie poszło, zacząłem więc kombinować.
Dla A = 0 wszystkie diody na porcie d świeciły (to mógł byc jakiś błąd), dla A = 255 żadna nie świeciła, stąd wziąłem inną wartość A, aby "zobaczyć ją binarnie" na porcie.
Teraz wiem, że program idzie do momentu pętli i dalej nie rusza.
Nie porównywałem jeszcze odczytu pamięci procesora z plikiem .hex skompilowanego programu. Napiszę, jak to zrobię.
Pisząc o "małym" programie miałem na myśli komunikat z BASCOMa 0 % użytej pamięci flash (w domyśle NIC). Dalej wyczytałem, że jest to 0,16 %. Po zaokrągleniu daje 0%.
Będę wdzięczny za rady i oczywiście sam też będę kombinoiwał z przerwami na . A wiem, że musi mi to ruszyć!!!
Pozdrawiam!!!
Przed chwilą ten mikroprocesor ruszył!!!
Dostałem sie do fusebitów i wyłączyłem "ATmega103 Compatibility Mode" oraz włączyłem "External Oscylator".
Było trochę kombinacji , a teraz będzie zabawa z programwaniem .
Wielkie dzięki za radę i pomoc!!!!!!!!!!
Pozdrawiam!
Jutro trzeba to jakoś uczcić!
kenaJ
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 18 gości