Problem z wyswietlaczem graficznym 128x64 [KS0108]

May 31, 2007 8 Replies

Witam, mam problem z uruchomieniem wyswietlacza takiego jak w temacie.



Program napisalem w C, w/g tej strony:

formatting link
Problem polega na tym ze juz przy odpalaniu funkcji lcdOn() zapetla sie w nieskonczonosc program w tym miejscu (a dokladnie w petli do- while):



void lcdWait(void) { LCD_DATA_DDR = 0x00; CLR_RS(); SET_RW();



do { delay(); SET_EN(); delay(); CLR_EN(); } while((LCD_DATA_PIN & DISPLAY_STATUS_BUSY)); }



Uklad na 100% dobrze zmontowany.



DB0 - DB7 LCD na porcie PA EN na PC0 RW - PC1 RS - PC2



Kwarc 16 MHz



Czy jest taka mozliwe ze LCD moze byc uszkodzony? Gdy dostalem do 'naprawienia' ten uklad szyna danych byla podlaczona odwrotnie...


snipped-for-privacy@gmail.com napisał(a):

na stronie SWJ'a był programik do testowania KSów sp3swj.googlepages.com

MAc mrn

snipped-for-privacy@gmail.com napisał(a):

A CS1 i CS2 pewnie wiszą?

Nie wisza, sa na PC5 i PC6...

Podlaczylem taki sam wyswietlacz, ale nieuzywany do tej pory.. Reakcja taka sama.. Nic sie nie wyswietla. Napisalem proste komendy w oparciu o symulator:

formatting link
tez kicha

Uzywanie funkcji z:

formatting link
nadal powoduje zapetlenie wyswietlacza w funkcji WaitLCD(); :-(

Pomozcie:( Brak mi juz pomyslow :-(

snipped-for-privacy@gmail.com napisał(a):

Nie napisałeś najważniejszego - procek ?! Może na którejś lini (np. PC2) masz "włączonego" JTAG-a ?

Piotrek

Hmm procesor to ATMEGA16, szczerze powiedziawszy to w technologii AVR raczkuje jeszcze, wiec prosze jasniej o co chodzi z tym "JTAG'em" :) Jak to sprawdzic, oraz jak odpowiednio ustawic... (Chodzi o alternatywna funkcje portow PC ? ) Sprawdzalem ustawiajac DDRA oraz DDRC na 0xFF piszac prosty programik do migania dioda. Dioda podlaczona do kazdego bitu portu PC i PA mruga odpowiednio

Z moich doswiadczen z KS0108 - nie lubia szybkich przebiegow. Uzywalem z innym prockiem, ale zapis musialem spowolnic, bo glupial. Glupial roznie - czasem sie nie wlaczal, czasem jedna albo druga polowka znikala.

Ok zrobilem tak:

<code>

#define LCD_CTRL_PORT PORTC #define LCD_CTRL_PIN PINC #define LCD_CTRL_DDR DDRC

#define LCD_EN PC0 #define LCD_RS PC2

#define SET_EN() (LCD_CTRL_PORT |= (1 << LCD_EN)) #define CLR_EN() (LCD_CTRL_PORT &= ~(1 << LCD_EN))

#define SET_RS() (LCD_CTRL_PORT |= (1 << LCD_RS)) #define CLR_RS() (LCD_CTRL_PORT &= ~(1 << LCD_RS))

DDRA = 255; DDRC = 255;

PORTA = 63; PORTC = 0; SET_EN(); delay() CLR_EN();

// Wyswietlacz powinien zostac zainicjowany

delay();

PORTA = 255; PORTC = 0 SET_RS();

SET_EN(); delay() CLR_EN();

</code>

// Teraz w/g symulatora na tej:

formatting link
powinno sie COS juz wyswietlic... Jednak nic sie nie wyswietla :[ Probowalem z roznymi czasami delay()'a od kilku 2 nopow, poprzez mikrosekundy az po milisekundy... Efekt ten sam.. A wlascie brak efektu :-(((

Przypomnij sie na priva (pousuwaj co nie trzeba, zostaw 1111) to Ci podesle moj kod (ale dopiero w poniedzialek - jest na kompie w firmie). Z innego procesora, ale dziala napewno - znaczy dzialal ostatnio w piatek ;-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required