Столкнулся с проблемой, не могу понять как отладить UART в режиме приемника, если используется опрос по флагу RxCn. Написал программу, которая отправляет, то что принимает. Смотрю в VMLAB осциллографом на
TxD и RxD ничего нет(
Подскажите, как можно отладить UART в режиме приемника?
- Реклама
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Чтоб принимать что-то вы должны что-то отправить на МК.
Можно передавать печатая в окне передачи в VMLAB. А можно просто соединить ножки TXD и RXD резистором 1 Ом и тогда МК будет принимать то что передает сам.
Можно передавать печатая в окне передачи в VMLAB. А можно просто соединить ножки TXD и RXD резистором 1 Ом и тогда МК будет принимать то что передает сам.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18675
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Наверное, надо ж чтоб кто-то что-то послал твоей программе? VMLAB умеет имитировать передачу по UART? (я ею не пользуюсь, но предполагаю, что это она уметь должна) Для I2C там есть и2ц-монитор, а для UART-а наверное есть тоже свой монитор... вот его и примени
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Спасибо за совет посмотреть курс, но я по нему и пытаюся разобраться. Проблема в том, что в задаче организован УАРТ по прерыванию и флаги сами сбрасываются, а у меня почему то без прерывания флаг Rxn аппаратно не сбрасывается. С резистором попробую, но дело в том, чтобы что то получть, нужно что то отправить. Смотрю в VMLab на TxD ничего не выходит (
#include <mega8>
#include <m8_128>
void initialization(void){
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xFF; // Порт на выход
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
}
char data; // данные для отправки
void main(void)
{
data=0x15;
initialization();// инит UART
while (1) {
while ( !( UCSRA & (1<<UDRE)) );//Жду освобождения буфера
UDR=data;// Отправляю данные
while ( !(UCSRA & (1<<RXC)) ); //Жду флаг завершения приема
PORTB=UDR; // Вывожу данные в порт
}
}
#include <m8_128>
void initialization(void){
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xFF; // Порт на выход
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
}
char data; // данные для отправки
void main(void)
{
data=0x15;
initialization();// инит UART
while (1) {
while ( !( UCSRA & (1<<UDRE)) );//Жду освобождения буфера
UDR=data;// Отправляю данные
while ( !(UCSRA & (1<<RXC)) ); //Жду флаг завершения приема
PORTB=UDR; // Вывожу данные в порт
}
}
- Реклама
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Слава богу ! 
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru


