Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 3.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #31
RE: Programowanie w języku C w środowisku AVR Studio4
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):
İmage
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.
(Ten post był ostatnio modyfikowany: 21-01-2012 20:33 przez SP4EJT.)
21-01-2012 14:57
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP3IQ Offline
Bogdan
****

Liczba postów: 281
Dołączył: 23-10-2011
Post: #32
RE: Programowanie w języku C w środowisku AVR Studio4
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:
.zip  lcd21.zip (Rozmiar: 1.14 KB / Pobrań: 965) .
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.
(Ten post był ostatnio modyfikowany: 21-01-2012 17:43 przez SP3IQ.)
21-01-2012 17:26
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #33
RE: Programowanie w języku C w środowisku AVR Studio4
No w końcu widać , że ktoś pracuje nad tym Smile
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 ?
(Ten post był ostatnio modyfikowany: 21-01-2012 20:10 przez SP4EJT.)
21-01-2012 20:10
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9JXB Offline
Początkujący
**

Liczba postów: 64
Dołączył: 22-03-2010
Post: #34
RE: Programowanie w języku C w środowisku AVR Studio4
(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.

Janek SQ9JXB
(Ten post był ostatnio modyfikowany: 21-01-2012 22:39 przez SQ9JXB.)
21-01-2012 22:38
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP9LAP Offline
Jarek
*

Liczba postów: 40
Dołączył: 15-03-2010
Post: #35
RE: Programowanie w języku C w środowisku AVR Studio4
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 Huh

I co dalej z tym hexem zrobić ?? Cool


Załączone pliki Miniatury
İmage
(Ten post był ostatnio modyfikowany: 22-01-2012 0:07 przez SP9LAP.)
22-01-2012 0:06
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9JXB Offline
Początkujący
**

Liczba postów: 64
Dołączył: 22-03-2010
Post: #36
RE: Programowanie w języku C w środowisku AVR Studio4
No wreszcie się udało.
Przeinstalowałem AVR Studio4 i ruszyło. jako AVRISP - COM 9
.hex wgrany i po resecie mam taki efekt.

İmage

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

İmage

Janek SQ9JXB
(Ten post był ostatnio modyfikowany: 22-01-2012 11:53 przez SQ9JXB.)
22-01-2012 11:53
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #37
RE: Programowanie w języku C w środowisku AVR Studio4
Janek, przeczytałem w sieci że jesteś elektronikiem o specjalności frezer - górnik - mechanik samochodów z instalacja gazową Tongue 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ą.
(Ten post był ostatnio modyfikowany: 22-01-2012 14:22 przez SP4EJT.)
22-01-2012 14:22
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ9JXB Offline
Początkujący
**

Liczba postów: 64
Dołączył: 22-03-2010
Post: #38
RE: Programowanie w języku C w środowisku AVR Studio4
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 Smile

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ę Big Grin
Dlatego AVR mnie zaciekawiło , i staram się ogarniać to jak umiem najlepiej

Janek SQ9JXB
(Ten post był ostatnio modyfikowany: 22-01-2012 14:50 przez SQ9JXB.)
22-01-2012 14:49
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #39
RE: Programowanie w języku C w środowisku AVR Studio4
Obsłudze wyświetlacza poświęcę jeszcze trochę czasu bo to chyba dla nas ważne, czy nie Huh
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.


Załączone pliki
.zip  lekcja7.zip (Rozmiar: 13.48 KB / Pobrań: 879)
(Ten post był ostatnio modyfikowany: 22-01-2012 23:03 przez SP4EJT.)
22-01-2012 23:00
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP3IQ Offline
Bogdan
****

Liczba postów: 281
Dołączył: 23-10-2011
Post: #40
RE: Programowanie w języku C w środowisku AVR Studio4
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.
23-01-2012 9:00
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości