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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 04.12.2007, 12:33   #1
msgen1
Частый гость
 
Регистрация: 22.11.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
msgen1 на пути к лучшему
По умолчанию at24c128+atmega

Пытаюсь записать данные во внешнюю EEPROM 24C128 и прочитать их. Микроконтроллер ATMEGA8535 . кварц 10 мгц. Данные вывожу на монитор по RS 232.
В ответ получаю FF.
Помогите пожалуйста разобраться.
Исходник прилагаю.

Прикрепленный файл: 7117798.rar
Реклама:
msgen1 вне форума  
Непрочитано 04.12.2007, 13:50   #2
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: at24c128+atmega

Сообщение от msgen1
Помогите пожалуйста разобраться.
Исходник прилагаю.
А можно вопрос - зачем вы делаете программный I2C если в меге есть аппаратный TWI?

Прикрепленный файл: 7117798.rar
nml вне форума  
Непрочитано 04.12.2007, 14:58   #3
msgen1
Частый гость
 
Регистрация: 22.11.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
msgen1 на пути к лучшему
По умолчанию

У меня макетка с Атмегой.
Шина I2c и работа с внешней ЕЕПРОМ мне нужна в дальнейших разработках, для други мк.
msgen1 вне форума  
Непрочитано 06.12.2007, 14:56   #4
rremix
Временная регистрация
 
Регистрация: 01.11.2006
Сообщений: 66
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rremix на пути к лучшему
По умолчанию

вопрос "контрольный в голову". даже 2:
1. Ждете ли готовности EEPROM после записи (около 5 мс, во время записи она не отвечает на ACK)
2. Корректно ли производятся следующие операции:
START-›EE_I2C_WRITE_ADDR-›DATA_ADDR(2bytes) -›REPEAT_START-›EE_I2C_READ_ADDR-›R.e.a.d.i.n.g....?
В коде разбираться лень, но мне кажеться что с (1) общая напряженка, а (2): адрес на чтение передается раньше, чем REPEAT_START, или я ошибаюсь?
rremix вне форума  
Непрочитано 07.12.2007, 06:54   #5
msgen1
Частый гость
 
Регистрация: 22.11.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
msgen1 на пути к лучшему
По умолчанию

Вот кусок кода на запись:
TWI_write:
sec
rol TWIdata
rjmp TWI_write_first
TWI_write_bit:
lsl TWIdata
TWI_write_first:
breq TWI_get_ack ; Уходим если запись завершена
sbi DDRC,SCLP
brcc TWI_write_low ; Перейти если флаг переноса очищен
nop ; пауза 1 такт
cbi DDRC,SDAP
rjmp TWI_write_high
TWI_write_low:
sbi DDRC,SDAP
rjmp TWI_write_high
TWI_write_high:
rcall Delay_5mkc ; задержка полупериода
cbi DDRC,SCLP
rcall Delay_5mkc ; задержка полупериода
rjmp TWI_write_bit ; продолжаем запись

TWI_get_ack:
sbi DDRC,SCLP
cbi DDRC,SDAP
rcall Delay_5mkc ; задержка полупериода
cbi DDRC,SCLP
TWI_get_ack_wait:
sbis PINC,SCLP ; Ожидаем высокого уровня
rjmp TWI_get_ack_wait
clc
sbic PINC,SDAP
sec
rcall Delay_5mkc ; задержка полупериода
ret

Как видно задержки существуют.

По поводу последовательности чтения, у меня так:
1.Стартуем девайс
2.указываем адрес для чтения
3.Запись в девайс
4.команда девайсу на чтение
5.репстарт
6.Забираем данные из Дата на просмотр
7.стоп девайс
msgen1 вне форума  
Непрочитано 07.12.2007, 09:25   #6
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от msgen1
rcall Delay_5mkc ; задержка полупериода
ret

Как видно задержки существуют.

