roboforum.ru

Технический форум по робототехнике.


Связь ATmega16&ATiny2313 по I2C

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Связь ATmega16&ATiny2313 по I2C

Сообщение bravo24 » 17 янв 2010, 04:13

Добрый День Всем!
Делаю часы.
Часы состоят из 2-х основных модулей:
1-й Atmega 16: индикация
работа с DS1307
обработка будильников
включение исполнительных механизмов при их привязке к будильникам
опрос клавиатуры

2-й Atiny2313: опрос 2-х датчиков температуры DS18B20
передача значений температуры по I2C

Возникла проблема:

Как используя I2C протокол организовать опрос Slave Atiny2313 от master Atmega16:
1. Как прописать в slave адрес, к которому будет обращаться master?
(либо как его узнать, если он присваивается автоматически)
2. Как для slave организовать выдачу значений температуры при ообращении к нему master?

Поиск по нету дает результаты типа: ...слейв организовать очень сложно... и без всяких коментариев

Если у кого есть готовые исходники с примером передачи любой лабуды по описанному способу - прошу поделиться.


Сами часы уже запустил. Идут!!!
Разводка платы протерялась при переустановке системы, но исходниками того, что есть могу запросто поделиться
Аватара пользователя
bravo24
 
Сообщения: 29
Зарегистрирован: 10 мар 2009, 22:31
Откуда: Odessa

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение avr123.nm.ru » 17 янв 2010, 12:07

Acronis true image !!! почтавьте и не будет терятся даже при поломках дисков. torrents.ru
torrents.ru/forum/viewtopic.php?t=2383324
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение bravo24 » 17 янв 2010, 17:22

Ага! Только теперь уже слишком рано это делать :)

А по существу вопроса у кого есть какие-нибудь идеи?

Переформулирую вопрос: как организовать передачу от slave к master информации по запросу от master?

P.S. Работаю в CodeVision.
Аватара пользователя
bravo24
 
Сообщения: 29
Зарегистрирован: 10 мар 2009, 22:31
Откуда: Odessa

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение ALHIMIK » 17 янв 2010, 22:19

1)читать DS там про TWI всё придельно понятно и просто
2)можно обойтись одним мк (мегой)
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение bravo24 » 17 янв 2010, 22:50

Глупый вопрос: TWI и I2C в моем случае одно и то же?

Есть ли какие-либо существенные тонкости?
Аватара пользователя
bravo24
 
Сообщения: 29
Зарегистрирован: 10 мар 2009, 22:31
Откуда: Odessa

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение ALHIMIK » 17 янв 2010, 22:53

одно и тоже
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение bravo24 » 17 янв 2010, 23:49

А каким регистром выставить TWAR для Tiny2313? В datasheets такого регистра нет :(
Аватара пользователя
bravo24
 
Сообщения: 29
Зарегистрирован: 10 мар 2009, 22:31
Откуда: Odessa

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение ALHIMIK » 18 янв 2010, 00:59

естественно нет там модуля TWI за то есть модуль USI
который можно использовать для TWI но для этого нужно его правильно настроить
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение bravo24 » 17 фев 2010, 05:43

Вот как я увидел подпрограмму для считывания данных мастером со слейва

/* read data from thermomodule */
unsigned char thermo_read(unsigned char address)
{

i2c_start();
i2c_write(address);
i2c_write(0);
i2c_start();
i2c_write(address);
data[0]=i2c_read(0);
data[1]=i2c_read(1);
data[2]=i2c_read(2);
data[3]=i2c_read(3);
i2c_stop();
return data[0];
return data[1];
return data[2];
return data[3];
}

вот так я пытаюсь вывести данные

{thermo_read(0x5);
temp11=data[0];
temp12=data[1];
temp21=data[2];
temp22=data[3];}
}


symbol[13] = data[0];
symbol[12] = data[1];

symbol[15] = data[2];
symbol[14] = data[3];

но на дисплей ничего не выводится

Добавлено спустя 3 минуты 31 секунду:
Еще не совсем понятно, где именно указывать данные для передачи мастеру в коде слейва :(

Добавлено спустя 5 минут 15 секунд:
Собрал схемку для экспериментов с протоколом I2c по этой ссылке http://ahtoxa.net/micros/tiny/leds/

Но не могу откомпилировать исходники, т.к. CV ругается постоянно.
Кто может откомпилировать и скинуть прошивку??? (я еще только учусь - до шамана мне еще курить и курить)
Вложения
1taras.c
код слейва 2313 (тот что я написал, а не тот что по ссылке)
(12.15 КиБ) Скачиваний: 191
Аватара пользователя
bravo24
 
Сообщения: 29
Зарегистрирован: 10 мар 2009, 22:31
Откуда: Odessa

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение Vooon » 17 фев 2010, 08:18

Это на каком языке?
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение bravo24 » 17 фев 2010, 17:02

Vooon писал(а):Это на каком языке?

Я пишу в codevision (Си), a антоха наверо писал в IAR or GCC (судя по ошибкам выдаваемым в codevision)
Аватара пользователя
bravo24
 
Сообщения: 29
Зарегистрирован: 10 мар 2009, 22:31
Откуда: Odessa

Re: Связь ATmega16&ATiny2313 по I2C

Сообщение Romikgy » 05 мар 2010, 22:16

Ув. bravo24 вы раньше писали на языке си?

PS раз вы из Одессы можем связатся, и пообщатся на эту тему :)
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9