4월, 2013의 게시물 표시

arduino software reset test OK

//test OK ( asm ( "jmp 0"); ) /*   Blink   Turns on an LED on for one second, then off for one second, repeatedly.   This example code is in the public domain.  */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; int count=0; // the setup routine runs once when you press reset: void setup() {                  // initialize the digital pin as an output.   pinMode(led, OUTPUT);       for(int i=0; i<5; i++)   {     digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)     delay(500);               // wait for a second     digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW     delay(500);               // wait for a second   } } // the loop routine runs over and over again forever: void loop() {   if(count==10)   {     asm("jmp 0");   }   count++;     digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)   delay(1000);               // wait for a second   digita

arduino software reset

http://blog.naver.com/PostView.nhn?blogId=eosuntaek&logNo=50001608290&redirect=Dlog&widgetTypeCall=true 리셋하시고 싶은 부분에 #asm("jmp 0")삽입해 보세요.. 마이크로 비젼 질문게시판에 이런글이 잇던데 참고 하세요.. iar 컴파일러를 이용해서 avr 사용시 하드웨어는 reset을 하지않고 소프트웨어 리셋을 할 수있는 방법이있는지요? program counter / stack pointer 초기화 가능... 답변 watch dog를 사용하지 않으시려면요,,, 이렇게 해보시죠,,함수 포인터 입니당. terminal로 A를 100개 보내고 리셋되는게 반복되는 예제입니다. 포인터가 시작번지를 가리키고 잇으며 포인터함수를 호출할경우 리셋으로 점프하게되므로 자의적으로 혹은 외부 상태에 맞게 코딩하시면 리셋되리라 봅니다..그럼,, void main (void) { void (* reset)(void)=0x0000; unsigned char temp; ....중간생략 while(1) { for(temp=0;temp<100; temp++) sendbyte('A'); (*reset)(); //또는 (void)(*reset)(); // CODE 0번지로 점프 ->리셋과 같음, } } [출처] AVR 소프트웨어 리셋 | 작성자 Alan

일반 프로그램을 윈도 서비스로 등록

http://cylog.cyloghomes.net/mc02/Posts/view/24317

적외선 리모콘 (분석의 친구) [Arduino]

이미지
http://hello-world.blog.so-net.ne.jp/2011-05-19 / / IR 분석 스케치 # define IR_IN 2           / / IR Receiver # define NEC 1 # define AEHA 2 # define     3 # define BUF_SIZE (512)     / / ATmega168이라면 128 정도하지 않으면 문제 void setup () {    pinMode (IR_IN, INPUT ); / / Vout -> digital 2    pinMode (3, OUTPUT ); digitalWrite (3, LOW ); / / GND -> digital 3 LOW    pinMode (4, OUTPUT ); digitalWrite ( 4, HIGH ); / / Vcc -> digital 4 HIGH    . begin (115200); } void loop () {    unsigned long usec, nec_ = 0;    unsigned int I, n, irOffTime, minTime, aveCnt = 0, aveAdd = 0;    unsigned int irdata [BUF_SIZE] timeunit, leaderH, leaderL, datalen;    unsigned int format = 0, hex = 0, sony_data = 0, sony_adrs = 0, sony_adrs_bit = 0;    boolean IsValid = ;    / / ● 적외선을 감지 할 때까지 대기    while ( digitalRead (IR_IN) == HIGH );    / / ● 원시 데이터를 가져    for (i = 0; i <BUF_SIZE;) {     usec =  micros ();      while (