Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 24.01.2010, 20:26   #1
Specialist
Guest
 
Сообщений: n/a
По умолчанию pic24f64ga004 & tic154 & C30 Не показывает ничего.

Решил создать свою тему.
Имеется такой набо
pic24f64ga004 (FRC_PLL 32MHz) подключен на 3.3В
LCD tic154 подключен на 5В
C30 Compiller.

Шину подтянул резиками к 5В.

Тем много тут было про этот дисплей но чего-то конкретного и простого нету, чтобы можно было "стартануть".

Сначала передрал полностью инициализацию дисплея из мануала, не работает. Потом нашел вот эту страницу.
Там написано что еще и стопы между передачами нужно использовать.

Вдобавок если я отправляю вот этой командой
Код:
MasterWriteI2C2(data word);
многократно данные то протеус пишет, что буфер заполнен. В справке нашел такую функцию
Код:
IdleI2C2();
С ней не ругается, но всеравно не работает.

Вот сам код
Код:
#define USE_AND_OR
#include <timer.h>
#include <ports.h>
#include <PPS.h>
#include	<i2c.h>

#include <libpic30.h>
#include <math.h>

#define FCY  16000000uL

#define Delay_ms(d) (__delay32 (((d)) * ((FCY) / 1000uL)))
#define Delay_us(d) (__delay32 (((d)) * ((FCY) / 1000000uL)))

//Биты конфигурации
_CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx1 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS512)
_CONFIG2(SOSCSEL_LPSOSC & WUTSEL_LEG & FNOSC_FRCPLL & FCKSM_CSDCMD & OSCIOFNC_ON & IESO_OFF & I2C1SEL_PRI & POSCMOD_NONE)
int main(void)
{
	Init();
	Delay_ms(200);
	OpenI2C2(I2C_ON|I2C_SLW_EN|I2C_SM_EN,18);

    
	Delay_ms(200);
  //Инициализация
  StartI2C2();//1
  IdleI2C2();
  MasterWriteI2C2(0x78);     // адрес    0x78
  IdleI2C2();
  MasterWriteI2C2(0x00);      // control byte
  IdleI2C2();
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
  //MasterWriteI2C2(0x24);
  //MasterWriteI2C2(0X10);      // PD = 0, V = 0; горизонтальная адресация
  MasterWriteI2C2(0X12);      // PD = 0, V = 1; вертикальная адресация
  IdleI2C2();
  //MasterWriteI2C2(0X40); 
  //MasterWriteI2C2(0X80);
  MasterWriteI2C2(0x0E);
  IdleI2C2();
  MasterWriteI2C2(0X12);      // BIAS = 1/9
  IdleI2C2();
  MasterWriteI2C2(0X06);      // D = 1, E = 0;
  IdleI2C2();
  MasterWriteI2C2(0X84);      // MUX = 1/65
  IdleI2C2();
  //MasterWriteI2C2(0X24);      // IB = 1
  //MasterWriteI2C2(0X20);      // IB = 0
  //MasterWriteI2C2(0X08);      // MX = 0, MY = 0;
  //MasterWriteI2C2(0X0C);      // MX = 1, MY = 0; 
  MasterWriteI2C2(0X0E);      // MX = 1, MY = 1; 
  IdleI2C2();
  //MasterWriteI2C2(0X0A);      // MX = 0, MY = 1; 
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
  MasterWriteI2C2(0X0D);      //
  IdleI2C2();
  MasterWriteI2C2(0X04);      //
	IdleI2C2();
  MasterWriteI2C2(0X09);      // S[1;0] = 01, mul factor = 3  
  IdleI2C2();        
  MasterWriteI2C2(0xb1);      // установка напряженияB4
  IdleI2C2();
  MasterWriteI2C2(0X05);      // PRS = 0, Vlcd programing range 
  IdleI2C2();
  MasterWriteI2C2(0X0A);      // S[1;0] = 10, mul factor = 4  
  IdleI2C2();    
  MasterWriteI2C2(0X12);      //
  IdleI2C2();
  MasterWriteI2C2(0X0B);      // S[1;0] = 11, mul factor = 5
  IdleI2C2();
  //MasterWriteI2C2(0X06);      // PRS = 1, Vlcd programing range high 
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
  MasterWriteI2C2(0X0B);      //
  IdleI2C2();
  MasterWriteI2C2(0X05);      // DM = 1 
  IdleI2C2();
  MasterWriteI2C2(0X58);      // TRS = 1, BRS = 1; 
  IdleI2C2();
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
	StopI2C2();
    
  //Шаги 16-19 из мануала, нарисовать 5 пикселей вертикально
  StartI2C2();//16
  IdleI2C2();
  MasterWriteI2C2(0b01111000);//17
  IdleI2C2();
  MasterWriteI2C2(0b01000000);//18
  IdleI2C2();
  MasterWriteI2C2(0b00011111);//19
  IdleI2C2();
  StopI2C2();
  
  CloseI2C2();
	while(1)
	{
	}

	return 0;
}
Как видно из кода я только повставлял IdleI2C2(); А так код идентичен с того сайта. Не пойму правильно ли я инициализирую И2Ц
Код:
OpenI2C2(I2C_ON|I2C_SLW_EN|I2C_SM_EN,18);
частота и2Ц правильно указана?
Куда рыть, целый день уже вожусь с ним?
  Ответить с цитированием
