Problem z wyswietlaczem graficznym 128x64 [KS0108]

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...

Reply to
jotixel
Loading thread data ...

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

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

MAc mrn

Reply to
MAc

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

A CS1 i CS2 pewnie wiszą?

Reply to
Grzegorz

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 :-(

Reply to
jotixel

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

Reply to
Piotrek Sz.

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

Reply to
jotixel

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.

Reply to
Jerry1111

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 :-(((

Reply to
jotixel

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 ;-)

Reply to
Jerry1111

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.