2014-11-24 9 views
1

MSP430에 연결된 버저를 통해 노래를 재생하고 싶습니다. 노래는 일련의 시간 또는 삐 소리가납니다. 그러나 부저 소리를내는 방법이나 어셈블리에서 소리를 제어하는 ​​방법을 모르겠습니다. 이 프로젝트에서 IAR Embedded Workbench를 사용하고 있습니다.어셈블리 언어를 사용하여 MSP430에서 톤을 재생하는 방법

참고 : 라이브러리에서는 C를 사용하여 쉽게이 작업을 수행 할 수 있지만 어셈블리에서만이 작업을 수행하려고합니다.

조립품 만 사용하여 MSP430에 연결된 부저에 '삑'또는 '삑'소리를내는 예를 게시 할 수 있습니까? 나는 나머지를 알아낼 수있다.

미리 감사드립니다.

+0

첫 번째 두 개 단락은 사용자가 요청하는 작업에 도움이되지 않습니다. 사용자가 어셈블리에서 경고음을 출력하는 방법을 알고 싶어하기 때문입니다. 작업에 대한 해결에 시간 낭비가있을 수 있으므로 시간을 낭비해야합니다.) 환호성 및 환영 SO –

+0

ARM 용 IAR과 만 작업 했으므로 MSP430에 어느 정도 적용되는지는 잘 모릅니다. 어쨌든 : 하드웨어 디버거가있는 경우 IAR은 컴파일 된 ASM 코드를 추적 할 가능성이 있습니다. 그렇지 않은 경우 IAR에 MSP에 대한 시뮬레이터 모드가 있는지 설명서를 확인하십시오. 그렇게하면 C 프로그램에서 어떻게 수행되는지 알 수 있습니다. 먼저 최적화를 비활성화하십시오. 그런 다음 C 함수를 인라인 어셈블러로 대체 할 수 있습니다. 이 메소드를 많이 사용하지 않았기 때문에 장기적으로 얼마나 유용한 지 알 수 없습니다. – user694733

+0

C 프로그램은 사용하고 싶지 않은 라이브러리를 사용합니다. 부저에 HIGH를 출력하는 것처럼 간단해야한다고 생각했지만 작동하지 않는 것 같습니다. 또한, 나는 결국 톤을 제어 할 수 있기를 원합니다. 그것은 어려운 부분입니다. –

답변

0

나는이 질문에 많은 일반화와 가정을하고 대답 할 것이다. 비록 내가이 대답을 리팩터링하고 더 나은 것을 줄 수있을지라도 당신이 몇 가지 질문을 정리할 수 있다면.

CL이 댓글에 충돌했습니다. 특정 주파수에서 핀을 하이 및 로우로 구동해야합니다. 클럭 주파수에 따라 적당한 수의 사이클을 지연시킨 후 높은 레벨로 구동하여이를 간단히 수행하여이를 간단히 수행 할 수 있습니다.

높은 정밀도로 수행하려면 다음과 같이하십시오. MSP430의 PWM 핀. 당신은 50 %의 듀티 사이클을 가진 PWM 신호로 부저를 구동하기를 원할 것입니다.

PWM 출력 핀은 MSP430의 타이머 모듈의 일부입니다. 타이머 모듈은 사용하는 클럭 소스가 유연하고 주파수를 조정할 수있는 확장 옵션이 많습니다. 일반적으로 디지털 제어 발진기 (DCO)를 사용하여 타이머에 공급할 수있는 시계를 공급할 수 있습니다. 이를 통해 PWM 신호의 주파수를 변경할 수 있습니다. MCLK에 DCO를 사용해야하고 MCLK를 혼란스럽게하고 싶지 않은 것처럼 어떤 이유로 든 그렇게 할 수 없다면, 소스 클록의 디바이더를 조정하지 않고도 수동으로 타이머 주파수를 설정할 수 있습니다 타이머 레지스터. http://www.ti.com/lit/an/slaa116/slaa116.pdf

그렇지 않으면 수동으로 주파수를 제어하기 위해 비교/(어떤 핀) 자신의 PWM 신호를 쾅 비트 타이머 모듈을 사용하여 캡처를 변경할 수 있습니다 여기에

는이 문제에 앱 노트입니다.

더 나은 해답을 제공 할 수있는 몇 가지 질문 :

  • , 당신은 데이터 시트를 부저의 어떤 종류가 있습니까이되어 사용하고있는 MSP430 어떤 시리즈
    1. ?
    2. 부저가 GPIO 핀에 연결되어 있거나 핀이 타이머 모듈의 PWM 출력으로 구동 될 수 있는지 여부.
    3. 이 부저는 일부 외부 드라이브 신호가 필요한 트랜스 듀서라고 가정하는 것이 안전합니까? 아니면 단지 인 에이블 신호가있는 내부 오실레이터가 필요합니다.
    4. 설계도를 게시 할 수 있습니까?
    5. DCO가 다른 작업을 수행 할 때 MCLK에 사용할 수있는 외부 크리스탈이 있습니까?

    어셈블리에서이 작업을 수행하는 이유와 숙제 문제가 아닌 한 C를 사용하지 않는 이유는 여전히 이해할 수 없습니다. 그리고 그때조차도 C에서 먼저 작업을 수행 한 다음 다시 돌아가서 모든 가정을 한 번 해보면 조립할 수 있습니다.