Старый 24.01.2010, 21:08   #2
Daniil
Senior Member
 
Регистрация: 22.09.2008
Адрес: Санкт-Петербург
Сообщений: 133
Вес репутации: 501/50
Daniil is a glorious beacon of lightDaniil is a glorious beacon of lightDaniil is a glorious beacon of lightDaniil is a glorious beacon of lightDaniil is a glorious beacon of lightDaniil is a glorious beacon of light
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Если эти функции из стандартной библиотеки StartI2C2(); StopI2C2();, то обратитесь к примеру из документации. После подачи условия старт, надо дождаться его окончания. Также обрабатывается стоп. Неплохо было бы еще удостовериться, что индикатор дает на свой адрес подтверждение.Не видно, как вы управляете аппаратным сбросом индикатора.

Последний раз редактировалось Daniil; 24.01.2010 в 21:13.
Daniil вне форума   Ответить с цитированием
Старый 24.01.2010, 21:17   #3
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 41
Сообщений: 385
Вес репутации: 308/56
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

в соседней ветке вроде пояснил уже? зачем плодить ветки?
я использовал индикатор TIC218 - там в общем-то такой-же контроллер. все заработало с первого раза, инициация вроде похожа
timday вне форума   Ответить с цитированием
Старый 24.01.2010, 22:25   #4
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Вот пример использования стандартной и2Ц библиотеки.
Код:
#define USE_AND_OR /* To enable AND_OR mask setting */
#include<i2c.h>

void Test_I2C(void )
{
   unsigned int config2, config1;
   unsigned char *wrptr;
   unsigned char tx_data[] = {'M','I','C','R','O','C','H','I','P','\0'};

   wrptr = tx_data;
   config2 = 0x11;/* Baud rate is set for 100 Khz */

   /* Configure I2C for 7 bit address mode */
   config1 = (I2C_ON | I2C_IDLE_CON | I2C_CLK_HLD |I2C_IPMI_DIS | I2C_7BIT_ADD
            | I2C_SLW_DIS | I2C_SM_DIS | I2C_GCALL_DIS | I2C_STR_DIS | I2C_NACK
            | I2C_ACK_DIS | I2C_RCV_DIS |I2C_STOP_DIS | I2C_RESTART_DIS | I2C_START_DIS);
   OpenI2C1(config1,config2);
   IdleI2C1();
   StartI2C1();
   while(I2C1CONbits.SEN );  //Wait till Start sequence is completed
   IFS1bits.MI2C1IF = 0; //Clear interrupt flag
   MasterWriteI2C1(0xE); //Write Slave address and set master for transmission
   while(I2C1STATbits.TBF); //Wait till address is transmitted
   while(!IFS1bits.MI2C1IF); //Wait for ninth clock cycle
   IFS1bits.MI2C1IF = 0; //Clear interrupt flag
   while(I2C1STATbits.ACKSTAT);
   MasterputsI2C1(wrptr); //Transmit string of data
   StopI2C1();
   while(I2C1CONbits.PEN); //Wait till stop sequence is completed
   CloseI2C1();
}
Как и в этой примере я после старта, установки адреса и стопа, ожидаю флага завершения.

