Всем привет! У кого есть опыт написания микропрограммы для AT90USB1287, есть 5 mega8 которые должны
принимать и передавать данные в ПК по USB и каждая из них отвечает за свою функцию, имеет систему индикации,
а так же несколько кнопок для задания параметров, что бы не использовать 5 USB портов подключая каждую mega8 в отдельный USB, а все данные пересылать и принимать по одному USB для этого я хочу использовать AT90USB1287.
Кто чем может помогите?!
Как соеденить два и более микроконтроллера Atmega8
-
alexey6522
- Встал на лапы
- Сообщения: 149
- Зарегистрирован: Чт июл 28, 2011 18:12:28
- Реклама
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: Как соеденить два и более микроконтроллера Atmega8
А зачем так все усложнять? Есть шина I2С на которую можно подвешать уйму датчиков. Все датчики может опрашивать один контроллер (та же 8 мега.)
Re: Как соеденить два и более микроконтроллера Atmega8
покурите вот это: http://caxapa.ru/lib/wake/
позволяет на один rs232 посадить до 127 устройств. а usb-com преобразователь найти всегда можно.
позволяет на один rs232 посадить до 127 устройств. а usb-com преобразователь найти всегда можно.
-
alexey6522
- Встал на лапы
- Сообщения: 149
- Зарегистрирован: Чт июл 28, 2011 18:12:28
Re: Как соеденить два и более микроконтроллера Atmega8
Может подскажет кто как мне принять сообщение в Atmega8 отправленное с ПК в Com1?
Пишу на WinAVR
Пишу на WinAVR
Re: Как соеденить два и более микроконтроллера Atmega8
Ну там же есть в АТмеге аппаратный UART или как его там, совместим с RS-232, если запрограммировать и микросхему-преобразователь уровней (MAX232) поставить. Хорошо описано в литературе.
Соединить несколько Мег на одной плате можно через SPI, один мастер, остальные слейв. Если нужно быстро. Если не нужно быстро, тот же RS-232 либо аппаратный, либо программно несложно реализовать. Тогда расстояния могут быть больше.
Соединить несколько Мег на одной плате можно через SPI, один мастер, остальные слейв. Если нужно быстро. Если не нужно быстро, тот же RS-232 либо аппаратный, либо программно несложно реализовать. Тогда расстояния могут быть больше.
- Реклама
-
alexey6522
- Встал на лапы
- Сообщения: 149
- Зарегистрирован: Чт июл 28, 2011 18:12:28
Re: Как соеденить два и более микроконтроллера Atmega8
Это я знаю что есть аппаратный 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 как ввод
}
Re: Как соеденить два и более микроконтроллера Atmega8
по той ссылке есть исходники и примеры работы + либа для пц.
Re: Как соеденить два и более микроконтроллера Atmega8
А есть ли у кого исходник wakeusb202.zip . очень мечтаю посмотреть обмен по USB.skyther писал(а):покурите вот это: http://caxapa.ru/lib/wake/
позволяет на один rs232 посадить до 127 устройств. а usb-com преобразователь найти всегда можно.


