پاسخ : کوچ کردن از کدویژن به AtmelStudio
سلام خدمت دوستان عزیز،
من یه مشکل اساسی کلاً با راه اندازی USART با ATMEL Studio دارم که کلاً بیزارم کرده ازش :|
اینقد که من سر usart با اتمل اذیت شدم سر راه انداختن usart همراه با وقفه و dma توی armها اذیت نشدم!
البته فک کنم بیشتر مشکلم با رشته ها باشه!
این برنامه مشکلش چطور حل میشه؟
[code=c]
#include <avr/io.h>
//#include <avr/iom8a.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "avrlibdefs.h"
#include "global.h"
#include <stdio.h>
#include <string.h>
/* Global Variables Declaration */
char rc_data;
char i = 0;
/* Function Declaration */
void MicroInit(void);
void usartSend(const char *strr);
unsigned char intvalue(char ch);
ISR (USART__RXC_vect)
{
while(!(UCSRA & (1<<RXC)));
rc_data = UDR;
UCSRA|=(1<<RXC);
}
int main(void)
{
/* Local Variables Declaration */
unsigned char j;
char *m_rx_buffer;
MicroInit();
sei();
usartSend("Test\r\n"
;
_delay_ms(400);
while(1)
{
if (rc_data != 0)
{
usartSend(rc_data);
rc_data = 0;
}
PORTB = ~PORTB;
_delay_ms(200);
}
}
void MicroInit(void)
{
/* Ports Configuration */
PORTB = 0x00;
DDRB = 0x01;
PORTC = 0x18;
DDRC = 0x08;
PORTD = 0x04;
DDRD = 0x00;
/* USART Initialization */
UCSRB = (0<<TXCIE) | (1<<TXEN) | (1<<RXCIE) | (1<<RXEN);
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0) ;
UBRRL = 0x19;
}
void usartSend(const char *strr)
{
while (*strr)
{
UDR = *strr;
strr++;
while(!(UCSRA & (1<<TXC)));
UCSRA|=(1<<TXC);
}
}
[/code]
همونطور که میبینین در همین کمترین حالتش هم جواب نمیده برنامه!
- - - - = بعد ویرایش = - - - -
باودریت میکرو رو 19200 گذاشتم و از یک مگا8ای و کریستال 8مگ استفاده میکنم.
سلام خدمت دوستان عزیز،
من یه مشکل اساسی کلاً با راه اندازی USART با ATMEL Studio دارم که کلاً بیزارم کرده ازش :|
اینقد که من سر usart با اتمل اذیت شدم سر راه انداختن usart همراه با وقفه و dma توی armها اذیت نشدم!
البته فک کنم بیشتر مشکلم با رشته ها باشه!
این برنامه مشکلش چطور حل میشه؟
[code=c]
#include <avr/io.h>
//#include <avr/iom8a.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "avrlibdefs.h"
#include "global.h"
#include <stdio.h>
#include <string.h>
/* Global Variables Declaration */
char rc_data;
char i = 0;
/* Function Declaration */
void MicroInit(void);
void usartSend(const char *strr);
unsigned char intvalue(char ch);
ISR (USART__RXC_vect)
{
while(!(UCSRA & (1<<RXC)));
rc_data = UDR;
UCSRA|=(1<<RXC);
}
int main(void)
{
/* Local Variables Declaration */
unsigned char j;
char *m_rx_buffer;
MicroInit();
sei();
usartSend("Test\r\n"

_delay_ms(400);
while(1)
{
if (rc_data != 0)
{
usartSend(rc_data);
rc_data = 0;
}
PORTB = ~PORTB;
_delay_ms(200);
}
}
void MicroInit(void)
{
/* Ports Configuration */
PORTB = 0x00;
DDRB = 0x01;
PORTC = 0x18;
DDRC = 0x08;
PORTD = 0x04;
DDRD = 0x00;
/* USART Initialization */
UCSRB = (0<<TXCIE) | (1<<TXEN) | (1<<RXCIE) | (1<<RXEN);
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0) ;
UBRRL = 0x19;
}
void usartSend(const char *strr)
{
while (*strr)
{
UDR = *strr;
strr++;
while(!(UCSRA & (1<<TXC)));
UCSRA|=(1<<TXC);
}
}
[/code]
همونطور که میبینین در همین کمترین حالتش هم جواب نمیده برنامه!
- - - - = بعد ویرایش = - - - -
باودریت میکرو رو 19200 گذاشتم و از یک مگا8ای و کریستال 8مگ استفاده میکنم.
دیدگاه