реклама на сайте
подробности

 
 
> Вызов мастера в I2C чип LPC2131
Папа Карло
сообщение Jan 9 2009, 23:21
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Всем привет!

Настраиваю I2C между 2 устройствами на чипах LPC2131.
Один мастер, а другой ведомый.

Как ведомому сообщить мастеру, что у него есть информация важная ?

Чипы соединены только по I2C и других проводов протянуть нельзя.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Папа Карло
сообщение Jan 10 2009, 10:06
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Чтоб не создавать новый топик задам тут вопрос ещё по I2C.

Пытаюсь скачать Ведущем шины у ведомого данные.

Вот статусы ведущего:
08 40 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 58

Вот статусы ведомого:
A8 B8 B8 B8 B8 B8 B8 B8 C8

У ведущего запрос ведомому считать до 20 символов.
У ведомого в буфере строка из 7 символов для отправки ведущему.

Как я заметил, ведущий прекращает приём только после считывания максимальной длинны символов в 20 штук.
А ведомый отправляет, как и положено, 7 символов.

Объясните пожалуйста, как мне сделать, чтоб ведущий прекратил приём при окончании символов в буфере ведомого ?

Цитата(zhevak @ Jan 10 2009, 13:01) *
Вам нужно ехать и ли Вам нужно "прикольно"?


Мне нужно "прикольно".
Я радиолюбитель !
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 11 2009, 03:37
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Папа Карло @ Jan 10 2009, 12:06) *
Объясните пожалуйста, как мне сделать, чтоб ведущий прекратил приём при окончании символов в буфере ведомого ?

Сделать соответвующий протокол... Который будет следовать хотя бы трем основным пунктам:

1. Слейв первым байтом шлет длину сообщения, если нечего слать - соответвенно первым байтом шлет 0.
2. Мастер посылает NACK перед приемом последнего байта.
3. Когда слать больше нечего (сообщение полностью отправлено), Слейв всегда шлет GAP символ 0xA5 до тех пор пока мастер выдает ACK.
(выделенное - должно быть реализовано обязательно!)

т.о. даже если слейву вообще нечего слать, минимальная I2C транзация будет состоять минимум из двух символов - 0x0 (длина) и GAP (т.к. мастер перед приемом первого символа всегда выдает ACK).

По Вашему коду, конкретно по состояниям 0xA8 и 0xB8:
Код
case 0xA8:
case 0xB8://Data transmitted, ACK received
        if(i2c_size--)                  // if got no more data to send not last data byte transmitted
            {
            I2C0DAT = *i2c_data++;      // send next data byte
            I2C0CONSET = 0x04;//
            }
        else
            {
            I2C0CONCLR = 0x04;//
            i2c_stat   = 0;             //
            i2c_size = 0;
            }
break;

поменяйте на:

Код
case 0xA8: // SLA+R (slave transmitter start)

    if(!i2c_size)                 // NO DATA TO SEND?
        I2C0DAT = 0;          // Notify Master - we have no data
    else
        I2C0DAT = i2c_size;   // send message len
    I2C0CONSET = 0x04;            // enable ACK for data byte
    break;

case 0xB8: //Data transmitted, ACK received

    if(!i2c_size)              // NO DATA TO SEND?
        I2C0DAT = 0xA5;          // MUST send GAP data byte
    else
    {
        i2c_size--;
        I2C0DAT = *i2c_data++; // send next data byte
    }
    I2C0CONSET = 0x04;             // enable ACK for data byte
    break;




Цитата(singlskv @ Jan 10 2009, 21:47) *
А у AVR разьве не честный OD ?

Не честный - во всех AVR. В обесточенном состоянии садят шину через защитные диоды (МК питается от шины sad.gif ).
Go to the top of the page
 
+Quote Post
Папа Карло
сообщение Jan 11 2009, 11:32
Сообщение #4


Частый гость
**

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Цитата(defunct @ Jan 11 2009, 06:37) *
т.о. даже если слейву вообще нечего слать, минимальная I2C транзация будет состоять минимум из двух символов - 0x0 (длина) и GAP (т.к. мастер перед приемом первого символа всегда выдает ACK).


По вашему выходит, что минимальная транзакция будет довольно большая.
Но если ведомый не выставит на шину АА, что готов, то минимальная будет гораздо меньше, всего из 2 посылок, начало передачи статус 08 и конец передачи статус 0х48.
Может там ещё подводные камни есть ?

А что такое GAP и как на него должен Мастер реагировать ?

