ok, schemat jest tu:
http://www.damos.k11.pl/LO/lcd_avr/ATMega16_USB_LCD.pngwsad do ATMega16 tu:
http://www.damos.k11.pl/LO/lcd_avr/dm_firmware.hex(uwaga - zegar 16MHz więc CKOPT)
aplikacja testowa tu:
http://www.damos.k11.pl/LO/lcd_avr/TestApp.exei sterowniki do USB, które należy zainstalować tu:
http://www.damos.k11.pl/LO/lcd_avr/libusb-win32-filter-bin-0.1.12.1.exeDobrze by było zobaczyć, czy program odpali się bez instalacji sterowników, jedynie z użyciem dll'a:
http://www.damos.k11.pl/LO/lcd_avr/libusb0.dllTeraz kilka słów objaśnień.
1 - schemat
- przycisk RESET nie jest konieczny

- rezystor R3 (1M) nie jest konieczny -dałem go, żeby mi D+ nie pływało - tak na wszelki wypadek
- diody D1 i D2 MUSZĄ być diodami zenera na 3,3V
- R1 i R2 powinny mieć 68 ohm, ja miałem tylko 100 ohm i działa bez problemu
- C1 i C4 (elektrolit + ceramiczny) nie są konieczne, lecz dałem je na wszelki wypadek, aby nie mieć problemów z zakłóceniami. Należy je umieścić jak najbliżej IC1
- uwaga na linie z USB: D+ i D-, nie można ich zamieniać. D+ musi być podłączona do PD2, a D- do PD4. Po płytce MJoy'a można dojść, które wyjścia z gniazda USB są które: D- jest podciągana rezystorem 1K5 do plusa.
- IC2 i IC3 - nie podłączałem ich, jako, że mam tylko jeden wyświetlacz - sterowałem go bezpośrednio z portów uP
- LCD1 - LCD21, to symbolicznie pokazane złącza na wyświetlaczach. Jak widać większość linii jest połączona równolegle (współdzielona), za wyjątkiem pinu nr 6 (linia "E"), który jest odpowiedzialny za "selekcję" wyświetlacza, który ma w danym momencie odbierać dane. Potencjometr jest przykładowo, ja mam chyba 3 kilowy rezystor - zależy od wyświetlacza. Złącze na górze ekranu jest czysto symboliczne i pokazuje do których pinów uP należy podłączać linie "E" kolejnych wyświetlaczy. Oszczędziłem sobie dzięki temu umieszczania na schemacie kolejnych 19-tu złączy LCD... Kolejność jest następująca: pierwszych 8 LCD do PA0-PA7, następne 8 do PB0-PB7, ostatnie 5 to PD0,PD1,PD3,PD5,PD6.
Zasilanie... nie wiem, czy USB "pociągnie" 21 LCD - prawdopodobnie nie. Dlatego umieściłem osobne VCC. Jednak ja zasilałem układ z USB

2 - drivery:
- załączyłem instalkę lib-usb. Teoretycznie aplikacja testowa może działać bez tej instalacji, wymaga jedynie obecności załączonego dll'a. Nie testowałem jeszcze tego wariantu.
3 - program w uP:
obsługuje 21 wyświetlaczy zgodnych z HD44780. Jak się okazuje, z tą zgodnością różnie bywa. Mój wyświetlacz obsługuje tryb 2 linii.... w ten sposób, że każda linia ma 8 znaków i są umieszczone jedna za drugą w ... jednej linii

! Bo sam wyświetlacz pokazuje jedynie jeden wiersz tekstu. I jest to zgodne z HD44780. Nie testowałem kodu na wyświetlaczu 4-ro liniowym ani prawdziwie - 2 liniowym, z 40-toma znakami na linię (bo takich nie posiadam). Nie mam supportu (na razie ?) dla wyświetlaczy z dwiema liniami "E". Oprogramowanie na razie nie supportuje scrollowania okna ani zapisywania własnych fontów, ale to drugie jest w planie

Jeśli chodzi o USB, to korzystam jedynie z transmisji kontrolnych (usb_control_msg) a nie z raportów HID. Tak więc nie ma sensu podłączać się do tego "Generic Hid Testerem".
4 - program na PC:
jest to prosty, testowy programik zawierający combo-box'a oraz 4 pola edycyjne. Za pomoca combo wybierasz nr wyswietlacza (od 0 do 20) a w polach tekstowych wpisujesz tekst, który pojawia się na wyświetlaczu. W moim przypadku, przy podłączeniu linii E wyświetlacza do PA0 (nóżka nr 40), wybieram na combo "LCD0" i następnie w "Line0" wpisuję pierwsze 8 znaków a w "Line1" kolejne 8 znaków. W ten sposób zapełniam wyświetlacz (16 znaków). I faktycznie na takim działaniu ma polegać testowanie

Oczywiście - przedtem należy podłączyć układ do USB !

Gdyby program nie odpalał się z braku dll'i typu MSVCRT*.* czy podobnych, daj znać, wtedy je dorzucę (jednak jest prawdopodobne, że już je masz). Naturalnie - finalny interface będzie zupełnie inny !

To chyba wszystko, co przychodzi mi teraz do głowy.... w razie pytań - nie krępować się
