Здравствуйте всем хотел бы узнать как можно передавать данные по rs232. В наличии есть атмега328 и usb to TTL, в инете не нашел код для аврстудио самому писать опыта не хватает
RS232 и UART по сути один и тот же протокол, отличаются их интерфейсы (электрические параметры), для исправления используют конвертеры интерфейсов: max232 - UART-RS232 ft232 - UART - USB (на пк драйвером эмулируется rs232), его "+" в том, что нужен разъём USB, а не DB-9. Для написания программы рекомендую взять ардуинку или курить даташиты.
Я думаю вопрос не в этом, а как соединить Ардуину со старым ПК у которого USB нет. Иначе непонятно зачем эти страдания.
Я тоже не совсем понял что Аффтар хочет.А соединить его через СОМ порт ещё проще чем через USB. MAX232 наше фсё!Можно и на Кт-315
Спасибо за отзыв чтобы понять протокол rs485 модбас, для начала хотел изучит протокол по rs232. Только потом изучать rs485 модбас
У аас все перепуталось. RS485 как и RS232 это не протоколы а физические способы передачи сигнала. Протокол при этом может быть какой угодно и где угодно. У меня сети на своем собственном протоколе замечательно работают годами как на 485, так и на прямой связи rx-tx и на беспроводных устройствах, лишь бы данные уходили и приходили.
Пробовал отправлять данные через каждый 10 секунд, в терминале вижу отправленные данные. Код (C++): #include <avr/io.h> #include <avr/interrupt.h> unsigned char ubrr=103;//usart частота микроконтроллера 16МГЦ volatile unsigned int ACP,value,map,ob2=0,Temp,zn_adc; volatile unsigned int usart_zn; volatile unsigned int T,ob,a,b,c,d,e,ust,gist,temper; volatile unsigned char ch=0,sel_adc,zn_acp,zn_temp,acp2,oborot,correct,correct2; volatile unsigned int ar[10]; volatile unsigned int pereshet=525,q2,q3; //*********************** ISR (USART_UDRE_vect) { UDR0 = zn_adc; UCSR0B &=~(1<<UDRIE0); } //********************* int main(void) { //********usart************* UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char)ubrr; UCSR0B =(1<< RXEN0) //разрешаем прием |(1<< TXEN0 );//разрешаем передачу UCSR0C = (1<<USBS0)|(1<<UCSZ00)|(1<<UCSZ01); UCSR0B |=(1<<UDRIE0); //********************* asm("sei"); while(1) { usart_zn = usart_1(); } } //************** int usart_1 () { static char danie1,t_zad,permass; if ((T < 10)&&(danie1 == 0)) { zn_adc=5; UCSR0B |=(1<<UDRIE0);//регистр данных чист danie1=1; } if ((T == 20)&&(danie1 == 1)) { zn_adc=7; UCSR0B |=(1<<UDRIE0);//регистр данных чист danie1=0; T=0; } }