سلام
من با میکروهای atmega8، atmega16 و atmega32 کار کردم و هیچ مشکلی نداشتم. اما یه بورد با atmega128 طراحی کردم که به هیچ وجه نمی تونتم باهاش ارتباط سریال برقرار کنم. حتی آی سی رو با mega64 هم جایگزین کردم اما فرقی نکرد. بقیه قسمت های میکرو درست کار می کند اما زیر برنامه های مربوط به uart به هیچ وجه کار نمی کند. کدهای نوشته شده برای قسمت ارسال و دریافت به شکل زیر است:
int USART_Send(char CH)
{
while ( !( UCSR0A & (1<<UDRE0)));
UDR0=CH;
return 0;
}
int USART_Rcv(void)
{
while ( !(UCSR0A & (1<<RXC0)));
return UDR0;
}
وقتی از دستور a= USART_Rcv و یا USART_Send(a) در برنامه استفاده می کنم برنامه در این دستورات گیر می کند و هیچ وقت از حلقه while بیرون نمی آید. می خواستم بدونم راه اندازی بخش uart در mega64/128 با بقیه میکروها فرقی دارد و چیز خاصی رو باید در نظر بگیرم؟
ممنون
من با میکروهای atmega8، atmega16 و atmega32 کار کردم و هیچ مشکلی نداشتم. اما یه بورد با atmega128 طراحی کردم که به هیچ وجه نمی تونتم باهاش ارتباط سریال برقرار کنم. حتی آی سی رو با mega64 هم جایگزین کردم اما فرقی نکرد. بقیه قسمت های میکرو درست کار می کند اما زیر برنامه های مربوط به uart به هیچ وجه کار نمی کند. کدهای نوشته شده برای قسمت ارسال و دریافت به شکل زیر است:
int USART_Send(char CH)
{
while ( !( UCSR0A & (1<<UDRE0)));
UDR0=CH;
return 0;
}
int USART_Rcv(void)
{
while ( !(UCSR0A & (1<<RXC0)));
return UDR0;
}
وقتی از دستور a= USART_Rcv و یا USART_Send(a) در برنامه استفاده می کنم برنامه در این دستورات گیر می کند و هیچ وقت از حلقه while بیرون نمی آید. می خواستم بدونم راه اندازی بخش uart در mega64/128 با بقیه میکروها فرقی دارد و چیز خاصی رو باید در نظر بگیرم؟
ممنون
دیدگاه