Witam.
Próbuję podłączyć wyświetlacz WH1602B1 z interfejsem SPI pod Atmege8, problem w tym, że po uruchomieniu programu raz mi się pojawia napis (klasyczne) "Hello world" - tak jak ma być, a raz nie i na wyświetlaczu wtedy jest pusto, albo są jakieś krzaczki, albo pojawia się nie cały napis. Nie wiem czy problem w tym, że mam ustawiać jakieś opóźnienia w procedurze która wysyła dane, czy tych opóźnień nie ma być. Czy też problemem jest częstotliwość SCK. SCK nie wiem dokładnie jakie mam ustawić bo w dokumentacji tego wyświetlacza przy inicjalizacji (Function set, Entry mode set) mam Fosc=540kHz (strona 30) F_CPU standardowo mam na 8Mhz więc mam dzielnik albo przez 8 (1Mhz) albo przez 16 (500 kHz) (znając życie pewnie przez 16). Myślałem jeszcze nad tym, że może chodzi o to, że potrzeba dać jakieś opóźnienia po wywołaniu makrodefinicji np. CSB_LOW czy RS_HIGH, o to, żeby poczekać aż napięcie "ustawi" się. Po za tym mam jeszcze pytanie odnośnie przerwania SPI_STC_vect - kiedy ono jest wywoływane? Myślałem nad tym, żeby w tym przerwaniu ustawić jakąś zmienną która będzie kontrolować wysyłanie (np. jeśli przerwanie to jest po zakończeniu transmisji to w nim mogę ustawić zmienną która zezwoli na wysłanie kolejnego bajtu)
datasheet WH1602B1
Pinout:
Mój LCD ma takie:
RS (tak jak w hd44780 pin RS)
CSB (chip select) musi być 0 żeby czytał
SCLK (clock) zegar
SID (input data) dane WE
I podłączam to pod:
RS: PD5
CSB: PD6
SCLK: PB5
SID: PB3 (MOSI (Master Out/Slave In))
Mój kod:
Próbuję podłączyć wyświetlacz WH1602B1 z interfejsem SPI pod Atmege8, problem w tym, że po uruchomieniu programu raz mi się pojawia napis (klasyczne) "Hello world" - tak jak ma być, a raz nie i na wyświetlaczu wtedy jest pusto, albo są jakieś krzaczki, albo pojawia się nie cały napis. Nie wiem czy problem w tym, że mam ustawiać jakieś opóźnienia w procedurze która wysyła dane, czy tych opóźnień nie ma być. Czy też problemem jest częstotliwość SCK. SCK nie wiem dokładnie jakie mam ustawić bo w dokumentacji tego wyświetlacza przy inicjalizacji (Function set, Entry mode set) mam Fosc=540kHz (strona 30) F_CPU standardowo mam na 8Mhz więc mam dzielnik albo przez 8 (1Mhz) albo przez 16 (500 kHz) (znając życie pewnie przez 16). Myślałem jeszcze nad tym, że może chodzi o to, że potrzeba dać jakieś opóźnienia po wywołaniu makrodefinicji np. CSB_LOW czy RS_HIGH, o to, żeby poczekać aż napięcie "ustawi" się. Po za tym mam jeszcze pytanie odnośnie przerwania SPI_STC_vect - kiedy ono jest wywoływane? Myślałem nad tym, żeby w tym przerwaniu ustawić jakąś zmienną która będzie kontrolować wysyłanie (np. jeśli przerwanie to jest po zakończeniu transmisji to w nim mogę ustawić zmienną która zezwoli na wysłanie kolejnego bajtu)
datasheet WH1602B1
Pinout:
Mój LCD ma takie:
RS (tak jak w hd44780 pin RS)
CSB (chip select) musi być 0 żeby czytał
SCLK (clock) zegar
SID (input data) dane WE
I podłączam to pod:
RS: PD5
CSB: PD6
SCLK: PB5
SID: PB3 (MOSI (Master Out/Slave In))
Mój kod:
Kod: C / C++