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

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

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

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

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

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


 
Опции темы

Указатели и EEPROM 24c16 + stm32

Непрочитано 04.01.2018, 17:47  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

Предлагаю для начала выкинуть отправку старшего байта address (подчеркнутая строка), коли уж оно само его умеет слать... И количество отправляемых байт, соответственно, уменьшить на единицу.

А когда она перестанет зависать, заняться чтением, в котором тоже явно наворочено не того (посылка байта до выставления START, и т.д. тоже присутствует)...
Реклама:

Последний раз редактировалось AR_Favorit; 04.01.2018 в 18:05.
AR_Favorit вне форума  
Непрочитано 04.01.2018, 18:50  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

Запись оставил пока так. В режиме отладки всё уходит правильно.
PHP код:
void eeprom_pagewrite(uint16_t address, uint8_t *buf,uint8_t nbytes)
{
    uint8_t index=0;
   
    I2C1-›CR2 = I2C_CR2_AUTOEND |  ((2+nbytes)‹‹16) | (EEPROM_OWN_ADDRESS‹‹1); 
        
            /* Check Tx empty */
      while (!(I2C1-›ISR & I2C_ISR_TXE) );

     I2C1-›TXDR =(uint8_t) (address››8); /* Byte to send */
     I2C1-›CR2 |= I2C_CR2_START; /* Go */
        
        while (!(I2C1-›ISR & I2C_ISR_TXIS) );
        I2C1-›TXDR = (uint8_t)(address &0x00FFB); /* yte to send */
    for(index=0;indexnbytes;index++)
     {
      I2C1-›TXDR = buf[index] ; /* Byte to send */
        while ( (!(I2C1-›ISR & I2C_ISR_TXE))  ) {};
         
        
//       Delay_ms(10);
     }
} 
А вот с чтением воюю.
Функцию пока страшную не буду выкладывать дабы вообще не заплевали ))) Но там было кучу нетого что надо. Сейчас ри чтении отправляет адрес за две посылки, потом в for(index=0;index‹nbytes;index++) ничего не получает в I2C1-›RXDR. Я сделал чтение повторно(функцию чтения 2 раза подряд написал) и при втором входе в функцию после первой отправки адреса сразу в I2C1-›RXDR приходит то что надо.... Смотрю в даташите порядок чтения - пока не получается сообразить.... Золотая вещь отладка в стм....
miwutka вне форума  
Непрочитано 04.01.2018, 19:19  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

Запускай ногодрыгом и не мучайся. Не стоит оно того.
Easyrider83 вне форума  
Непрочитано 04.01.2018, 19:57  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

ногодрыгом тож надо разбираться )) Я уже гдето близко )) Немогу понять почему после второй посылки адреса откуда читать из памяти еепромки сразу летят подряд байты... Пока происходит вход в цикл for уже 3 байта прилетает и он успевает записать в буфер только последний четвертый.... Мне этот код гдето тут дали на форуме. Но до конца он был не сделан )) Надо доделать...
miwutka вне форума  
Непрочитано 04.01.2018, 19:59  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

вспомнил что есть анализатор у меня... Ща его подключу и посмотрю что да как происходит...
miwutka вне форума  
Непрочитано 04.01.2018, 20:30  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

В даташите если я правильно понимаю надо слать 8-битный адрес памяти ячейки из которой я хочу считать значение? Я шлю 16-битный адрес куда хочю записать данные так же и при чтении из еепром. Наверно надо 8-битный слать? В даташите 8-бит на картинке....
miwutka вне форума  
Непрочитано 04.01.2018, 22:56  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

Сообщение от miwutka Посмотреть сообщение
В даташите если я правильно понимаю надо слать 8-битный адрес памяти ячейки из которой я хочу считать значение? Я шлю 16-битный адрес куда хочю записать данные так же и при чтении из еепром.
Старт, старший байт адреса (девайс_ид+признак записи), младший байт, еще раз старт, старший байт (девайс_ид+признак чтения), полетели читаемые байты.

F0 сам отправляет старший байт (учитываем это и не забываем младший бит в нем менять, для записи 0, для чтения 1)...
AR_Favorit вне форума  
Непрочитано 04.01.2018, 22:58  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

В процедуре записи выкиньте I2C1-›TXDR =(uint8_t) (address››8 ); /* Byte to send */ перед отправкой START. Она там не срабатывет и не нужна.

Для чего я датаграмму из даташита привел? никаких записей в TXDR до выставления START.
AR_Favorit вне форума  
Сказали "Спасибо" AR_Favorit
miwutka (04.01.2018)
Непрочитано 04.01.2018, 23:01  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

Сообщение от Easyrider83 Посмотреть сообщение
Запускай ногодрыгом и не мучайся. Не стоит оно того.
В данном случае (F0 и EEPROM) вполне себе стоит, ИМХО.
AR_Favorit вне форума  
Непрочитано 04.01.2018, 23:42  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Указатели и EEPROM 24c16 + stm32

у меня еще дисплей олед 1306 на шине. Ногодрыг не катит...

Добавил процесс записи. Убрал строку которую написали убрать. Вроде всё красиво по записи...?
И в нулевой адрес пишет и в 4-тый. Запись проходит норм... С диаграммой не очень подружился...
Ща буду пытаться...
Миниатюры:
Нажмите на изображение для увеличения
Название: eeprom_write.jpg
Просмотров: 0
Размер:	152.7 Кб
ID:	123593  

Последний раз редактировалось miwutka; 04.01.2018 в 23:52.
miwutka вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изучаем STM32 Cortex M3 EugVor ARM 6171 20.05.2025 20:16
Программирование программатором STERH 007 PIC микроконтроллеров ispitatel1 Песочница (вопросы новичков) 4 17.04.2017 17:18
CVAVR порча переменных Aselicon AVR 5 06.04.2017 22:18
Протеус и система зажигания после симуляции не сохраняет настройки cfif11 Proteus 23 04.02.2012 01:26
STM32 eeprom emulation serb-radio Микроконтроллеры, АЦП, память и т.д 0 26.10.2011 13:42


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.