Вот код, который у меня получился.
Код:
int main(void)
{
	Init();
	Delay_ms(200);
	Delay_ms(200);
	Delay_ms(200);
	Delay_ms(200);
	
	IEC3bits.MI2C2IE = 1;
	OpenI2C2(I2C_ON|I2C_SLW_EN|I2C_SM_EN,38);

    
	Delay_ms(200);
  //Инициализация
  StartI2C2();//1
  while(I2C2CONbits.SEN);  //Wait till Start sequence is completed
  IFS3bits.MI2C2IF = 0; //Clear interrupt flag
  MasterWriteI2C2(0x78);     // адрес    0x78
  while(I2C2STATbits.TBF); //Wait till address is transmitted
  while(!IFS3bits.MI2C2IF); //Wait for ninth clock cycle
  IFS3bits.MI2C2IF = 0; //Clear interrupt flag
  while(I2C2STATbits.ACKSTAT);

  MasterWriteI2C2(0x00);      // control byte
  IdleI2C2();
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
  //MasterWriteI2C2(0x24);
  //MasterWriteI2C2(0X10);      // PD = 0, V = 0; горизонтальная адресация
  MasterWriteI2C2(0X12);      // PD = 0, V = 1; вертикальная адресация
  IdleI2C2();
  //MasterWriteI2C2(0X40); 
  //MasterWriteI2C2(0X80);
  MasterWriteI2C2(0x0E);
  IdleI2C2();
  MasterWriteI2C2(0X12);      // BIAS = 1/9
  IdleI2C2();
  MasterWriteI2C2(0X06);      // D = 1, E = 0;
  IdleI2C2();
  MasterWriteI2C2(0X84);      // MUX = 1/65
  IdleI2C2();
  //MasterWriteI2C2(0X24);      // IB = 1
  //MasterWriteI2C2(0X20);      // IB = 0
  //MasterWriteI2C2(0X08);      // MX = 0, MY = 0;
  //MasterWriteI2C2(0X0C);      // MX = 1, MY = 0; 
  MasterWriteI2C2(0X0E);      // MX = 1, MY = 1; 
  IdleI2C2();
  //MasterWriteI2C2(0X0A);      // MX = 0, MY = 1; 
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
  MasterWriteI2C2(0X0D);      //
  IdleI2C2();
  MasterWriteI2C2(0X04);      //
	IdleI2C2();
  MasterWriteI2C2(0X09);      // S[1;0] = 01, mul factor = 3  
  IdleI2C2();        
  MasterWriteI2C2(0xb1);      // установка напряженияB4
  IdleI2C2();
  MasterWriteI2C2(0X05);      // PRS = 0, Vlcd programing range 
  IdleI2C2();
  MasterWriteI2C2(0X0A);      // S[1;0] = 10, mul factor = 4  
  IdleI2C2();    
  MasterWriteI2C2(0X12);      //
  IdleI2C2();
  MasterWriteI2C2(0X0B);      // S[1;0] = 11, mul factor = 5
  IdleI2C2();
  //MasterWriteI2C2(0X06);      // PRS = 1, Vlcd programing range high 
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
  MasterWriteI2C2(0X0B);      //
  IdleI2C2();
  MasterWriteI2C2(0X05);      // DM = 1 
  IdleI2C2();
  MasterWriteI2C2(0X58);      // TRS = 1, BRS = 1; 
  IdleI2C2();
  MasterWriteI2C2(0x01);      // на основн стр
  IdleI2C2();
	StopI2C2();
  while(I2C2CONbits.PEN); //Wait till stop sequence is completed

  //Шаги 16-19 из мануала, нарисовать 5 пикселей вертикально
  StartI2C2();//1
  while(I2C2CONbits.SEN );  //Wait till Start sequence is completed
  IFS3bits.MI2C2IF = 0; //Clear interrupt flag
  MasterWriteI2C2(0x78);     // адрес    0x78
  while(I2C2STATbits.TBF); //Wait till address is transmitted
  //while(!IFS3bits.MI2C2IF); //Wait for ninth clock cycle
  IFS3bits.MI2C2IF = 0; //Clear interrupt flag
  while(I2C2STATbits.ACKSTAT);
  
  IdleI2C2();
  MasterWriteI2C2(0b01111000);//17
  IdleI2C2();
  MasterWriteI2C2(0b01000000);//18
  IdleI2C2();
  MasterWriteI2C2(0b00011111);//19
  IdleI2C2();
  StopI2C2();
  while(I2C2CONbits.PEN); //Wait till stop sequence is completed
  
  CloseI2C2();
	while(1)
	{
	}

	return 0;
}
При паузе (через несколько секунд выполнения программы) дебагер останавливается на строке
Код:
while(!IFS3bits.MI2C2IF); //Wait for ninth clock cycle
и все время висит на ней. ПОчему-то флаг прерывания не выставляется. Почему???

