UART mega8515 нет сигнала на пине TXD (AVRSTUDIO 6.2)

Обсуждаем контроллеры компании Atmel.
Ответить
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

UART mega8515 нет сигнала на пине TXD (AVRSTUDIO 6.2)

Сообщение FUZZY_ »

Помогите разобраться Вот код для mega8515 При передаче символа через UART пин не дергается ( 0 и 1 устанавливается при записи в порт PD1 - Проверено на другом коде):


#define F_CPU 11058200UL

#if defined(F_CPU)
//fosc = 11.0592 MHz U2X = 0 UBRR=5
#define BR_115200 5 // boundrate 115200
//#define B8_2 2 //8 bits data 2 stop bits
#define B8_1 1 //8 bits data 2 stop bits

#endif


#ifndef BR_115200
#define F_CPU 11058200UL
#define BR_115200 71 //boundrate 9600
#endif


#include <avr/io.h>
#include <avr/eeprom.h> // не забываем подключить
#include <util/delay.h> // нужна для функции _delay_ms();
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/sleep.h>
#include <string.h>

void Port_init(void)
{
//1 = output, 0 = input
DDRA = 0; // устанавливаем PORTA как вХОД
DDRB = 0XFF; // устанавливаем PORTB как выход
DDRC = 0XFF; // устанавливаем PORTD как выход кроме PD01

DDRD=0b11111110;
PORTD=0b11111110;//все на выход кроме нулевого


SFIOR|=(1<<PUD); //off pullup

}

void usart_transmit( unsigned char data)
{
while (!( UCSRA & (1<<UDRE)))
UDR = data;
//_delay_ms(30);
}



#if defined(B8_1)
void usart_init(unsigned int bd) // USART initialization
{
/*
If URSEL is zero during a write operation, the UBRRH value will be updated.
If URSEL is one, the UCSRC setting will be updated.
*/

UCSRC &= ~_BV(URSEL);
/* Set baud rate */
UBRRH = (unsigned char)(bd>>8);
UBRRL = (unsigned char)bd;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN) | (1<<TXEN);
/* Set frame format: 8data, 1stop bit */
UCSRC = (1 << URSEL) | (0<<USBS) |(3<<UCSZ0);
}
#endif


#if defined(B8_2)
/* инициализаци¤ UART */
void usart_init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}

#endif





#define SW12_ON PORTD|=(1<<PD6)
#define SW12_OFF PORTD&=~(1<<PD6)




/***************************************************/
int main(void)
{

Port_init();
usart_init(BR_115200); // USART initialization


while(1)
{
usart_transmit(0x55);
SW12_ON;
_delay_ms(50);
SW12_OFF;
_delay_ms(50);

}
}
Вложения
mega8515_fusses.JPG
FUSSES
(19.44 КБ) 319 скачиваний
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: UART mega8515 нет сигнала на пине TXD (AVRSTUDIO 6.2)

Сообщение FUZZY_ »

Проблема решена Надо было помянять Эти строчки местами

/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
Ответить

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