Atmega 64 로 뭐 좀 만드느라 테스트중인데..
더하기 1이 안되네요 =_=;;
스위치를 꾹 누르고 있다가 떼는 순간
로컬변수 1을 증가시켜주고 print하는건데...
변수 증가가 안됨여;;
PORTE.6 = 1;
// 이건 LED를 달아서 테스트 해봣는데 꺼지고 켜지고 하는 동작은 잘됩니다.
// 패킷도 손가락 떼는 순간 잘 날라가고.. 근데 sendNum 변수는 계속 0으로만 찍히네요;;
char data,test[30];
int flag_switch = 0;
int sendNum = 0;
int val = 0;
//GlobalValInit();
PortInit();
//MotorStop();
PORTE.6 = 0;
while(1)
{
if(PINE.7 == 0)
{
delay_ms(100);
PORTE.6 = 1;
flag_switch = 1;
}
else if(PINE.7 == 1)
{
PORTE.6 = 0;
if(flag_switch == 1)
{
flag_switch = 0;
sprintf(test, "Hello : %d\n", sendNum++);
PutString1(test);
}
}
}
PINE.7 --> flag_switch = 1; ==> PINE.7 == 1 --> flag_switch == 1 --> sprintf(test, "Hello : %dn", sendNum++);
이순서 일껀데.. 계속 0이 찍힌다면.. 프로그래밍 외적인 부분에서 원인 찾아야 되는거 아냥 ?
노이즈때문
지금 while문이나 if/else문이 정상적으로 돌아가고 있어서 답답하네요;; 프로그래밍 외적인 부분에서 찾는게 맞긴하는거 같은데..
sendNum++ 이것을 sendNum 하고 아래에 sendNum = sendNum + 1 또는 sendNum++ 로 별도로 행을 만들어서 컴파일 해봐. 가끔 그렇게 하면 되는 경우도 있는게 요상한 임베디드의 세계
그건 그렇고 얼마 들었냐 ? 저것 만들고 테스트, 디버깅, 업로드 하는 비용이 ?
지금 일하는 곳 세운상가도 가깝겠다 시간 날때 재료나 사모아서 만들어 볼까 하는데
sendNum++이 아니고 ++sendNum해야되는 거 아닌가 ;;
ㄴ 계속 0이라잖아. 첫번째 0이라는 것은 이해되지만 계속 0이라는 것은 이상한거지
그리고 아마 Hello 이것도 찍히고는 있겠지 ?
아.. while있었네 증가시킬때도 딜레이 줘바여
옛날 학교다닐때 led가 cpu못쫓아가는 건 딜레이로 해결했었는데 -_-;;;;;