Sprawa rozwiązana. Moje oko nie dostrzegło, ale miernik na zwarcia tak- zwarcie pomiędzy dwiema nogami Xmegi SMD. Po przeskrobaniu układ ruszył i teraz mogę podzielić się wersją na Xmega.
W stosunku do wersji na AVR AtMega, zmiany są takie:
Procedura setup() jest następująca:
zmieniły się także definicje sygnałów w pliku LCD_ILI9327.h:
I to mogłoby być już wszystko, ale... gdzie czcionki na wyświetlaczu? Będę nad nimi pracował.
Wyszła jeszcze inna dziwna sprawa ze sposobem podłączenia zasilania.
Gdy podłączam wyświetlacz do +5V do jednego źródła (zasilacz), a płytkę z prockiem do +3,3V z innego źródła (programator USB), to układ pracuje.
Jeśli jednak podłączę cały układ do zasilacza +5V, także wyświetlacz pod to +5V (płytka z prockiem ma swój stabilizator 3,3V), a programator skonfiguruję na zasilanie zewnętrzne (+3,3V to samo co Xmega), to układ wariuje. Pojawiają się poziome, kolorowe paski RGB, które przeskakują i dziwnie się animują. Najprawdopodobniej to zakłócenia, (wyświetlacz nie ma np. żadnego kondensatora na pokładzie na zasilaniu, wszystko na przewodach) uniemożliwiają mu właściwą pracę. Wyświetlacz podczas pracy pobiera 160-180mA (5V), głównie na podświetlenie.
dodano później.
Napotkałem na inny problem: próbiję zrobić generator znaków.
tablicę z fontami mam jako __memx:
i chciałbym wybiórczo kopiować po 8 bajtów z tej tablicy do tablicy w RAM
próbowałem funkcją "memcpy_PF, ale odczytywał krzaki
za to taka funkcja:
powoduje wewnętrzny błąd kompilacji:
main.c:72:6: internal compiler error: in convert_memory_address_addr_space, at explow.c:326
jeśli zamiast "u" wpisze stała wartość, np. 32 (wielokrotność 8), to odczytuje znak dobrze.
Nie wiem, o co tu chodzi. Tablica specjalnie jest w __memx, gdyż w programie będzie bardzo dużo danych i nie wiem, w jaki obszar Flash zostanie "rzucona".
dodano po chwili
Poradziłem sobie inaczej. Zdefiniowałem tą tablicę jako zwykły progmem. Wtedy, jak mniemam kompilator wrzuci ją w przestrzeń poniżej 64kb i będę mógł ją odczytywać przez _pgm_read_word.... Czy dobrze myślę?
Wreszcie się udało napisać procedurkę wyświetlającą napisy. Na razie bez polskich znaków, ale już coś jest. Ponieważ dochodzi tu tablica fontów, pozwolę sobie przytoczyć całą zawartość pliku "LCD_X_ILI9327.c". Literka X mówi, że biblioteka jest dla Xmega.
Nowa jest tu funkcja "napis", która wyświetla tekst w podanych współrzędnych (lewy dolny róg napisu) i o podanym kolorze.
Dla początkujących:
Napis trzeba przygotować w jakiejś tablicy znaków i umieścić nazwę tej tablicy jako trzeci argument funkcji.
Należy także zaprototypować tą funkcję w pliku "LCD_X_ILI9327.h", by była widoczna dla programu głównego.