Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.09.2011, 13:25
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Работа с еепром 24Схх Помогите разобраться
Добрый день уважаемые. Возникла такая проблема. Написал код. Вроди все работает в симуляторе при условии что пишу в еепром до 10байт
если пишу более 10байт то данные считываются не корректно... в чем это проблема? симулятор тупит? выкладываю полный проект.
сейчас сделал так: набираю значение пароля (якобы) копирую в переменную и отправляю в 24Схх а потом считываю и смотрю на индикаторе...
вот так я читаю и записываю в микросхему
Код:
|
/************************************************** *************************************
+ ×èòàåì ÿ÷åéêó èç 24ñ02.
+  ïàðàìåòðàõ óêàçûâàåòñÿ àäðåñ ÷èòàåìîé ÿ÷åéêè.
+ Ôóíêöèÿ âîçâðàùàåò ïðî÷èòàíîå èç ÿ÷åéêè.
************************************************** **************************************/
unsigned char eep_read(unsigned char address) {
unsigned char data; //ïåðåìåííàÿ äëÿ ïðî÷èòàíûõ äàííûõ
i2c_start(); //ïîñûëàåì êîìàíäó "ñòàðò" â øèíó i2c
i2c_write(EEPROM_BUS_ADDRESS); //ïîñûëàåì â øèíó àäðåñ óñòðîéñòâà
i2c_write(address); //ïîñûëàåì â øèíó àäðåñ ÷èòàåìîé ÿ÷åéêè
i2c_start(); //ñíîâà ïîñûëàåì "ñòàðò" â øèíó
i2c_write(EEPROM_BUS_ADDRESS | 1); //íåçíàþ çà÷åì íî áåç ýòîãî íå ðàáîòàåò
data=i2c_read(0); //ïðèíèìàåì äàííûå ñ ëèíè è ñîõðàíÿåì â ïåðåìåííóþ
i2c_stop(); //ïîñûëàåì êîìàíäó "ñòîï"
return data; //âîçâðîùàåì çíà÷åíèå ïðî÷èòàíîãî
}
/************************************************** *************************************
+ Çàïèñü äàííûõ â ÿ÷åéêó 24ñ02.
+  ïàðàìåòðàõ óêàçûâàåòñÿ àäðåñ çàïèñûâàåìîé ÿ÷åéêè (adress).
+ Òàêæå óêàçóåì â ïàðàìåòðàõ äàííûå êîòîðûå íàäî çàïèñàòü â ÿ÷åéêó.
************************************************** **************************************/
void eep_write(unsigned char address, unsigned char data) {
i2c_start(); //ïîñûëàåì êîìàíäó "ñòàðò" â øèíó i2c
i2c_write(EEPROM_BUS_ADDRESS); //ïîñûëàåì â øèíó àäðåñ óñòðîéñòâà
i2c_write(address); //ïîñûëàåì â øèíó àäðåñ çàïèñûâàåìîé ÿ÷åéêè
i2c_write(data); //ïîñûëàåì äàííûå äëÿ çàïèñè
i2c_stop(); //ïîñûëàåì êîìàíäó "ñòîï"
}
void epp_save() { //Ñîõðàíåíèå äàííûõ â ååïðîì
eep_write(0x01,temp1); // Çàïèñü äàííûõ òåìï â Ååïðîì
eep_write(0x02,temp2);
eep_write(0x03,temp3);
eep_write(0x04,temp4);
eep_write(0x05,temp5);
eep_write(0x06,temp6);
eep_write(0x07,term_set_LR);
eep_write(0x08,term_set_P);
eep_write(0x09,delta_LR);
eep_write(0x0A,delta_P);
eep_write(0x0B,term_max_LR);
eep_write(0x0C,term_max_P);
eep_write(0x0D,term_max_delta_LR);
eep_write(0x0E,term_max_delta_P);
eep_write(0x0F,error_calendar_current0);
eep_write(0x10,EPP_SING);// ñèãíàòóðà ñîîòâåòñòâèÿ Ååïðîì
eep_write(0x11,error_calendar_current1);
eep_write(0x12,error_calendar_volt_out0);
eep_write(0x13,error_calendar_volt_out1);
eep_write(0x14,error_calendar_volt_in0);
eep_write(0x15,error_calendar_volt_in1);
eep_write(0x16,error_calendar_temperature_left0);
eep_write(0x17,error_calendar_temperature_left1);
eep_write(0x18,error_calendar_temperature_right0);
eep_write(0x19,error_calendar_temperature_right1);
eep_write(0x1A,error_calendar_temperature_P0);
eep_write(0x1B,error_calendar_temperature_P1);
eep_write(0x1C,error_temperature_sensor0);
eep_write(0x1D,error_temperature_sensor1);
eep_write(0x1E,control_pass0);
eep_write(0x1F,control_pass1);
eep_write(0x20,control_pass2);
eep_write(0x21,control_pass3);
//eep_write(0x22,control_pass0);
//eep_write(0x23,control_pass3);
}
void epp_load() { //Çàãðóçêà äàííûõ ñ ååïðîì
if (eep_read(0x10)==EPP_SING) { //Åñëè ñèãíàòóðà ïðÿâåëüíàÿá ÷èòàåì äàííûå ñ ååïðîì
temp1=eep_read(0x01); // çàãðóçêà èç ååïðîì ïðè âûõîäå èç ìåíþ
temp2=eep_read(0x02);
temp3=eep_read(0x03);
temp4=eep_read(0x04); // óïðàâëåíèå ðåæèìàìè
temp5=eep_read(0x05);
temp6=eep_read(0x06);
term_set_LR=eep_read(0x07); // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
term_set_P=eep_read(0x08); // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
delta_LR=eep_read(0x09); // ÷èòàåì äåëüòó
delta_P=eep_read(0x0A); // ÷èòàåì äåëüòó
term_max_LR=eep_read(0x0B); // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
term_max_P=eep_read(0x0C); // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
term_max_delta_LR=eep_read(0x0D); // ÷èòàåì äåëüòó
term_max_delta_P=eep_read(0x0E); // ÷èòàåì äåëüòó
error_calendar_current0 = eep_read(0x0F); // ÷èòàåì êîëè÷åñòâî îøèáîê ïî òîêó â ïåðâîì áàéòå
error_calendar_current1 = eep_read(0x11); // ÷èòàåì êîëè÷åñòâî îøèáîê ïî òîêó âî âòîðîì áàéòå
error_calendar_volt_out0 = eep_read(0x12); // ÷èòàåì êîëè÷åñòâî îøèáîê ïî âûõîäíîìó íàïðÿæåíèþ â ïåðâîì áàéòå
error_calendar_volt_out1 = eep_read(0x13); // ÷èòàåì êîëè÷åñòâî îøèáîê ïî âûõîäíîìó íàïðÿæåíèþ âî âòîðîì áàéòå
error_calendar_volt_in0 = eep_read(0x14); // ÷èòàåì êîëè÷åñòâî îøèáîê ïî íàïðÿæåíèþ íà âõîäå â ïåðâîì áàéòå
error_calendar_volt_in1 = eep_read(0x15); // ÷èòàåì êîëè÷åñòâî îøèáîê ïî íàïðÿæåíèþ íà âõîäå âî âòîðîì áàéòå
error_calendar_temperature_left0 = eep_read(0x16);
error_calendar_temperature_left1 = eep_read(0x17);
error_calendar_temperature_right0 = eep_read(0x18);
error_calendar_temperature_right1 = eep_read(0x19);
error_calendar_temperature_P0 = eep_read(0x1A);
error_calendar_temperature_P1 = eep_read(0x1B);
error_temperature_sensor0 = eep_read(0x1C);
error_temperature_sensor1 = eep_read(0x1D);
control_pass0 = eep_read(0x1E);
control_pass1 = eep_read(0x1F);
control_pass2 = eep_read(0x20);
control_pass3 = eep_read(0x21);
//control_pass0 = eep_read(0x22);
//control_pass3 = eep_read(0x23);
}else{
temp1=1; // åñëè ñèãíàòóðà áèòàÿ
temp2=1; // ãðóçèì åäèíèöè.
temp3=1;
temp4=1;
temp5=1;
temp6=1;
term_set_LR=0; // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
term_set_P=0; // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
delta_LR=0; // ÷èòàåì äåëüòó
delta_P=0; // ÷èòàåì äåëüòó
term_max_LR=0; // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
term_max_P=0; // ÷èòàåì óñòàíîâëåííóþ òåìïåðàòóðó
term_max_delta_LR=0; // ÷èòàåì äåëüòó
term_max_delta_P=0; // ÷èòàåì äåëüòó
error_calendar_current0=0; // ÷èòàåì êîëè÷åñòâî îøèáîê ïî òîêó â ïåðâîì áàéòå
error_calendar_current1=0; // ÷èòàåì êîëè÷åñòâî îøèáîê ïî òîêó âî âòîðîì áàéòå
error_calendar_volt_out0=0; // ÷èòàåì êîëè÷åñòâî îøèáîê ïî âûõîäíîìó íàïðÿæåíèþ â ïåðâîì áàéòå
error_calendar_volt_out1=0; // ÷èòàåì êîëè÷åñòâî îøèáîê ïî âûõîäíîìó íàïðÿæåíèþ âî âòîðîì áàéòå
error_calendar_volt_in0=0; // ÷èòàåì êîëè÷åñòâî îøèáîê ïî íàïðÿæåíèþ íà âõîäå â ïåðâîì áàéòå
error_calendar_volt_in1=0; // ÷èòàåì êîëè÷åñòâî îøèáîê ïî íàïðÿæåíèþ íà âõîäå âî âòîðîì áàéòå
error_calendar_temperature_left0=0;
error_calendar_temperature_left1=0;
error_calendar_temperature_right0=0;
error_calendar_temperature_right1=0;
error_calendar_temperature_P0=0;
error_calendar_temperature_P1=0;
error_temperature_sensor0=0;
error_temperature_sensor1=0;
control_pass0=0;
control_pass1=0;
control_pass2=0;
control_pass3=0;
}
} |
вот так отправляю данные и потом смотрю
Код:
|
void pass()
{
switch(a)
{
case 0:
if (BTN_PLUS==0 && flags_button==0){ pass3++; flags_button=1; timer_pass=0; }
if (BTN_MINUS==0 && flags_button==0){ pass3--; flags_button=1; timer_pass=0; }
if (BTN_MENU==0 && flags_button==0) { a=1; flags_button=1; timer_pass=0; }
if (BTN_MENU & BTN_PLUS & BTN_MINUS) flags_button=0;
if (pass3 › 9 && pass3 ‹ 20) pass3 = 0;
if (pass3 › 250) pass3 = 9;
if (timer_pass ‹ 10)
{
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[pass3];
led_buff[3]=led_table[11]; //13
led_buff[4]=led_table[11];
led_buff[5]=led_table[11];
} else {
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[10];
led_buff[3]=led_table[11]; //13
led_buff[4]=led_table[11];
led_buff[5]=led_table[11];
}
if (++timer_pass › 20)
{
timer_pass=0;
}
break;
case 1:
if (BTN_PLUS==0 && flags_button==0) { pass2++; flags_button=1; timer_pass=0;}
if (BTN_MINUS==0 && flags_button==0){ pass2--; flags_button=1; timer_pass=0; }
if (BTN_MENU==0 && flags_button==0){ a=2; flags_button=1; timer_pass=0;}
if (BTN_MENU & BTN_PLUS & BTN_MINUS) flags_button=0;
if (pass2 › 9 && pass2 ‹ 20) pass2 = 0;
if (pass2 › 250) pass2 = 9;
if (timer_pass ‹ 10)
{
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[11];
led_buff[3]=led_table[pass2]; //13
led_buff[4]=led_table[11];
led_buff[5]=led_table[11];
} else {
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[11];
led_buff[3]=led_table[10]; //13
led_buff[4]=led_table[11];
led_buff[5]=led_table[11];
}
if (++timer_pass › 20)
{
timer_pass=0;
}
break;
case 2:
if (BTN_PLUS==0 && flags_button==0) { pass1++; flags_button=1; timer_pass=0; }
if (BTN_MINUS==0 && flags_button==0) { pass1--; flags_button=1; timer_pass=0;}
if (BTN_MENU==0 && flags_button==0){ a=3; flags_button=1; timer_pass=0; }
if (BTN_MENU & BTN_PLUS & BTN_MINUS) flags_button=0;
if (pass1 › 9 && pass1 ‹ 20) pass1 = 0;
if (pass1 › 250) pass1 = 9;
if (timer_pass ‹ 10)
{
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[11];
led_buff[3]=led_table[11]; //13
led_buff[4]=led_table[pass1];
led_buff[5]=led_table[11];
} else {
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[11];
led_buff[3]=led_table[11]; //13
led_buff[4]=led_table[10];
led_buff[5]=led_table[11];
}
if (++timer_pass › 20)
{
timer_pass=0;
}
break;
case 3:
if (BTN_PLUS==0 && flags_button==0){ pass0++; flags_button=1; timer_pass=0;}
if (BTN_MINUS==0 && flags_button==0){ pass0--; flags_button=1; timer_pass=0;}
if (BTN_MENU==0 && flags_button==0){ a=0; flags_button=1; timer_pass=0; }
if (BTN_MENU & BTN_PLUS & BTN_MINUS) flags_button=0;
if (pass0 › 9 && pass0 ‹ 20) pass0 = 0;
if (pass0 › 250) pass0 = 9;
if (timer_pass ‹ 10)
{
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[11];
led_buff[3]=led_table[11]; //13
led_buff[4]=led_table[11];
led_buff[5]=led_table[pass0];
} else {
led_buff[0]=led_table[19]; //13
led_buff[1]=led_table[13];
led_buff[2]=led_table[11];
led_buff[3]=led_table[11]; //13
led_buff[4]=led_table[11];
led_buff[5]=led_table[10];
}
if (++timer_pass › 20)
{
timer_pass=0;
}
break;
case 4:
led_buff[5]=led_table[control_pass0]; //13
led_buff[4]=led_table[control_pass1];
led_buff[3]=led_table[control_pass2];
led_buff[2]=led_table[control_pass3]; //13
led_buff[1]=led_table[10];
led_buff[0]=led_table[10];
while(b)
{
epp_load();
b--;
}
break;
}
if (BTN_PLUS==0 && BTN_MINUS==0)
{
control_pass0 = pass0;
control_pass1 = pass1;
control_pass2 = pass2;
control_pass3 = pass3;
timer_eep=100;
a=4;
b=1;
flags_button=1;
}
if (BTN_PLUS & BTN_MINUS & BTN_MENU)
{
flags_button=0;
}
if (BTN_PLUS==0 & a==4 & flags_button==0)
{
flags_button=1;
a=0;
}
} |
Последний раз редактировалось artyomugr; 07.09.2011 в 13:54.
|
|
|
|
07.09.2011, 13:47
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Какая именно 24с? В младшие за раз пишется только 8 байт, читается неограниченно вся память по кольцу
|
|
|
|
07.09.2011, 13:51
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
пробую 24с02,24с01,24с04 все так себя ведут.
Так я помоему пишу по байтово, должно по идее работать...
|
|
|
|
07.09.2011, 14:05
|
|
Прописка
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Сообщение от artyomugr
|
пробую 24с02,24с01,24с04 все так себя ведут.
Так я помоему пишу по байтово, должно по идее работать...
|
После записи страницы (для 24с02== 8 байт 24с04\08 ==16 байт) сделай задержку на запись ~10mS.Если побайтово-лучше после каждого байта.В твоей программе лучше использовать постраничную запись т.к. пишеш много за один раз. Установи EEPROM_BUS_ADDRESS, адрес начала записи,потом просто отпрать от ‹=8 или ‹=16 (в зависимости от типа микросхемы)данных,потом stop- микросхема начнет запись(~10mS).
При постраничной записи лучше выравнивать адрес записываемых данных с началом страницы.
Последний раз редактировалось heady69; 07.09.2011 в 14:34.
|
|
|
|
07.09.2011, 16:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 16.02.2010
Сообщений: 1,407
Сказал спасибо: 0
Сказали Спасибо 128 раз(а) в 114 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Не все схемы пишутся постранично.
Если писать побайтно, то обязательно
надо после записи байта делать задержку 10 mS.
|
|
|
|
07.09.2011, 17:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Можно и не делать, микросхема просто не будет отзываться (9й бит) пока не запишется
|
|
|
|
08.09.2011, 12:06
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Вчера весь вечер сидел над кодом.... перепробовал все. Не корректно сохраняются данные в еепром, или не правильно читаются, и при каждой новой симуляции данные которые не верные меняются. Например сначала не сохранялся первый байт и третий , потом второй и третий и т.д.... я в шоке. Где мне можно подробно на русском почитать о еепром 24сХХ ? либо простой пример чтения записи в микросхему большого обьема данных.
С ув. Артем
|
|
|
|
08.09.2011, 12:55
|
|
Прописка
Регистрация: 25.09.2009
Адрес: Ivanovo
Сообщений: 156
Сказал спасибо: 3
Сказали Спасибо 67 раз(а) в 60 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Код:
|
/*
************************************************** *
*
* I2C Library
* постраничная запись\чтение 24c16
************************************************** **
*/
#include ‹INTRINS.H›
#include "I2C_LIB.H"
#include "lcd_lib.h"
bit i2c_busy, no_ack, bus_fault;
unsigned char data iic_buffer [16];
unsigned char bdata a;
sbit LSB=a ^ 0;
sbit MSB=a ^ 7;
void main(void)
{
unsigned char chip_adress ;
unsigned char page_number;
lcd_init();
chip_adress =0xA0;
page_number =1;
iic_buffer[0]='S';
iic_buffer[7]='L';
iic_buffer[15]='A';
write_I2C_page (chip_adress,page_number,iic_buffer);
iic_buffer[0]=0;
iic_buffer[7]=0;
iic_buffer[15]=0;
read_I2C_page (chip_adress,page_number,iic_buffer);
lcd_putchar( iic_buffer[15] );
while (1);
}
/*
*************************************
* Delay for write SEEPROM
*************************************
*/
void WR_Delay(unsigned char j)
{
unsigned char i;
for(;j›0;j--)
{
for(i=0;i‹125;i++)
{;}
}
}
/*
************************************
* Sending Stop Condition
************************************
*/
void send_stop()
{
sda = 0;
scl = 1;
HOLD;
sda = 1;
i2c_busy = 0;
}
/*
************************************
* I2C Start Condition
*
* NOTE: need to use it.
************************************
*/
void master(unsigned char slave_addr)
{
i2c_busy = 1;
no_ack = 0;
bus_fault = 0;
sda =1;
scl =1;
if(!scl||!sda)
bus_fault = 1;
else
{
sda = 0; //start condition
HOLD;
scl = 0;
HOLD;
send_byte(slave_addr);
}
}
/*
************************************
* Sending a byte on I2C Bus
************************************
*/
void send_byte(unsigned char i2c_data)
{
unsigned char i;
a=i2c_data;
for(i=0;i‹8;i++)
{
scl=0;
HOLD;
sda=MSB;
a‹‹=1;
_nop_();
scl=1;
HOLD;
scl=0;
}
sda = 1;
scl = 1;
HOLD;
if(!sda)
scl = 0;
else
{
no_ack = 1;
}
HOLD;
}
/*
************************************************** **
* Write page data on I2C bus
* записывает страницу (16 байт) из буфера
* Принимает : unsigned char slave_add-адрес микросхемы
* unsigned char page_number-номер страницы
unsigned char* адрес буфера данных
* Возвращает: ничего
*
************************************************** ***
*/
void write_I2C_page(unsigned char slave_add, unsigned char page_number,unsigned char *write_buff)
{
unsigned int sub_add; //адрес данных в микросхеме
unsigned char bytes_count;
unsigned char i;
sub_add = 16 * page_number; //считаем адрес в seeprom
i = sub_add ››8;
i ‹‹=1; //сдвигаем на r/w bit
slave_add |= i; //составляем slave_add+старший байт адреса
master(slave_add); //start
send_byte(sub_add); //младший
if(no_ack)
send_stop();
else
{
for(bytes_count =0;bytes_count ‹16;bytes_count++)
{
send_byte(*write_buff++);
if(no_ack)
break;
}
send_stop();
WR_Delay(20); //need for SEEPROM
}
}
/*
*********************************************
* Recieve a single byte from I2C Bus
*
* Note: if you are going to recieve
* a single byte then the passing
* argument should be 1.
*
*********************************************
*/
unsigned char recv_byte(unsigned char cnt) {
unsigned char i,rcv_data;
sda =1;
HOLD;
for(i=0;i‹8;i++) {
HOLD;
scl=1;
HOLD;
LSB=sda;
if(i‹7)
a‹‹=1;
HOLD;
scl=0;
HOLD;
}
if(cnt==1)
sda = 1;
else
sda = 0;
scl =1;
HOLD;
scl = 0;
/* sda = 1; don't work with I2C simul!! possible bug in simulation !? */
HOLD;
rcv_data = a;
return rcv_data;
}
/*
************************************************** **
* Read page data on I2C bus
* читает страницу (16 байт) в буфер
* Принимает : unsigned char slave_add-адрес микросхемы
* unsigned char page_number-номер страницы
unsigned char* адрес буфера данных
* Возвращает: ничего
************************************************** ***
*/
void read_I2C_page(unsigned char slave_add, unsigned char page_number, unsigned char *read_buff)
{
unsigned int sub_add;
unsigned char byte_count;
unsigned char i;
sub_add = 16 * page_number; //считаем адрес в seeprom
sda = 1;
scl = 1;
i = sub_add ››8;
i ‹‹=1; //сдвигаем на r/w bit
slave_add |= i; //составляем slave_add+старший байт адреса
master(slave_add); //start
send_byte(sub_add); //младший
sda = 1;
scl = 1;
master(slave_add+1);
if(no_ack)
{
send_stop();
goto exit;
}
for(byte_count =0;byte_count ‹16;byte_count++) {
read_buff[byte_count]=recv_byte(16-byte_count);
}
send_stop();
exit:;
} |
|
|
|
|
08.09.2011, 13:20
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Спасибо Вам большое за код. Но чтото я его плохо понимаю...
Я недавно начал изучать программирование, по этому пока слабенько умею читать код...
Вы не могли бы взглянуть на мой исходник, что я не так делаю... почему код не работает так как надо? Все таки хочу писать и читать по байтово мне как новичку проще понимать код
С ув. Артем
|
|
|
|
08.09.2011, 13:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,801
Сказал спасибо: 2,913
Сказали Спасибо 3,122 раз(а) в 2,112 сообщении(ях)
|
Re: Работа с еепром 24Схх Помогите разобраться
Если хотите, что-бы ошибку нашли в Вашем коде, то его и следовало-бы привести. Т.е. собственно eep_write и eep_read вместо всей этой байды с кривыми каментами в пером посте.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:28.
|
|