Цитата:
Не видно, как вы управляете аппаратным сбросом индикатора.
Он подвешен к плюсу. После каждого перепрограммирования пика я выкл/вкл дисплей и запускаю пик. На всякий случай в начале программы задержка 5 Х 200мс.

Цитата:
Неплохо было бы еще удостовериться, что индикатор дает на свой адрес подтверждение.
Вы про эту строчку?
Код:
while(I2C2STATbits.ACKSTAT);
Если закомментировать ту строку на которой он виснет то программа выполняется до конца и крутится в while. А значит и проходит её. Но на дисплее ничего нет.

Последний раз редактировалось Specialist; 24.01.2010 в 22:34.
  Ответить с цитированием
Старый 25.01.2010, 13:36   #5
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Окончательно убедился в не правильной работе самого i2C. После все передач шина данных остается в нуле...

Может кто с таким сталкивался?
  Ответить с цитированием
Старый 25.01.2010, 14:02   #6
b0b
Member
 
Регистрация: 26.02.2007
Сообщений: 81
Вес репутации: 144/51
b0b will become famous soon enoughb0b will become famous soon enough
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

в ветке по ссылке много примеров.
http://www.microchip.su/showthread.php?t=7982

TIC13364
133x64
PCF8535
b0b вне форума   Ответить с цитированием
Старый 25.01.2010, 14:13   #7
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Был я в этих все ветках, там не те функции используются для отправки, вроде бы они от компилятора microC
  Ответить с цитированием
Старый 25.01.2010, 16:22   #8
smdcomp
Senior Member
 
Регистрация: 25.01.2010
Сообщений: 113
Вес репутации: 257/42
smdcomp is a jewel in the roughsmdcomp is a jewel in the roughsmdcomp is a jewel in the rough
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

По всей видимости вы используете первый I2C, данная ситуация описана в errata на pic24f64ga004, после инициализации модуля и посылки старта (SEN=1) сразу же приходит bus collision (BCL). Также описаны множество методов выхода из этой ситуации в зависимости от релиза чипа, но у меня заработало только после дерганья SDAвнешним пином при инцилизации.
smdcomp вне форума   Ответить с цитированием
Старый 25.01.2010, 16:49   #9
Илья
Senior Member
 
Регистрация: 26.02.2007
Адрес: SPb
Сообщений: 1,231
Вес репутации: 1853/80
Илья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant futureИлья has a brilliant future
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Цитата:
Сообщение от Specialist Посмотреть сообщение
Был я в этих все ветках, там не те функции используются для отправки, вроде бы они от компилятора microC
Совет. По TICxxx слушайтесь и смотрите исходники от b0b-а.
Илья вне форума   Ответить с цитированием
Старый 25.01.2010, 21:45   #10
artko
Member
 
Регистрация: 16.06.2009
Адрес: dp.ua
Возраст: 42
Сообщений: 34
Вес репутации: 100/43
artko will become famous soon enoughartko will become famous soon enough
Отправить сообщение для artko с помощью ICQ Отправить сообщение для artko с помощью Skype™
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Цитата:
Сообщение от Specialist Посмотреть сообщение
Был я в этих все ветках, там не те функции используются для отправки, вроде бы они от компилятора microC
вот такой код у меня работает на tic149 и p24f64ga002
компилятор MCC30
питание индикатора 3,3в, подтяжка SDA/SCL 10КОм на 3,3в

main.c

Код:
#include <p24fj64ga002.h>