Посмотрел статусы в ДШ и складывается впечатление, что при начале приёма Мастером Ведомый уже не может прервать приём у Мастера.
АА Мастер смотрит только после пересылки адреса ведомого.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Папа Карло   Вызов мастера в I2C чип LPC2131   Jan 9 2009, 23:21
- - zltigo   Цитата(Папа Карло @ Jan 10 2009, 02:21) К...   Jan 10 2009, 08:06
- - MaxEngee   Еще как вариан: Переключать пины на цифровой вход/...   Jan 10 2009, 08:21
|- - zltigo   Цитата(MaxEngee @ Jan 10 2009, 11:21) над...   Jan 10 2009, 08:48
|- - singlskv   Цитата(zltigo @ Jan 10 2009, 11:48) С мат...   Jan 10 2009, 18:35
|- - zltigo   Цитата(singlskv @ Jan 10 2009, 21:35) ? В...   Jan 10 2009, 18:54
|- - singlskv   Цитата(zltigo @ Jan 10 2009, 21:54) Вы со...   Jan 10 2009, 19:12
|- - zltigo   Цитата(singlskv @ Jan 10 2009, 22:12) тог...   Jan 10 2009, 19:27
|- - singlskv   Цитата(zltigo @ Jan 10 2009, 22:27) Повто...   Jan 10 2009, 19:47
|- - zltigo   Цитата(singlskv @ Jan 10 2009, 22:47) что...   Jan 10 2009, 20:09
- - Папа Карло   Пока сделал сканирование, но не прикольно как то. ...   Jan 10 2009, 08:50
|- - zhevak   Цитата(Папа Карло @ Jan 10 2009, 13:50) П...   Jan 10 2009, 10:01
|- - Lelikk   Ведомый должен слать данные до тех пор, пока ведущ...   Jan 10 2009, 11:26
|- - defunct   Цитата(Папа Карло @ Jan 11 2009, 13:32) А...   Jan 11 2009, 15:35
- - Папа Карло   А разве Ведущий может тактировать шину, если не по...   Jan 10 2009, 11:43
|- - zhevak   Цитата(Папа Карло @ Jan 10 2009, 16:43) А...   Jan 10 2009, 12:43
- - Папа Карло   Осциллографа нет. Могу выложить код ведомого: Код ...   Jan 10 2009, 12:51
- - Папа Карло   Ох лучше бы вы мне подсказали, почему ведущий запр...   Jan 10 2009, 19:55
|- - singlskv   Цитата(Папа Карло @ Jan 10 2009, 22:55) О...   Jan 10 2009, 20:24
|- - zltigo   Цитата(singlskv @ Jan 10 2009, 23:24) Тол...   Jan 10 2009, 21:05
|- - singlskv   Цитата(zltigo @ Jan 11 2009, 00:05) я над...   Jan 10 2009, 21:24
|- - zltigo   Цитата(singlskv @ Jan 11 2009, 00:24) и д...   Jan 10 2009, 21:34
|- - singlskv   Цитата(zltigo @ Jan 11 2009, 00:34) Надо ...   Jan 10 2009, 21:40
|- - zltigo   Цитата(singlskv @ Jan 11 2009, 00:40) ну ...   Jan 10 2009, 22:01
|- - singlskv   Цитата(zltigo @ Jan 11 2009, 01:01) Еще р...   Jan 10 2009, 22:26
|- - zltigo   Цитата(singlskv @ Jan 11 2009, 01:26) в п...   Jan 10 2009, 22:54
|- - singlskv   Цитата(zltigo @ Jan 11 2009, 01:54) Прост...   Jan 10 2009, 23:09
|- - zltigo   Цитата(singlskv @ Jan 11 2009, 02:09) Дио...   Jan 10 2009, 23:53
|- - singlskv   Цитата(zltigo @ Jan 11 2009, 02:53) Так, ...   Jan 11 2009, 22:53
- - Папа Карло   Пока я сделал чуть по другому. Если ведомому нечег...   Jan 11 2009, 16:35
|- - defunct   Цитата(Папа Карло @ Jan 11 2009, 18:35) Е...   Jan 11 2009, 22:23
|- - Папа Карло   Цитата(defunct @ Jan 12 2009, 01:23) из д...   Jan 12 2009, 07:59
|- - defunct   Цитата(Папа Карло @ Jan 12 2009, 09:59) В...   Jan 12 2009, 11:13
- - Папа Карло   Всё таки сделал по вашему т.к., если МК перевести ...   Jan 12 2009, 17:08
- - defunct   Цитата(Папа Карло @ Jan 12 2009, 19:08) И...   Jan 12 2009, 18:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 10:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.02897 секунд с 7
ELECTRONIX ©2004-2016