По поводу последовательности чтения, у меня так:
1.Стартуем девайс
2.указываем адрес для чтения
3.Запись в девайс
4.команда девайсу на чтение
5.репстарт
6.Забираем данные из Дата на просмотр
7.стоп девайс
Вы говорите о разных задержках. rremix писал 5мс, а у Вас 5мкс.
Обратите внимание на параметр Write Cycle Time в даташите. Он для at24c128 на 5В состовляет 10 мс. Нужно учитывать это во время записи страницы в EPROM. ASC во время записи байта сигнализирует о том, что данные записаны в буфер EPROM, но не в саму энергонезависимую память. После STOP внутри ИМС начинается запись в EPROM, которая длиться Write Cycle Time. Внимательно читайте даташит.

Удачи.

-- Прилагается рисунок: --

nokazus вне форума  
Непрочитано 07.12.2007, 11:02   #7
msgen1
Частый гость
 
Регистрация: 22.11.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
msgen1 на пути к лучшему
По умолчанию

Спасибо, я понял ошибку.
TWI_get_ack:
sbi DDRC,SCLP
cbi DDRC,SDAP
rcall Delay_5mkc ; задержка
cbi DDRC,SCLP
TWI_get_ack_wait:
sbis PINC,SCLP ; Ожидаем высокого уровня
rjmp TWI_get_ack_wait
clc
sbic PINC,SDAP
sec
rcall Delay_10ms ; задержка 10ms
ret
Но ничего не изменилось..
msgen1 вне форума  
Непрочитано 09.12.2007, 19:35   #8
rremix
Временная регистрация
 
Регистрация: 01.11.2006
Сообщений: 66
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
rremix на пути к лучшему
По умолчанию

Ув. nokazus! Буду спорть:
Сообщение от nokazus
ASC во время записи байта сигнализирует о том, что данные записаны в буфер EPROM, но не в саму энергонезависимую память
Сообщение от 24Cxxx datasheet
7.0 ACKNOWLEDGE POLLING
Since the device will not acknowledge during a write
cycle, this can be used to determine when the cycle is
complete (This feature can be used to maximize bus
throughput.) Once the stop condition for a write command
has been issued from the master, the device initiates
the internally timed write cycle. ACK polling can
be initiated immediately. This involves the master
sending a start condition, followed by the control byte
for a write command (R/W = 0). If the device is still busy
with the write cycle, then no ACK will be returned.
Send Stop
Таким образом определяется, произошла ли запись в именно в энергонезависимую память. Так можно определять момент завершения при записи больших блоков данных, т.к. задержками неопртимально (нужно давать запасы), а время записи может меняться в зависимости от условий работы (температура, напряжение питания и т.п.)
rremix вне форума  
Непрочитано 10.12.2007, 09:15   #9
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

rremix
Да тут нечего спорить. Мы говорим о разных вещах. Я о записи байта в буфер микросхемы, а Вы о внутренней записи. Когда байт записывается в ИМС выставляется ACK. После STOP запускается внутренняя запись в EPROM, Write Cykle. Вот тогда Вы можете либо делать задержку, либо опрашивать ACK. Во время же записи байта Вы всегда будете получать ACK.
И еще. Время внутренней записи не зависит от количества байт. Хоть пишите один, хоть 20 - переписывается вся страница целиком.
Удачи.
nokazus вне форума  
Непрочитано 10.12.2007, 10:03   #10
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Задержку надо ставить после формирования STOP в цикле записи. Можно записывать данные постранично. Почитайте PAGE WRITE в даташите. Тогда реально получаем выигрыш в быстродействии и экономим ресурс EEPROM. Если записывать последовательные данные 64 раза по 1 байту, то страница будет переписана 64 раза и задержка составит 64 * 10 = 640 мс. Если писать те же 64 байта в режиме страничной записи, то страница будет переписана 1 раз и задержка составит 10 мс.
Удачи.
nokazus вне форума  
Закрытая тема

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AtMega АЦП impuls-v Микроконтроллеры, АЦП, память и т.д 19 20.06.2011 20:12
GPS <> ATMega nerozero Микроконтроллеры, АЦП, память и т.д 5 11.12.2008 21:26
Bootloader Atmega LSergM Микроконтроллеры, АЦП, память и т.д 0 23.12.2007 02:32
i2c и atmega ams666 Микроконтроллеры, АЦП, память и т.д 3 29.11.2007 06:12
Atmega,attiny... dosikus Микроконтроллеры, АЦП, память и т.д 38 31.08.2007 21:43


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


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