_CONFIG2(IESO_OFF & SOSCSEL_SOSC & WUTSEL_FST & FNOSC_FRC & FCKSM_CSDCMD & 
	OSCIOFNC_ON &  IOL1WAY_OFF & I2C1SEL_PRI & POSCMOD_NONE);
_CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & 
	FWDTEN_OFF & WINDIS_OFF & FWPSA_PR32 & WDTPS_PS128);

#define SYSCLK 8000000
#include "pf8535.h"
#include <i2c.h>

void init_i2c(void)
{

	TRIS_SCL= 0; //RB2 is output (SCL pin) 
	TRIS_SDA= 0; //RB3 is output (SDA pin) 
	I2C2BRG = 39; // 100KHz, Fcy = 4MHz
	I2C2CON = 0xD200;    //Enable 
	I2C2ADD=0; 
	I2C2MSK=0; 

}	

int main(void)
{
	
	AD1PCFG = 0xffff;
	init_i2c();
	
    	pfc8535_init();
    	pfc8535_clear() ;
	pfc8535_image(0);
}
pfc8535.c
Код:
#include <i2c.h>


#define I2C_SDA  PORTBbits.RB2
#define I2C_SCL  PORTBbits.RB3


#define LCD_ADDR 0x78

#define LCD_BUS_ADDRESS           0b01111000
#define LCD_COMMAND_DEF_PAGE      0b00000001
#define LCD_SETTINGS_PAGE         0b00001110
#define LCD_HVGEN_PAGE            0b00001101
#define LCD_SFEATURE_PAGE         0b00001011
#define LCD_FUNCTION_SET          0b00010000
#define LCD_SET_BIAS_1_9          0b00010010
#define LCD_SET_MUX_1_65          0b10000100
#define LCD_DISPLAY_CONTROL       0b00000100


#define i2c_read MasterReadI2C2
#define StartI2C StartI2C2
#define StopI2C StopI2C2
#define RestartI2C RestartI2C2
#define WriteI2C MasterWriteI2C2
#define I2CCONbits I2C2CONbits
#define I2CTRN I2C2TRN
#define I2CSTATbits I2C2STATbits

uint8 char_buffer[8];


void i2c_start(void)
{
	StartI2C();
	while(I2CCONbits.SEN );
}	

void i2c_stop(void)
{
	StopI2C();
	while(I2CCONbits.PEN);
}

void i2c_restart(void)
{
	RestartI2C();
	while(I2CCONbits.RSEN);
}		

int8 i2c_write(uint8 data)
{
	I2CTRN = data;
	while (I2CSTATbits.TRSTAT);
      return 0;
}	



void pfc8535_setpos ( uint8 x, uint8 y )//x=0..132,y=0..7
{
        i2c_start();
        i2c_write(0b01111000);
        i2c_write(0);//control byte C0=0,D/C=0;
        i2c_write(LCD_COMMAND_DEF_PAGE);
        i2c_write(0b01000000|y);//set y pos
        if(x<128)
        {
        i2c_write(0b00100000);//set ram page 0
        i2c_write(0b10000000|x);//set x pos
        }
        else 
        {
        i2c_write(0b00100100);//set ram page 1
        i2c_write(0b10000000|(x-128));//set x pos
        }
        i2c_stop();
}






void pfc8535_image(uint8 column) // вывод картинки высотой во весь индикатор
{
 uint8 img[240] = 
 {
 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 85, 85, 84, 
0, 0, 0, 0, 1, 0, 0, 0, 
0, 0, 0, 0, 0, 34, 34, 40, 
10, 85, 72, 3, 255, 255, 255, 130, 
49, 136, 164, 7, 255, 255, 255, 136, 
14, 102, 88, 15, 255, 255, 255, 160, 
33, 25, 128, 31, 255, 255, 255, 132, 
20, 196, 96, 63, 255, 255, 255, 144, 
42, 51, 0, 127, 255, 255, 255, 136, 
21, 140, 128, 255, 255, 255, 255, 128, 
2, 98, 1, 255, 255, 255, 255, 164, 
56, 153, 3, 255, 255, 255, 255, 130, 
7, 36, 7, 255, 255, 255, 255, 144, 
40, 200, 15, 255, 255, 255, 255, 136, 
18, 48, 31, 255, 255, 255, 255, 128, 
45, 64, 63, 255, 255, 255, 255, 164, 
1, 128, 127, 255, 255, 255, 255, 136, 
44, 0, 255, 255, 255, 255, 255, 128, 
0, 0, 0, 0, 0, 0, 0, 42, 
0, 0, 1, 81, 200, 165, 18, 0, 
0, 0, 4, 5, 246, 48, 202, 162, 
0, 0, 17, 17, 254, 251, 255, 8, 
0, 0, 0, 66, 198, 193, 179, 34, 
0, 0, 85, 8, 198, 251, 55, 0, 
0, 0, 0, 32, 214, 205, 179, 42, 
0, 1, 34, 139, 198, 253, 55, 0, 
0, 0, 72, 1, 166, 249, 179, 20, 
0, 2, 1, 36, 8, 0, 0, 64  };
 
 uint16 pos;
 
   i2c_start();

        i2c_write(LCD_ADDR);        // адрес
        i2c_write(0b01000000);      // control byte  
 for (pos = 0; pos < 240; pos++)
 {
  i2c_write(img[pos]);
 }
  i2c_stop();   
}


