I2C в CodevisionAVR

Обсуждаем контроллеры компании Atmel.
Ответить
romasimeiz
Родился
Сообщения: 5
Зарегистрирован: Вс дек 15, 2013 18:59:46

I2C в CodevisionAVR

Сообщение romasimeiz »

Здравствуйте ! Прошу извинить за наверняка существующий вопрос.
У меня есть 2 простеньких макета с ATMega16 на борту.
Мне нужно написать 2 проекта на CodevisionAVR, чтобы прошив каждый по очереди я мог с одного макета передать информацию на другой при помощи I2C интерфейса. Конкретно : я включил оба макета, нажал на какую нибудь кнопку и у меня на другом макете зажёгся светодиод.
Какую нужно скачать библиотеку и как её конкретно использовать. Инфо в интернете есть, но всё сложно и не понятно. Без полных исходников с библиотеками.
Я очень плохо ещё пока понимаю в программировании микроконтроллеров :(
Буду благодарен за любую помощь! Спасибо! )
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: I2C в CodevisionAVR

Сообщение blackx »

А кто сказал что будет просто? :)))
http://easyelectronics.ru/avr-uchebnyj- ... c-i2c.html
Вот, для начала нужно разобраться в теории, и понять какие биты в регистрах TWI за что отвечают. Там же и примеры кода на Си есть. Читать до просветления :write:
Изображение only pure true norwegian blackx Изображение
Реклама
romasimeiz
Родился
Сообщения: 5
Зарегистрирован: Вс дек 15, 2013 18:59:46

Re: I2C в CodevisionAVR

Сообщение romasimeiz »

Вот код для мастера... Запутался ибо выдаёт ошибки на define-ах и функцииях...

Не могу понять где оно будет соединять с другим макетом и где мне отправлять комбинацию загорающихся диодов : 0b00001000

Код: Выделить всё

#define F_CPU 4000000UL

#include <string.h>
[b]#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <avr/interrupt.h>[/b]

#include "i2c.h"
#include "UART_routines.h"

#define LOCAL_ADDR 0xA0 
#define TARGET_ADDR 0x07 

unsigned char buf[100];

int main(void)
{
	uart0_init();
	_delay_ms(1000);
	sendStr0("*************TWI MASTER RUNNING*************");

	// initialize i2c function library 
  	i2cInit(); 
  	// set local device address and allow response to general call 
  	i2cSetLocalDeviceAddr(LOCAL_ADDR, TRUE); 

	unsigned char mBuf[100];
	sprintf(mBuf,"%s","hello!");mBuf[strlen(mBuf)]=0x00;
    i2cMasterSend(TARGET_ADDR,strlen(mBuf)+1/*(0x00)*/,&mBuf[0]);

    sprintf(buf,"master sended: %s (length %d)",mBuf,strlen(mBuf)+1/*(0x00)*/);
    transmitString(buf);TX_NEWLINE;

	while(1)
	{
		_delay_ms(100);
	}
}
Аватара пользователя
Eugene.Negrobov
Мучитель микросхем
Сообщения: 472
Зарегистрирован: Ср фев 15, 2012 09:00:34
Откуда: Киев

Re: I2C в CodevisionAVR

Сообщение Eugene.Negrobov »

Хе, а точно по I2C контроллеры соединять хочешь? SPI гораздо более подходит для подобных дел, у него скорости передачи в десяток раз выше, да и проще он гораздо. На крайняк всегда есть UART.
Я I2C без специализированных библиотек только для работы с 24LC512 использовал, могу сбросить функции, вдруг пригодятся. Заюзана софтварная либа, так что ножки любые можно использовать. Аппаратный I2C вообще адовый в AVR, там хрен разберешься. :shock:
I'm on a huge rock, flying through space!
Реклама
Эиком - электронные компоненты и радиодетали
romasimeiz
Родился
Сообщения: 5
Зарегистрирован: Вс дек 15, 2013 18:59:46

Re: I2C в CodevisionAVR

Сообщение romasimeiz »

Буду вам очень благодарен за то что скинете пример!
I2C задали в универе :(
Реклама
Ответить

Вернуться в «AVR»