Witam 1 post z cyklu "Hello World" a potem do sedna...
Mówią mi Janek, mam przerwę w studiowaniu, odpoczywam od gorączki studiowania inf. z PWr. Kodzę co nie co w Javie (silniejszy w tym jestem niż w C), kodziłem w asmie do AVR(gotowy zestaw, i od razu miłość do 8-bitowców) w innych wynalazkach kodziłem także, powróciłem do C na rzecz AVR. Skrótem pojęcie mam o programowaniu, gorzej z elektroniką (ukłon w stronę blogu Mirka), obie książki też niczego sobie.
Technikalia:
Prog: USBasp "mirkowy"
IDE: Eclipse
Układ:
- Kostka z Ledów, (na tym etapie brak biblioteki, ale testy wykazały że działa z poziomu mikrokontrolera
- 3 micro switche, (biblioteka zaczerpnięta z innego blogu, drgania styków, repetytacja i te sprawy, w każdym razie działa i nic się nie gryzie)
- LCD HD44780 (biblioteka mirkowa)
- Zewn. kwarc 16MHz
- Zasilanie z programatora z łącza hybrydowego eSATA/USB na lapku - 0 problemów
- wpięte 2 diody jedna w linie MISO (chce widziec z poziomu płytki stykowej ze coś się programuje), druga w pieta w zasilanie, ot miło podczas kodzenia nocnego jak mi świeci
- Fusebity: JTag wyłaczony, i ustawiony zewn. oscylator
Problem:
Programuje jakoś od 6-7 dni teraz na jednej ATmedze 16 tak jakoś wychodzi że po 16 h dzien w dzien ( a co wolne mam
zagranicą w ciepłym jest mi lepiej).
Program się rozbudował chcę sterować kostkę za pomocą różnych efektów (czyli pwm, timery pójda w ruch, książki jeszcze bardziej), ale na razie kostki nie ruszałem mocniej aniżeli odpalić czy działa i czy układ wytrzymuje prądowo. Na obecnym etapie kostka nie jest włączana. Inicjacja ATmegi polega na wypuszczeniu na wszystkie piny stanu wysokiego (cos tam Mirek wspominał o Hi-z, tworzących się antenkach...) a potem od razu inicjalizacja i ustawienia peryferiów, na odpowiednie by chodziło.
Klawiaturka i ekran działa bez zarzutów i już mnie wszystko słucha jak chce. Na razie wszystko chodzi na głównej pętli, pewnie z czasem dojdą przerwania.
Do Sedna:
Ładowanie wsadu odbywało się bez problemów. Po n-tej próbie odpalenia tandemu kompilacja-wsad i sprawdzeniu czy poruszanie się po menu z tablicy C-stringowej dziala prawidlowo za chwilę zrobiłem reset sprzetowy (też n-ty raz) iii...
załadował sie znak zachety na LCD (prawidłowo) po czym cyk na klawisz iiii... klawisze odmawiają posłuszeństwa. No to guzik RESET i jeszcze raz.
LCD załadował się cały w kwadraty o_0... myślę zasilanie wyłacz poczekaj pól minuty i włącz. EFEKT: LCD zapelniony kwadratami o_0 wciąż.
Eclipse nie może załadować nagle tego samego wkładu co przed chwilą. MkAVR nie może wykryć uC, na USBasp dioda od MISO czerwienieje ze złości i wyłączyć się inaczej niż wyciągnąć z zasilania nie da rady. Ponowne próby odpalenia to fiasko. A avr dude się sypie(nie odpowiada)
Reset kompa. MkAVR czyta uC o_0 (cud?!) czyszczenie fusow i pamieci, a potem wgranie wsadu z eclipsa. Odpalam... DZIAŁA
po czasie dosłownie pare kompilacji i 2 wsady. Ponowna próba i nagle znowu układ przestaje mnie słuchać tak samo jak wczesniej (zapelniony LCD i brak odpowiedzi z klawiszy), eclipse też nie może w grać i MKAvr też się śmieje że nie może znaleźć uC??
Mam na szczęście nowiuśką Atmege, fusy, wsad i na razie działa.... nie ma problemów.
Na obecnym układzie na płytce stykowej "stara" atmega działała bez problemów, wcześniej na niej pracowałem (rok temu) też dosłownie tydzien, ale dużo na niej nie robiłem.
Nowa ATMEGA też działa...
Pytania:
1) Czy atmega mogła paść?
2) Czy zabawa programowa pod tytułem:
Wychodziłem poza zakres tablicy C-stringowej w przód i w tył (pod koniec dodałem granice, zmęczenie dało się we znaki i podstawy poszły spać), gdzie było wyświetlane na LCD co w RAMie piszczy (debugowanie obsługi klawiszy) mogło wpłynąć na zmianę parametrów uC?
2a) Jeśli tak to czemu po udanej próbie komunikacji z uC przywróceniu ustawień domyślnych, ustawieniem na nowo fusów i wgranie wsadu potem znowu się rozssypał (mimo że już obsługa graniczna była), mogło tak mocno nadpisać RAM ? (sieje może Herezje ale po długich nocach i godzinach człowiek głupieje).
Mając na myśli RAM mówię o adresach moich zmiennych i wyświetlaniu z tej pamięci, także w tej pamięci siedzą ustawienia uC.