void pfc8535_init()
{
	    
      i2c_start () ;
      i2c_write(LCD_ADDR);        // адрес
      
        i2c_write(0b00000000);      // control byte
        i2c_write(0x01);            // на основн стр
        i2c_write(0b00001110);      // на стр 110
        i2c_write(0b00010010);      // BIAS = 1/9
        i2c_write(0b10000100);      // MUX = 1/65
        i2c_write(0b00000100);      // D = 0, E = 0;
        i2c_write(0b00100100);      // IB = 1

        i2c_write(0b00001000);      // MX = 0, MY = 0;


        i2c_write(0x01);            // на основн стр
        i2c_write(0b00010010);      // PD = 0, V = 1; вертикальная адресация


        i2c_write(0b00001011);      // на стр 011
        i2c_write(0b01011000);      // TRS = 1, BRS = 1;
        i2c_write(0b00000101);      // DM = 1

       DelayMs(1);

        i2c_write(0x01);            // на основн стр
        i2c_write(0b00001101);      // на стр 101

        i2c_write(0b00001000);      // S[1;0] = 00, mul factor = 2
//      WriteI2C(0b00000110);      // PRS = 1, Vlcd programing range high
        i2c_write(0b00000100);      // PRS = 0, Vlcd programing range low

        i2c_write(50 | 0x80);       // установка напряжения
        i2c_write(0b00000101);      // включение генератора

               DelayMs(1);             // should be более 20 мкс
        i2c_write(0b00001001);      // S[1;0] = 01, mul factor = 3
             DelayMs(1);
        i2c_write(0b00001010);      // S[1;0] = 10, mul factor = 4
               DelayMs(1);
        i2c_write(0b00001011);      // S[1;0] = 11, mul factor = 5

        i2c_write(0x01);            // на основн стр
        i2c_write(0b00001011);      // на стр 011

        i2c_write(0b00000100);      // DM = 0

        i2c_write(0x01);            // на основн стр
        i2c_write(0b00001110);      // на стр 110
        i2c_write(0b00000110);      // D = 1, E = 0; normal

        i2c_stop();

       pfc8535_setpos(0,0);
          DelayMs(1);
        
}

void pfc8535_clear() 
{
         uint16 qwe;
         i2c_start();

        i2c_write(LCD_ADDR);        // адрес
        i2c_write(0b01000000);      // control byte        
         for (qwe = 0; qwe < 1064; qwe++)
         {
            //display_buffer[qwe] = 0;
            i2c_write(0);
            
            
         }
        i2c_stop();      
}
artko вне форума   Ответить с цитированием
Старый 25.01.2010, 23:28   #11
Specialist
Guest
 
Сообщений: n/a
Thumbs up Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Спасибо огромное!!!!

Работаеееееееееет урааа!!))))
  Ответить с цитированием
Старый 26.01.2010, 00:15   #12
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

И непойму почему, но работает только на I2C1, на I2C2 как в твоем коде, у мя не работает. Ну да ладно, главное, что он вообще теперь у меня показывает.
  Ответить с цитированием
Старый 26.01.2010, 00:59   #13
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 58
Сообщений: 2,938
Вес репутации: 4193/115
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

