Cześć wszystkim
Piszę z jednym problemem. Mianowicie sprawa dotyczy bootloadera w moim mikrokontrolerze (Atmega64). Mikrokontroler ten ma dwa UARTy i założenie jest takie, żeby UART0 był wykorzystywany do bootloadera, a UART1 do komunikacji z innym mikrokontrolerem. Program, który chcę wrzucić do procka to prosty program który co sekundę ma wysyłać przez UART1 literkę "a". Do obsługi transmisji RS232 wykorzystuję bibliotekę MK_UART lub nowo testowaną MK_MULTI_UART. I teraz po kolei:
1. Konfiguracja mikrokontroleraPodłączam procek do kompa, odpalam MKAVRCalculator, ustawiam fuse bity w sposób pokazany na zdjęciach poniżej:
Mikrokontroler jest taktowany zewnętrznym kwarcem 11.0592MHz.
2. Wgranie BLSaDo wgrania BLSa wykorzystuję MkBootloader. Ustawiam go w sposób pokazany na zdjęciach:
Kompiluję, wszystko przechodzi poprawnie. MkAVRCalculator wgrywa program do procka. Po wgraniu odpinam programator, podłączam do układu przejściówkę RS232. Klikam w MkBootloaderze "Info" i moim oczom ukazuje się:
Wszystko super pięknie śmiga, dioda na przejściówce (Rx lub Tx) radośnie miga, na terminalu lecą pytajniki - jest dobrze.
3. Przygotowanie programu do wgraniaTak jak wspomniałem na początku, program który chcę wgrać mikrokontrolera nie jest niczym szczególnym. Wygląda on dokładnie tak:
Testy przeprowadzam na nowej bibliotece (jednakże identyczny efekt uzyskiwałem przy użyciu wcześniejszej biblioteki MK_UART). Sama biblioteka jest dobrze skonfigurowana.
4. Wgranie programuWracam do MkBootloadera, wybieram skompilowany wcześniej z Eclipsa plik .hex, klikam "Upload hex" i uzyskuję:
Po wszystkim klikając "Info" BLS nadal normalnie się zgłasza, wszystko jest ok, dioda na przejściówce miga, w terminalu lecą pytajniki.
5. Finalny testOdpinam przejściówkę od UART0, podłączam ją pod UART1 iii...
...nie dzieje się nic. Kompletna cegła. Na UARCie nic się nie pojawia, generalna stagnacja. BLS się nadal zgłasza, pytajniki przez UART0 lecą, ale na UART1 nie pojawiają się pożądane literki "a". W celu weryfikacji wgrywam ten sam program do procesora, tym razem normalnie przez programator. Od tego momentu wszystko działa. Na terminalu pojawiają się literki "a", zgodnie z oczekiwaniami. Mając wgrany program przy użycia programatora, ponownie przepiąłem przejściówkę RS232 z UART1 do UART0. Odpalam MkBootloadera, klikam "info" i:
...BLS wybył...
Tak w skrócie wygląda mój problem. Jest to moje pierwsze poważne starcie z mechanizmem Bootloadera. I teraz moje pytanie brzmi - czy ma ktoś może pomysł, dlaczego to nie działa? Czy może być to kwestia tego, że obydwa UARTy w jakis sposób się "gryzą" lub coś tego typu? Będę ogromnie wdzięczny za każdą, nawet najdrobniejszą wskazówkę co do rozwiązania tego problemu
Pozdrawiam gorąco