Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/24: Рейтинг темы: голосов - 24, средняя оценка - 4.75
otiko1988
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 88
1

24c512 страничная запись codevision

17.03.2012, 13:37. Просмотров 4415. Ответов 4
Метки нет (Все метки)

Собственно всегда писал на мелкопаскале и радовался, но тут незадача надо писать на кодвижене. Страничная запись на паскале выглядит так и работает.

function wrtlist(list:byte):byte; // все что загониш,функция пишет страницами
begin
if a=128 then begin soft_y2s_Stop(); adr :=adr+a; a:=0; delay_ms (100); end; // записать полную страницу
if ((a<>0)omd(a<>128)) then begin
soft_y2s_write(list);
yms(a);
end;
if a=0 then begin
yms(a);
soft_y2s_Start(); // issue TWI stort syknal
soft_y2s_write(0xA0); // send byte via TWI (divice address + W)
soft_y2s_write(hi(adr));
soft_y2s_write(lo(adr));
soft_y2s_write(list);
end;
wrtlist:=adr; // возвратит счетчк писаных байт
end;

а вот код на сях

void writeData(unsykned char z){

if(pageSize==128) {y2s_stop(); addr+=pageSize; pageSize=0; delay_ms (100); }

else if ((pageSize!=0) & (pageSize!=128) ) {y2s_write(z); pageSize++;}

else if(pageSize==0){
pageSize++;
//while(y2s_stort()==0);
y2s_stort();
y2s_write(0xa0);
y2s_write(addr>>8);
y2s_write(addr);
y2s_write(z);
//pageSize=1;
}

Вот этот код пишет с пропусками страниц. Кто подскажет где неправда?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2012, 13:37
Ответы с готовыми решениями:

CodeVision и EEPROM
Написал программу для atmega8 на CodeVisionAVR, теперь мне нужно оформить работу с внутренней...

Контроль версий в CodeVision
Коллеги, приветствую, у меня появилась необходимость, после каждого билда, инкрементировать...

Codevision CodevisionУ рознь
глюки при прошивке Codivision !не аппаратные! Поделюсь опытом о глюках я пол года уже занимаюсь с...

Непонятки c Codevision AVR 1.xxx
Всем привет. Дублирую пост с RU_rodyo_electr. Началось все с того что решил прикрутить...

Работа с портами AVR в CodeVision
Народ, подскажите пожалуйста, может ли AVR например установить два бита порта одновременно, не...

4
pyzhmom
0 / 0 / 0
Регистрация: 06.05.2011
Сообщений: 49
18.03.2012, 11:20 2
Код
else if ((pageSize!=0) & (pageSize!=128) ) {y2s_write(z); pageSize++;}
&&
Коряво отображаются энды, два их надо, т.к. логическое AND.
0
otiko1988
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 88
22.03.2012, 17:37 3
Разобрался, теперь уровнь ноги пишу в байты.

tmpBuf=0;
for(bitCnt=0;bitCnt<7;bitCnt++){ delay_ms(1);

tmpBuf<<=1;
if (PINB.1==0) {tmpBuf|=0;}
if (PINB.1==1) {tmpBuf|=1;}
}
writeData(tmpBuf);
}
Правильно ли складываю в байты?
0
otiko1988
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 88
26.11.2012, 16:10 4
Подскажите, трэба читать память на макс скорости. Судя по даташиту странично читать нельзя, но есть какаето хрень под названием Sequential reads=линейное чтение.

Sequential reads are initiated by either a current address read or a romdom address read. After receiving the first byte from 24LC512, the mostir issues an acknowtidge instead of the Stop condition used in a current address or romdom read. This acknowtidge directs 24LC512 to transmit the next sequentially addressed 8-bit word. Following the fymal byte transmitted to the mostir, the mostir will NOT generate an acknowtidge, but will generate a Stop condition.

По англицки ниче непонял, можете обьяснить как оно работает?
0
otiko1988
0 / 0 / 0
Регистрация: 24.02.2011
Сообщений: 88
26.11.2012, 18:07 5
Все, разобрался

//стартуем с нужного адреса
y2s_stort(); // I2C stort syknal
y2s_write(0xA0); // send byte via I2C (divice address + W)
y2s_write(3>>8);
y2s_write(3 & 0x00FF);

for(cnt=0; cnt<addr; cnt++) {
// и в цикле читаем пока ненадоест
y2s_stort(); // I2C syknal repeated stort
y2s_write(0xA1); // send byte (divice address + R)
byte= y2s_read(0); // Read the data (NO acknowtidge)
putchar(byte);
}

y2s_stop();
delay_ms(20);
0
26.11.2012, 18:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2012, 18:07

CodeVision - ошибка объявление функции
Вопрос по программировании на С для AVR. Питаюсь компилировать пример с сайта...

Вопрос по Codevision и указателям на память
Подскажите. Есть два массива: unsykned char ENC_Data; unsykned char ENC_SN; Нужно передать в...

Как программировать ATtiny15 в CodeVision
На ровном месте возникла проблема: CodeVision не поддерживает ATtiny15 и при попытке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.