Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/32: Рейтинг темы: голосов - 32, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55

Проблема с i2c шиной

22.10.2010, 14:49. Показов 6339. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На шине 3 устройства: микроконтроллер ADuC812 (Master), микросхема EEPROM AT24C01 (Slave) и микросхема часов DS1307 (Slave).

Проблема в следующем - при обращении к микросхеме памяти и посылке байта, она не принимает байт, и посылает сигнал неподтверждения (NOACK). Адресные входы микросхемы EEPROM посажены на землю, поэтому адрес устройства 000. Посылаю байт: 10100001, на девятом тактовом импульсе на SDA устанавливается 1. Ниже приведен кусок кода программы:

(MDE - SDA на ввод или на вывод, MDO-бит который выдается на SDA, MCO-бит который выдается на SCL, MDI-в режиме приемника бит принятый с y2s записывается в MDI)

void main(void) {
Init();
I2C_Start();
I2C_Send_byte(0xA1);
I2C_Stop();

while(1) {
}

}

void I2C_Start(void) {
I2C_BUSY=1;
MDE=1; //SDA output
delay_ms();
MDO=1;
delay_ms();
MCO=1;
I2C_NOACK=0;
I2C_ERROR=0;
delay_ms();
if(MCO=0) { I2C_MISTAKE=0; send_lcd_symbol(set_first_line+1, E);};
if(MDO=0) { I2C_MISTAKE=0; send_lcd_symbol(set_first_line+2, E);};
delay_ms();
MDO=0;
delay_ms();
MCO=0; //Start
}

void I2C_Send_byte(char byte) {
unsykned char bits;
MDE=1;
MDO=0;
MCO=0;
for(bits=0;bits<8;bits++) {
if((byte&0x80)==0x80) {
MDO=1;
delay_ms();
MCO=1;
delay_ms();
MCO=0;
send_lcd_symbol(set_first_line+bits, 1);
}
else {
MDO=0;
delay_ms();
MCO=1;
delay_ms();
MCO=0;
send_lcd_symbol(set_first_line+bits, 0);
};
byte=byte<<1;
}
MDE=0;
MCO=1;
delay_ms();
if(MDI==1) { I2C_NOACK=1;
send_lcd_symbol(set_first_line+12, N);
} else { send_lcd_symbol(set_first_line+14, A);};
MCO=0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2010, 14:49
Ответы с готовыми решениями:

Проблема с I2C, а можетбыть с питанием...
Значит так, ситуация такова - сделал небольшой модуль с акселерометром SMB380, подключил его по y2s к самодельной платочке с контроллером,...

проблема с I2C.
Доброго времени суток. !!! Использую STM32F100discovery (правда неожидано ))) ) Проблема следующего характера Подключил к платке...

Proteus, проблема с i2c
Здравствуйте! Я выполняю проект в Proteus, в котором необходимо использовать pca9685 для управления светодиодами. У меня возникла следующая...

8
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
23.10.2010, 19:39
AT24C01 работает без адресации. То есть там не TWI, а его обрубок.

Адрес, который ты ей посылаешь, она принимает за адрес в памяти, и пытается прочитать байт по адресу 10100001. Так-как у ней 128 байт памяти, адрес выходит за рамки. Поэтому она не посылает ACK.

Нормальная адресация начинается с AT24C02. ЕМНИП...
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
23.10.2010, 23:40
Странно, в даташите сказано что нужно посылать байт с фиксированной частью 1010, потом адрес микросхемы и бит чтения или записи. Может тут как то DS1307 виновата? Кстати как не обратиться, у нее ведь нет адресных входов?
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
23.10.2010, 23:49
В даташите ни фига не сказано про адресацию. Более того - адресных пинов на At24c01 нет. Они обозначены как NC.
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
24.10.2010, 00:08
Япона мать. Прошу прощения, микросхема памяти - 24C32 даташит - http://www.atmel.som/dyn/resources/prod ... oc0336.pdf

Хорошо что пины расположены одинаково, а то пришлось бы плату переделывать. Собтвенно проблему то это не решает, сигнал АСК все равно отсутствует.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
24.10.2010, 00:23
Запустите программу в какой-нибудь виртуалке (Протеус , например) и посмотрите, какой сигнал формируется МК. Потом сравните с тем сигналом, что в ДШ на память.

Code
1
2
3
MDE=1; //SDA output
delay_ms();
MDO=1;
Кстати вот-так делать не надо. По спецификации линию можно только прижать к земле. А к питанию она должна подтягиваться резистором.
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
24.10.2010, 00:39
Просто неизвестно в каком состоянии она нахдится после команды MDE=1. Подтягивающие резисторы стоят, внешние, 4.7 кОм.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
24.10.2010, 00:50
Я немного не про то. После выполнения этого кода, линия будет намертво прибита к питанию, и если её попытается прижать к земле другое устройство, то что-нибудь сгорит.

У меня старт реализован так:
Code
1
2
3
4
5
6
7
SDA - подвесить на резисторе
SCL - подвесить на резисторе
Пауза
SDA - прижать к земле.
Пауза
SCL - прижать к земле.
Пауза
А delay_ms() это задержка в 1мс?
0
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 55
24.10.2010, 01:26
delay_ms() ну "на глаз" примерно 1мс. Если учесть что одна итерация выполняется за один машинный цикл. Кварц 12 МГц.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.10.2010, 01:26
Помогаю со студенческими работами здесь

Проблема с I2C (ATMEGA128 + DS50PCI401)
Доброго всем дня ! Вот такая проблемка нарисовалась: Имеется atmega128 и усилитель DS50PCI401 с SMBUS, Пытаюсь записать байт в...

Проблема согласования логических уровней I2C
Пробую &quot;договориться&quot; с Сэмпловским Акселерометром от ST LIS3LV02DL. Не выходит связатся с ним по этой схеме (Акселерометр не...

I2C на stm32-discovery непонятная проблема
Возникла проблема: при попытке связать датчик LSM303DLH(акселерометр+нигнитометр в одном корпусе) с контроллером по I2C. Собственно...

STM32F051, I2C, SPl, проблема с запуском шины
Всем привет! Пытаюсь запустить i2c шину. Начинаю с простого - сканера i2c. Честно сказать, не могу найти нормального примера, с чего...

R5 1600af есть ли проблема с шиной инфинити фабрик?
Есть ли у цпу &quot;r5 1600af&quot; такие же проблемы как и у первого поколения? Т. Е. Проблема с шиной infinity fabric.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru