2016. 11. 14. 01:03

LED 1개 에 이어 2개 ...


운영체제 올라가면 별도 쓰레드로 올리고 sleep 주면 되겠지만... 여긴 그런게 없다...


while 문의 타이밍 주기를 1ms 로 세팅하고 LED 켜고 꺼지는 주기는 설정한 간격에 의해 별도 함수 내에서 처리하도록 프로그램 하였다.


time이 계속 증가만 하는데 이거 상관 없는지는 확인 이 필요할 것 같다.



사진



작동영상



소스코드

#define F_CPU 16000000UL


#include <avr/io.h>

#include <util/delay.h>


void PPD6(int time, int interval)

{

if ((time %  (2 * interval)) == 0)

{

PORTD &= ~(1<<PORTD6);

}

else if ((time %  interval) == 0)

{

PORTD |= (1<<PORTD6);

}

}


void PPD7(int time, int interval)

{

if ((time %  (2 * interval)) == 0)

{

PORTD &= ~(1<<PORTD7);

}

else if ((time %  interval) == 0)

{

PORTD |= (1<<PORTD7);

}

}


int main(void)

{

int time = 0;


DDRD |= (1<<DDD6); // PD6 Out

DDRD |= (1<<DDD7); // PD7 Out

while(1)

{

PPD6(time, 125);

PPD7(time, 500);


time++;

_delay_ms(1);

}




Posted by 해비