За это время...
Да напишите софтовый I2C и цепляйте этот TIC154 куда угодно...
HHIMERA вне форума   Ответить с цитированием
Старый 26.01.2010, 01:51   #14
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Софтовый не подходит, ресурсы есть куда девать и так.
  Ответить с цитированием
Старый 26.01.2010, 12:21   #15
artko
Member
 
Регистрация: 16.06.2009
Адрес: dp.ua
Возраст: 42
Сообщений: 34
Вес репутации: 100/43
artko will become famous soon enoughartko will become famous soon enough
Отправить сообщение для artko с помощью ICQ Отправить сообщение для artko с помощью Skype™
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
За это время...
Да напишите софтовый I2C и цепляйте этот TIC154 куда угодно...
это неспортивно железный i2c модуль есть - пусть напрягается он.

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
непойму почему, но работает только на I2C1, на I2C2 как в твоем коде, у мя не работает
у меня было наоборот. впрочем, посмотрел эррату на свой чип и мучаться не стал, перевесил на второй.
artko вне форума   Ответить с цитированием
Старый 26.01.2010, 13:22   #16
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 58
Сообщений: 2,938
Вес репутации: 4193/115
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Цитата:
Сообщение от artko Посмотреть сообщение
у меня было наоборот. впрочем, посмотрел эррату на свой чип и мучаться не стал, перевесил на второй.
Поздравляю с вашим "наоборот"...
И с цитированием... повнимательнее...
HHIMERA вне форума   Ответить с цитированием
Старый 26.01.2010, 13:22   #17
urry
Senior Member
 
Аватар для urry
 
Регистрация: 11.10.2007
Возраст: 58
Сообщений: 462
Вес репутации: 228/54
urry has a spectacular aura abouturry has a spectacular aura abouturry has a spectacular aura about
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Код:
Софтовый не подходит
чем ? При всех этих нюансах с железным и2с может, спокойней для себя сделать софтовый и не мучиться ? Ведь не spi, особой скорости не нужно... Не понимаю проблемы, если честно...
urry вне форума   Ответить с цитированием
Старый 26.01.2010, 13:32   #18
artko
Member
 
Регистрация: 16.06.2009
Адрес: dp.ua
Возраст: 42
Сообщений: 34
Вес репутации: 100/43
artko will become famous soon enoughartko will become famous soon enough
Отправить сообщение для artko с помощью ICQ Отправить сообщение для artko с помощью Skype™
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
Поздравляю с вашим "наоборот"...
И с цитированием... повнимательнее...
ой, упс. копипаст зло
artko вне форума   Ответить с цитированием
Старый 26.01.2010, 21:37   #19
smdcomp
Senior Member
 
Регистрация: 25.01.2010
Сообщений: 113
Вес репутации: 257/42
smdcomp is a jewel in the roughsmdcomp is a jewel in the roughsmdcomp is a jewel in the rough
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

Цитата:
Сообщение от urry Посмотреть сообщение
Код:
Софтовый не подходит
чем ? При всех этих нюансах с железным и2с может, спокойней для себя сделать софтовый и не мучиться ? Ведь не spi, особой скорости не нужно... Не понимаю проблемы, если честно...
ну не из-за глупости же своей Микрочип целых два аппаратных I2C на одном кристалле делает.
smdcomp вне форума   Ответить с цитированием
Старый 27.01.2010, 14:07   #20
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: pic24f64ga004 & tic154 & C30 Не показывает ничего.

я прицепил дисплей к первому И2Ц проводками и радуюсь. Плата тестовая так что в следующих версиях просто на первый и2ц разведу дорожки..


И уже свой знакогенератор написал с шрифтом как в калькуляторе.


Как вам?
  Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем/как отлаживать код написаный на Си в WinAVR Yokel Микроконтроллеры других производителей 49 30.09.2014 09:48
Присоветуйте тип и способ управления MOSFETом "верхнего" плеча dr_Sash Источники питания и силовая электроника 37 08.09.2012 18:50
Передача даных по радиоканалу ZLOI Общетехнические вопросы 40 23.11.2007 12:29
Нужна прошивка на PIC16F877 для бегущей строки!!! VanoMC Продукция MICROCHIP 12 13.04.2007 11:06


Часовой пояс GMT +3, время: 07:42.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot