'atmega8535'에 해당되는 글 2건

  1. 2009.04.03 AVR USART 설정
  2. 2009.04.03 WinAVR에서 사용하는 Delay 함수
Studyhard/AVR2009. 4. 3. 14:28

   
void Init_Usart(void)
{
   UCSRA = 0x00;
   UCSRB = (1 << RXEN) | (1 << TXEN);     
   UCSRC = (1 << UCSRC) | (1 << UCSZ1) | (1 << UCSZ0);     
   UBRRH = 0x00;
   UBRRL = 103;            // 103 => Baud Rate : 9600bps
}

위 소스는 AVR 비동기 통신 레지스터 설정이다. 
간단한 통신을 하기 위해서는
UCSRB 의 RXEN <- 수신 설정, TXEN <- 송신설정 을 꼭 해줘야 하고
UBRRL의 값을 AVR 데이타 시트에서 값을 찾아서 Baud Rate값을 맞춰서 넣어 주어야 한다.



Posted by 리얼한놈
Studyhard/AVR2009. 4. 3. 14:22

void delay_us(unsigned int us)
{
     unsigned int i;
     for(i = 0; i < us; i++) // 4 cycle <- 함수의 들어감과 나감에 있어 4Cyclye 소요
     {
        asm("PUSH R0"); // 2 cycle 
        asm("POP R0");  // 2 cycle 
        asm("PUSH R0"); // 2 cycle 
        asm("POP R0");  // 2 cycle 
        asm("PUSH R0"); // 2 cycle 
        asm("POP R0");  // 2 cycle   => 4+2+2+2+2+2+2 = 16cycle = 1us for 16Mhz


    }

}


void delay_ms(unsigned int ms)
{
    unsigned int i;
    for(i = 0; i < ms; i++)
        delay_us(1000);

}




* 1초를 delay_ms(1000) 을 이용하여 사용하였을 때,  언뜻 보기에도 1초가 아닌 경우에는 

  퓨즈비트 설정이 잘 못 되어 있는 경우가 있으므로, PonyProg 에서 퓨즈비트 체크를 확인하고 하면 된다.

  

Posted by 리얼한놈