Atmega8515 SIM20 UART Большая задержка

Обсуждаем контроллеры компании Atmel.
Ответить
MEGAORC
Родился
Сообщения: 11
Зарегистрирован: Чт фев 04, 2016 13:54:47

Atmega8515 SIM20 UART Большая задержка

Сообщение MEGAORC »

Нужно передать бит С атмеги на атмегу по радиоканалу. Собрал на SIM20A бит передается, но всегда с задержкой ровно 12 секунд. По проводам UART все работает мгновенно. В чем может быть проблема?
Мастер:
Спойлер

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

Chip type           : ATmega8515
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8515.h>
#include <delay.h>
// Declare your global variables here     
int init_UART(void)
{
	//	Установка скорости 115200
	UBRRH=0;	//	UBRR=f/(16*band)-1 f=8000000Гц band=115200, 
	UBRRL=3;
	UCSRA=0b00000000;
	UCSRB=0b00011000;
	UCSRC=0b10000110;	//	8-битовая посылка
	DDRB = 0b00000011;    // Port B0 na vihod
	PORTB.0=1;            // Port b0 = 1
return;
}

//	UART
void send_Uart(unsigned char c)//	Отправка байта
{
	while(!(UCSRA&(1<<5)))	//	Устанавливается, когда регистр свободен
	{}
	UDR = c;
}



int main(void)                                         // ММММЭЭЭЭЭЙЙЙЙННННН ТТТУУУУТТТТТ ----=====
{       

	init_UART();					//	инициализация UART
	delay_ms(1000);				//	задержка 1c
	                              
				
    while(1)						//	бесконечный рабочий цикл
    {                                                   
                                                                                                

                                    // Мастер                                       МАСТЕР   
PORTC=0xFF;
DDRC=0xFF;
PORTA=0x00;
DDRA=0xFF;
PORTB.2=1;
while (1) {                                                                         
PORTB.1=1;
       delay_ms(100);                                                                         
       send_Uart(PINC);                     // Отправить данные о порте С                      =  
 PORTB.1=0;  
 delay_ms(100);            
                          

				
	 		}	
	 		}
                                  

return;	
    }   
Слэйв:
Спойлер

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

Chip type           : ATmega8515
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8515.h>
#include <stdio.h> 
#include <delay.h> 
// USART Receiver interrupt service routine 
interrupt [USART_RXC] void usart_rx_isr(void) 
{ 
char data; 
data=UDR;  
PORTC=data;          

} 
  
void main(void) 
{ 
// Port C initialization 
PORTC=0x00; 
DDRC=0xFF; 
DDRB=0xFF;
 // USART initialization 
// Communication Parameters: 8 Data, 1 Stop, No Parity 
// USART Receiver: On 
// USART Transmitter: Off 
// USART Mode: Asynchronous 
// USART Baud Rate: 115200 
UCSRA=0x00; 
UCSRB=0x90; 
UCSRC=0x86; 
UBRRH=0x00; 
UBRRL=3; 
 // Global enable interrupts 
#asm("sei") 
  
while (1)
       { 
       PORTB.1=1;
       delay_ms(100);
       PORTB.1=0;    
       delay_ms(100);
}; 
} 
ПС: Еще есть передатчик RFM23bp, можно попробовать с ним. Но я не знаю как его инициализировать в CVAVR. Если у кого-то есть пример инициализации, буду очень благодарен.
Реклама
Ответить

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