Dobra, postaram się napisac co mogę a ty powiesz w który punkcie utknąłeś.
1. zobacz czy masz zainstalowane sterowniki takie jak na screenshocie poniżej (na podłaczonej płycie ewaluacyjnej):
[
attachment=4553]
2. zobacz czy masz dobrze wykonane podłaczenia na płycie ewaluacyjnej:
- Pin Rxd złącza USB/RS232 (taki napis jest na płycie przy tym złączu) połącz z wyprowadzeniem TXD Atmegi (PD1)
- Pin Txd złacza USB/RS232 połącz z wyprowadzeniem RXD Atmegi czyli z PD0
3. podłącz płytę ewaluacyjną, włącz AVRStudio, wybierz jakąś lekcję, z menu wybierz "Tools" , "Program AVR" , "Connect". W oknie "Platform" wybierz "STK500v2" i kliknij "Connect".
4. Napisz czy wyskoczyło ci okienko programatora czy bład.
Witam wszystkich.
Chcę na chwilę powrócić do przykładu lekcja6 (wyświetlanie na LCD). Kod źródłowy, który zaproponował Marcin SP4EJT jest genialny, bo jest bardzo krótki. Do tej pory wzorowałem się na procedurach wyświetlania na LCD za Pawłem Borkowskim (post #8, poz.1), które są nieco dłuższe. Procedurę dostosowałem do naszego przykładu lekcja6, tak aby połączenia LCD-mikrokontroler były takie same. Można więc sprawdzić oba przykłady,
lekcja6.hex i
lcd21.hex gdzie podaję kod źródłowy: [
attachment=4551].
Mimo, że w lcd21.c jest więcej kodu źródłowego, to program zajmuje nieco mniej miejsca we flash mikrokontrolera (o 11 bytes):
- lekcja6: 458 bytes + 1 byte data, w sumie 459 bytes.
- lcd21: 442 bytes + 6 bytes data, w sumie 448 bytes.
Druga właściwośc to taka, że u mnie treść "ABCD" z lekcji6 na wyświetlaczu jest jakby blada, natomiast "ABCD" z lcd21 jest bardziej kontrastowa. Nie wiem tylko, czy ta różnica w intensywności wyświetlania jest domeną mojego zestawu uruchomieniowego, bo mam uszkodzony potencjometr LCD Contrast (złamany trzpień gałki).
Dlatego mam pytanie do uczestników kursu, czy u Was też jest różnica w intensywności wyświetlania na LCD?
73 Bogdan, SP3IQ.
No w końcu widać , że ktoś pracuje nad tym
Mój kod jest zwięzły po to żebyscie mieli większe szanse na zrozumienie w nim każdego szczegółu - to baaaaaardzo ważne. Jak tylko się obrobie to pójde dalej z obsługa wyswietlacza, a mianowicie zrobię gotową bibliotekę obsługi wyświetlacza wraz z prostą konfiguracja na dowolne porty i oczywiście jasną instrukcja obsługi dla każdego kto ściągnie ją sobie i zechce z niej korzystać w swoim projekcie. Powstanie pierwsza wersja tej biblioteki, którą będziemy później wspólnie ulepszać - dorabiać nowe bajerki wedle Waszych potrzeb. Co do minimalizacji pliku .hex - wogóle o tym nie myślałem i nie myśle na tym etapie nauki. Co do intensywności wyświetlania znaków - moim zdaniem nie powinno być różnicy - bo niby czemu ?
(21-01-2012 14:57)SP4EJT napisał(a): [ -> ]Dobra, postaram się napisac co mogę a ty powiesz w który punkcie utknąłeś.
1. zobacz czy masz zainstalowane sterowniki takie jak na screenshocie poniżej (na podłaczonej płycie ewaluacyjnej):
2. zobacz czy masz dobrze wykonane podłaczenia na płycie ewaluacyjnej:
- Pin Rxd złącza USB/RS232 (taki napis jest na płycie przy tym złączu) połącz z wyprowadzeniem TXD Atmegi (PD1)
- Pin Txd złacza USB/RS232 połącz z wyprowadzeniem RXD Atmegi czyli z PD0
3. podłącz płytę ewaluacyjną, włącz AVRStudio, wybierz jakąś lekcję, z menu wybierz "Tools" , "Program AVR" , "Connect". W oknie "Platform" wybierz "STK500v2" i kliknij "Connect".
4. Napisz czy wyskoczyło ci okienko programatora czy bład.
Kilkanaście prób i za każdym razem mam Connection failed
Próbowałem STK500 , a port COM u mnie to COM9, i oczywiście płyta ewaluacyjna.
Witam!
połaczyłem się z płytką!
Musiałem tylko zmienić nr portu z 10 (na którym "wisiała" płytka) na 9.
Na liście w AVRstudio są tyko porty 1-9
I co dalej z tym hexem zrobić ??
No wreszcie się udało.
Przeinstalowałem AVR Studio4 i ruszyło. jako AVRISP - COM 9
.hex wgrany i po resecie mam taki efekt.
I pytanie do nauczyciela.
Czy przy wgrywaniu plików .hex kabelki z płytki trzeba rozłączyć, a podłączyć tylko RxD i TxD??
A co do regulacji kontrastu wyświetlacza to jest bardzo mała
P.S. Ponowna próba połączenia z płytą nie dała rezultatu. Connection failed.
Ani STK500 ani AVRISP nie daje efektu
NA win7 64bit to samo
Sam już nie wiem co o tym myśleć.
Edit: Po odłączeniu płytki i ponownym połączeniu ruszyło i na WinXP i na Win 7 64bit
Janek, przeczytałem w sieci że jesteś elektronikiem o specjalności frezer - górnik - mechanik samochodów z instalacja gazową
więc nie będę na Ciebie krzyczał za to że nie przeczytałeś uważnie instrukcji od płyty ewaluacyjnej.
A tak na serio ... przypuszczam że czytałeś instrukcję ale są to dla Ciebie (jak dla wielu innych kursantów) nowe rzeczy i za dużo naraz do ogarnięcia, więc mogłeś tego nie przyswoić. W instrukcji:
http://www.microsense.pl/allegro/EvB_ATm...anuals.pdf
na stronie 12 jest między innymi to:
" ... Tryb bootloadera dostępny jest do 8s od RESETU mikrokontrolera (podłaczenia układu). Później uruchamia sie wgrana wlaściwa aplikacja. ..."
Co oznacza że masz tylko 8 sekund na podłączenie się do Atmegi. Po wgraniu *.hexa oczywiście należy wcisnąć RESET na płycie, poczekać aż minie 8s (czas nasłuchiwania bootloadera) po czym Atmega uruchamia naszego *.hexa.
Co do pytania : " Czy przy wgrywaniu plików .hex kabelki z płytki trzeba rozłączyć, a podłączyć tylko RxD i TxD?? "
Odpowiedź: Nie musisz nic rozłączać - ważne żeby RxD i TxD nie były obciążone - co mogłoby uniemożliwić komunikację z Atmegą.
Janek, przeczytałem w sieci że jesteś elektronikiem o specjalności frezer - górnik - mechanik samochodów z instalacja gazową
Nie do końca tak jest.
Tokarz-frezer, a obecnie mechanik silników gazowych dużych mocy.
Na kopalni pracowałem jako mechanik ścianowych obudów zmechanizowanych
A co do Atmegi to już wiem że jest tylko 8 sekund czasu.
Co do kabelków to już wszystko jasne.
A elektronik ze mnie taki że proste rzeczy ogarniam, a trudnych sie uczę
Dlatego AVR mnie zaciekawiło , i staram się ogarniać to jak umiem najlepiej
Obsłudze wyświetlacza poświęcę jeszcze trochę czasu bo to chyba dla nas ważne, czy nie
lekcja7 to lekcja pokazująca jak można zmienić kod który robi dokładnie to samo lecz zawiera pewne udogodnienia dla szarego człowieka.
do SP3IQ : Mam nadzieję że i tym razem będziesz zaskoczony wilekością kodu i *.hexa.
Nie będę wstawiał całego kodu w trybie edycji bo strasznie zawala ekran i brzydko wyglada - moje komentarze które mogą dobrze wyglądać w AVRStudio tutaj powodują przeskakiwanie pod linijkę i paskudza wygląd kodu, który staje sie ciezki do rozczytania.
Opiszę tylko zmienioną funkcję "bajt_lcd" w stusunku do lekcji6
Kod:
void bajt_lcd(unsigned char znak)
{
LCD_PORT = (LCD_PORT & 15)|(znak&240);
LCD_PORT |= (1<<LCD_E); // E=1
LCD_PORT &= (~1<<LCD_E); // E=0
LCD_PORT = (LCD_PORT & 15)|(znak<<4);
LCD_PORT |= (1<<LCD_E); // E=1
LCD_PORT &= (~1<<LCD_E); // E=0
_delay_ms(10);
}
1. Usunąłem zbędne linie z opóźnieniami (_delay_) - okazuje sie że wyświetlacz tego nie potrzebuje
2. liczby 15 i 240 wzięły sie z "przetłumaczenia" zapisu szestnastkowego z "lekcji6" - pamiętamy że sposób zapisu liczby jest dowolny. Ważne żeby wartość liczby była identyczna
3. Zapis (1<<3) jest toższamy z (0b00000001<<3) i oznacza że jedynke należy przesunąć o 3 miejsca w stronę bitów starszych (w zapisie w lewo) co daje wynik 0b00001000 - wiedząc to możecie sami sobie odpowiedzieć co wykona atmega jeśli napotka na
Kod:
LCD_PORT |= (1<<LCD_E);
Proszę napisać, czy po usunięciu z kodu zbędnych opóźnień, działa u was wszystko OK, no i prosze o pytania typu :" Nie rozumiem co wykonuje ta linijka kodu, i jeszcze funkcja init_lcd" - będę cierpliwie tłumaczyć - nie wstydzić się i pytać - po to są te lekcje.
Witam,
Marcin super! Rzeczywiście program zajmuje we flash tylko:
Program: 300 bytes (0.9% Full)
W poprzednim przykładzie było "aż" 459 bytes !
Zmieniłem tylko dwie pierwsze definicje na:
#define DEF_PORT DDRA
#define LCD_PORT PORTA
aby połączenia były takie same jak w poprzednich przykładach.
73 Bogdan, SP3IQ.