Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

Закрытая тема
Опции темы
Непрочитано 24.06.2013, 11:14   #11
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,034
Сказал спасибо: 60
Сказали Спасибо 3,947 раз(а) в 2,303 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Софт-драйвер twi->at24c на си?

Повезло)))
Реклама:
niXto вне форума  
Непрочитано 30.08.2013, 00:21   #12
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Софт-драйвер twi->at24c на си?

Не, нифига не повезло )
Прошу помощи, бо за трое суток спал 6-8 часов в сумме наверно.. голова не понимает, где ошибко..

Цитата:
void ext_eeprom_write_byte(uint16_t _addr, uint8_t _val)
{
uint8_t ack = 0; //бит подтверждения для I2C
i2start(); //старт
i2write(0xA0); //выбираем AT24C16на линии I2C с признаком записи (1 в мзр)
ack |= i2ack(); //бит подтверждения
i2write(_addr); //записываем адрес
ack |= i2ack(); //бит подтверждения
i2write(_val); //записываем значение
ack |= i2ack(); //бит подтверждения
i2stop(); //стоп
_delay_ms(3);//переходные процессы
if(ack != 0) PORTC |= (1‹‹PC7); //если ack изменился (не ноль), высветим ошибку
}

uint8_t ext_eeprom_read_byte(uint16_t _addr)
{
uint8_t ack = 0;//обнуляем бит подтверждения
uint8_t _val = 0x00;
i2start(); //старт
i2write(0xA0); //выбираем AT24C16на линии I2C с признаком записи (1 в мзр)
ack |= i2ack();//контролируем бит потверждения
i2write(_addr);//пишем адрес чтения
ack |= i2ack();//бит подтверждения
i2start();//старт
i2write(0xA1);//адрес AT24C16 с признаком чтения в младшем разряде
ack |= i2ack();//бит подтверждения
_val = i2read(); //считываем значение
//i2mack();//бит подтверждения от микроконтроллера
i2nack();//конец считывания
i2stop();
_delay_ms(3);//стоп и пауза для переходных процессов
return _val;
}
где оно? )
whoim вне форума  
Непрочитано 30.08.2013, 00:37   #13
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Софт-драйвер twi->at24c на си?

что то смешались кони, люди.. открываю даташит, там страничная же запись
whoim вне форума  
Непрочитано 30.08.2013, 01:02   #14
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Софт-драйвер twi->at24c на си?

признак чтения в адресе не стоял и лишнего набежало.. и правда все смешалось ))
whoim вне форума  
Непрочитано 30.08.2013, 01:40   #15
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Софт-драйвер twi->at24c на си?

и все равно чего то не хочет.. поциэнт - 24c16wp stm, который вроде с 8-ю банками..

Цитата:
void ext_eeprom_write_byte(uint16_t _addr, uint8_t _val)
{
cli();
uint8_t ack = 0; //бит подтверждения для I2C
i2start(); //старт
i2write(0xA0 | ((_addr››&0b00000111)‹‹1); //выбираем AT24C16на линии I2C с признаком записи (1 в мзр)
ack |= i2ack(); //бит подтверждения
i2write(_addr); //записываем адрес
ack |= i2ack(); //бит подтверждения
i2write(_val); //записываем значение
ack |= i2ack(); //бит подтверждения
i2stop(); //стоп
_delay_ms(10); //переходные процессы
//if(ack != 0) PORTC &= ~(1‹‹PC7); //если ack изменился (не ноль), высветим ошибку
sei();
}

uint8_t ext_eeprom_read_byte(uint16_t _addr)
{
cli();
uint8_t ack = 0;//обнуляем бит подтверждения
uint8_t _val = 0x00;
i2start(); //старт
i2write(0xA0 | ((_addr››&0b00000111)‹‹1);//адрес AT24C16
ack |= i2ack(); //бит подтверждения
i2write(_addr);//пишем адрес чтения
ack |= i2ack();//бит подтверждения
i2start(); //старт
i2write((0xA0 | ((_addr››&0b00000111)‹‹1)|1);//адрес AT24C16 с признаком чтения в младшем разряде
ack |= i2ack();//бит подтверждения
_val = i2read(); //считываем значение
i2nack(); //конец считывания
i2stop();
_delay_ms(10); //стоп и пауза для переходных процессов
return _val;
sei();
}
к черту, спать..

Последний раз редактировалось whoim; 30.08.2013 в 01:57.
whoim вне форума  
Непрочитано 31.08.2013, 01:22   #16
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Софт-драйвер twi->at24c на си?

чтение родного даташита
http://www.st.com/web/en/resource/te...DM00061111.pdf
привело к пониманию о 8-ми блоках по 256 байт каждый. Три бита задаются в адресе ведомого, остальные восемь - в байте записи.
Другими словами, блок для записи задается в адресе
Код:
#define EEPROM_BUS_ADDRESS 0xA0
i2write(EEPROM_BUS_ADDRESS | ((_addr››8)&0b00000111)‹‹1); ////адрес M24C16-WMN6TP
а адрес вычисляется
Код:
i2write((uint8_t)_addr - ((_addr››8)‹‹8)); //пишем адрес записи
остальные шаги по даташиту совпадают (насколько я вчитался). Но - не работает. Доставать анализатор пока неохота, на такой простой задаче то )

Поможет кто с поиском ошибки? Уверен - программная.




Последний раз редактировалось whoim; 31.08.2013 в 01:24.
whoim вне форума  
Закрытая тема

Закладки

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Драйвер MC33153 Схема подключения AssemblerRu Информация по радиокомпонентам 7 23.09.2012 10:35
опознать драйвер для LED лампы от битой матрицы ustass Ремонт оргтехники 0 23.01.2012 23:16
Тяжело ли сделать такой драйвер? dess2 Источники питания и свет 14 05.03.2011 15:20
TWI as master и USI as slave duritskiy Микроконтроллеры, АЦП, память и т.д 20 06.09.2007 19:18
Микросхема – драйвер, напрямую управляемая от программируемо Alexeii Информация по радиокомпонентам 2 01.02.2007 16:11


Часовой пояс GMT +4, время: 05:28.


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