guestbook

  1. 하늘바라기

    아 그렇군요...
    저도 조만간 간단한 조도센서이용해서 on/off 스위치 하나 만들어야하는데...
    아두이노 사용해봐야겠군요... ^^
    정보 감사합니다.

    2016.03.31 11:22 신고 [ EDIT/ DEL : REPLY ]
    • 취향이니 적당하게 고르셔도 됩니다만.. 가격이 싸니 좋긴 좋네요 ㅎㅎ

      2016.03.31 13:29 신고 [ EDIT/ DEL ]
  2. 하늘바라기

    아무래도 그게 정답일듯도 싶습니다.
    요즘은 몇백원짜리 마이컴도 많으니까요 ^^
    아두이노면 센싱쪽을 주로하시나요?

    2016.03.31 10:22 신고 [ EDIT/ DEL : REPLY ]
    • 평화로운 중고나라 뒤져보다가 개당 3천원에 팔길래 아두이노 나노 2개를 물어버렸습니다 ㅋㅋ
      원래 atmega 가지고 놀고 그랬는데 프로그래머(ISP)가 USB로 통합되서 확실히 편하네요. 센싱보다는.. 멀 할지 고민은 하는 중입니다.
      일단은 3축 가속도 센서뿐이라.. 자이로도 하나 구매하고 싶긴한데 ㅠㅠ
      PWM으로 서보 제어정도만 생각중이에요

      2016.03.31 10:55 신고 [ EDIT/ DEL ]
  3. 하늘바라기

    요즘 칩들이 모바일에 많이 상용되다보니 저전력관련해서 sleep을 default로 들어가게 해놓은 것이함정었습니다.
    ㅠㅠ ms 단위 동작에는 전혀 문제가 없으니 그리고 interrupt 발생을 us 단위로 정밀하게 사용하지 않으면 큰 의미는 없는
    부분이지만 정밀한 control 시에는 분명 큰 영행을 주고 있었습니다.
    인터럽트가 발생하고 ISR call했는데 이부분에서 시간이 걸리는거죠... 으흑

    2016.03.31 10:03 신고 [ EDIT/ DEL : REPLY ]
    • us단위로 할거면... 그냥 새로 마이컴을 더 추가하시는게 역시.. 저전력과 성능을 잡는 비법이 되려나요 ㅋㅋ
      요즘은 아두이노 가지고 노는 재미로 삽니다 ㅠㅠ

      2016.03.31 10:08 신고 [ EDIT/ DEL ]
  4. 하늘바라기

    프로젝트 우선 순위가 밀려 쉬엄쉬엄 알아보다.
    좀 어이없게 문제가 해결? 까지는 아니고 ISR calling delay 줄이는 방법을 알아냈네요... ㅋㅋ
    별거아니지만 같이 공유해봅니다.
    kernel 에서 power mengement 부분에서 Idle mode를 disable하면 ISR calling delay 가 거의 사라지네요
    traser를 이용하여 보니 각 process들이 idle mode로 들어갔다 wakeup하는 시간이 짧게는 몇 us에서 몇십 us까지 걸리는 것을
    보고 try 해봤더니 확실히 개선이 되는군요... ㅠㅠ
    이걸 몇달을 삽질했네요...
    ^^
    항상 블로그에 올려주시는 글 잘보고 있습니다.
    감사힙니다.

    2016.03.31 09:38 신고 [ EDIT/ DEL : REPLY ]
    • 와.. 좋은 정보 감사합니다 ㅎㅎ
      그나저나.. sleep mode가 isr에 영향을 크게 줄거라고 생각을 못했네요
      그렇게 짧게짧게 sleep이 들어갈줄은.. ㄷㄷ

      2016.03.31 09:52 신고 [ EDIT/ DEL ]
  5. 비밀댓글입니다

    2016.03.03 15:55 [ EDIT/ DEL : REPLY ]
    • 고정밀 타이머라고.. HPET 쪽을 지원하면 해상도를 올릴 순 있으나 인터럽트를 제시간에 하려면.. nice를 올리는 그리 좋지 못한 방법외에는 딱히 떠오르는 방법이 없는것 같습니다.(음수의 nice 값을 지정하면 우선순위가 높아져 레이턴시가 조금은 더 고르게 나오지 않을까 합니다)
      아니면 별도의 마이컴을 이용해서 hard RT를 요구하는 부분을 따로 꺼내거나 하는 식으로 처리 해야 하지 않을까 합니다.

      http://www.slideshare.net/jserv/realtime-linux

      그리고.. 멀티 프로세서라면 affinity 지정해서 특정 한가한 cpu에 고정할당하는 식으로 테스트 해보시는 것도 방법일 것 같습니다.

      2016.03.03 13:16 신고 [ EDIT/ DEL ]
  6. 비밀댓글입니다

    2016.03.03 15:55 [ EDIT/ DEL : REPLY ]
  7. 하늘바라기

    ^^ 인사가 늦었습니다.
    새해 복 많이 받으시고
    새해에는 원하시는 모든 일 다 이루시길 바랍니다... ^^
    행복하세요~!

    2016.01.05 11:42 신고 [ EDIT/ DEL : REPLY ]
  8. 하늘바라기

    별말씀을 다하십니다....
    항상 누군가에게 물어볼수 있고 성의있게 답해준다는 것만으로도...
    많은 도움과 힘이 납니다...
    항상 감사합니다. ^^

    2015.12.08 08:43 신고 [ EDIT/ DEL : REPLY ]
  9. 하늘바라기

    ^^;;;;;
    해결했습니다....
    While문안에서 너무 delay가 적어서 그랬네요.... ㅠㅠ
    CPU 속도가 높아진걸 관과했네요...
    항상 성의있는 답변 감사합니다...

    2015.12.07 17:50 신고 [ EDIT/ DEL : REPLY ]
    • 매번 별 도움이 못되는것 같은걸요 ㅠㅠ
      잘해결하시는거 보니 부럽습니다 ㅠㅠ

      2015.12.07 21:04 신고 [ EDIT/ DEL ]
  10. 하늘바라기

    우선 답변감사합니다.
    이부분이 새로작선한 code가 아니라 At91sam9g45로 이미 구현했던 것을 TI사 AM3352로 포팅하고 있는 거라서요...
    User영역 부분은 기존과 동일해서요... (기존에는 잘 돌아갔는데...)
    그리고 계속 Waiting하는 것이아니고 kernel 영역에서 setting되는 flag를 User 영역에서 While문에서 1usec에 한번씩 read해서
    값이 셋이되면 break로 나오게 되어있습니다. ^^;;;
    preemptive scheduling 설정이나 spin lock 같은 걸로 해결이 안될까요?

    2015.12.07 15:46 신고 [ EDIT/ DEL : REPLY ]
    • 드라이버 쪽을 구현해본 경험이 적어서 말씀 드리기 힘들지만...
      interrupt가 아닌 polling 방식으로 구현하면 이래저래 cpu 소비가 높아서 효율이 좋진 않을것 같습니다.
      저도 찾아 봐야 할듯 합니다만...
      일단 kernel mode에서 user mode 프로세스 쪽으로 signal이나 인터럽트를 통해 값이 변경되었음을 알려주는게 올바른 설계방법이 아닐까요?

      http://stackoverflow.com/questions/3614213/user-mode-and-kernel-driver-communication

      2015.12.07 15:54 신고 [ EDIT/ DEL ]