2017-04-04 8 views
-2

저는 현재 Arduino의 오디오 기반 프로젝트 작업을하고 있습니다. 입력이 (ADC를 통해) double 형이고, 데이터에 대해 몇 가지 연산을 수행해야합니다. 그런 다음 오디오를 출력해야합니다. 그러나 문제는 PWM 출력 레지스터 (AVR 기반)가 int를 허용한다는 것입니다.float을 정보를 잃지 않고 int로 변환하는 방법은 무엇입니까?

따라서 데이터를 잃지 않고이 부동 소수점을 int로 변환 할 수있는 방법이 있습니까?

+1

ATmega ADC는 10 비트 정수를 출력합니다. 어떤 데이터를 잃습니까? 전환의 예를 들어주세요. – umka

답변

0

입력이 양자화되고 입력의 최대 동적 범위와 모든 후속 산술 연산의 결과가 크기보다 작은 일부 n의 경우 2^n으로 제한되지 않는 한 일반 float - int 변환은 거의 항상 정보를 잃게됩니다 정수.

양자화 노이즈의 노이즈 셰이핑 (필터링 된 디더링)은 신호 입력에 따라 일부 정보 손실을 줄일 수 있습니다.