Как соеденить два и более микроконтроллера Atmega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
alexey6522
Встал на лапы
Сообщения: 149
Зарегистрирован: Чт июл 28, 2011 18:12:28

Как соеденить два и более микроконтроллера Atmega8

Сообщение alexey6522 »

Всем привет! У кого есть опыт написания микропрограммы для AT90USB1287, есть 5 mega8 которые должны
принимать и передавать данные в ПК по USB и каждая из них отвечает за свою функцию, имеет систему индикации,
а так же несколько кнопок для задания параметров, что бы не использовать 5 USB портов подключая каждую mega8 в отдельный USB, а все данные пересылать и принимать по одному USB для этого я хочу использовать AT90USB1287.
Кто чем может помогите?!
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение осторожно! леоныч!!! »

А зачем так все усложнять? Есть шина I2С на которую можно подвешать уйму датчиков. Все датчики может опрашивать один контроллер (та же 8 мега.)
Реклама
Аватара пользователя
skyther
Встал на лапы
Сообщения: 111
Зарегистрирован: Вс сен 09, 2007 21:19:10

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение skyther »

покурите вот это: http://caxapa.ru/lib/wake/
позволяет на один rs232 посадить до 127 устройств. а usb-com преобразователь найти всегда можно.
alexey6522
Встал на лапы
Сообщения: 149
Зарегистрирован: Чт июл 28, 2011 18:12:28

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение alexey6522 »

Может подскажет кто как мне принять сообщение в Atmega8 отправленное с ПК в Com1?
Пишу на WinAVR
Реклама
Эиком - электронные компоненты и радиодетали
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение SmarTrunk »

Ну там же есть в АТмеге аппаратный UART или как его там, совместим с RS-232, если запрограммировать и микросхему-преобразователь уровней (MAX232) поставить. Хорошо описано в литературе.

Соединить несколько Мег на одной плате можно через SPI, один мастер, остальные слейв. Если нужно быстро. Если не нужно быстро, тот же RS-232 либо аппаратный, либо программно несложно реализовать. Тогда расстояния могут быть больше.
Реклама
alexey6522
Встал на лапы
Сообщения: 149
Зарегистрирован: Чт июл 28, 2011 18:12:28

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение alexey6522 »

Это я знаю что есть аппаратный RS232 в Атмеге а как его запрограммировать на прием сообщений?
Вот недоделанный кусок кода

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

void USART_vInit(void) {
// Set baud rate
UBRRH=0;
UBRRL=0x8; //скорость обмена 9600 бод
// Set frame format to 8 data bits, no parity, 1 stop bit
UCSRC = (0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(1<<URSEL);  //размер слова 8 разрядов
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //разр. прерыв при приеме, разр приема, разр передачи.
}

/* Отправка в порт с МК
void USART_vSendByte(const char *u8Data) {
  while (*u8Data) {
    while((UCSRA&(1<<UDRE)) == 0); // Wait if a byte is being transmitted
    UDR = *u8Data;
    u8Data++; // Transmit data
 }
}
*/

volatile char buf[200]; // Буфер
volatile int bufsize = 0; // Длина строки
volatile char ready = 0; // Получена ли строка? 

ISR(USART_RXC_vect)
{
int b;
b = UDR; // Получаем эти данные
if (((b == 13) || (b == 10)) && (bufsize > 0)) ready = 1;
if ((b != 13) && (b != 10) && (bufsize < sizeof(buf)-1))
buf[bufsize++] = b;
}

int main(void)
{
  unsigned long int s=0;
  char c[1]; // кол-во цифр в выводимом числе
  unsigned int b=10;
  // Initialise USART
  USART_vInit();
  PORTD=0x00; //Первоначально устанавливаем на всех выходах 0
  PORTB|=_BV(PB0); //Первоначально устанавливаем на всех выходах 0
  DDRD=0xff; //установить PD0-PD2 как выходы
  DDRD&=~_BV(PD0); //устанавливаем PD0 как ввод   
}
Реклама
Аватара пользователя
skyther
Встал на лапы
Сообщения: 111
Зарегистрирован: Вс сен 09, 2007 21:19:10

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение skyther »

по той ссылке есть исходники и примеры работы + либа для пц.
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Как соеденить два и более микроконтроллера Atmega8

Сообщение igor-x »

skyther писал(а):покурите вот это: http://caxapa.ru/lib/wake/
позволяет на один rs232 посадить до 127 устройств. а usb-com преобразователь найти всегда можно.
А есть ли у кого исходник wakeusb202.zip . очень мечтаю посмотреть обмен по USB.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»