Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT90PWM3B - проблема с AMP1, AMP0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Edsp
имеется следующая проблема с AT90PWM3B:

не удается включить встроенные диф. усилители AMP1 и AMP0, точнее результаты АЦП не меняются
в зависимости от того включен усилитель или нет и от изменения коэффициента усиления данного усилителя
( проверялось на нескольких чипах)
использовался IAR 5.30, и отладчик JTAGICE mkII

Код
#define Enable_amp1()                 (AMP1CSR |= (1<<AMP1EN))
#define Disable_amp1_input_shunt()    (AMP1CSR &= ~(1<<AMP1IS))
#define Set_amp1_gain20()             (AMP1CSR |=  (1<<AMP1G1), AMP1CSR &= ~(1<<AMP1G0) )
#define Amp1_internal_clock()         (AMP1CSR &= ~(  (1<<AMP1TS1) | (1<<AMP1TS0) ) )

#define I_FL1                         9  // PС5 : AMP1+  PIN22, (AMP1- PIN21 -> GND)
#define Get_i_FL1()                   (U8) (get_adc_result(I_FL1))

#define Start_conv()                  (ADCSRA |= (1<<ADSC) )
#define Start_conv_channel(channel)   (Select_adc_channel(channel), Start_conv() )
#define Wait_end_of_conversion()      while (ADCSRA & (1<<ADSC))
#define Adc_get_8_bits_result()       ((U8)(ADCH))
#define Clear_adc_mux()               (ADMUX  &= ~((1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0)) )
#define Select_adc_channel(channel)   (Clear_adc_mux(), ADMUX |= (channel) )


//включение аналоговых входов
  DIDR0 = 0x4C;
  DIDR1 = 0X1F;

// инициализация AMP1
    Enable_amp1();
    Disable_amp1_input_shunt();
    Set_amp1_gain20();
    Amp1_internal_clock();


// получение данных от АЦП (8бит)

U8 get_adc_result(U8 channel){
Start_conv_channel(channel);
Wait_end_of_conversion();
return (Adc_get_8_bits_result());
}


// измерение тока с использованием дифф. усилителя - 9 канал АЦП
  g_i_FL = Get_i_1();



судя по состоянию регистров ADMUX,ADCSRA, ADCSRB, AMP1CSR все должно быть в порядке ,
тем не менее усилитель не работает, то есть данные в регистре ADC ничем не отличаются от режима работы без усилителя,
сам АЦП при этом работает нормально и данные вполне достоверны для неусиленного сигнала.


то ли где то ошибка в коде, конфигурации контроллера, то ли причина в самом чипе, то ли что-то не понял :07:
Если кто-то имел дело с PWM3b- прошу откликнуться
MSprut
А где выбор усиленного канала в ADMUX? По даташиту выход усилителя АМР1 в ADMUX под номером 12, а не 9. См. Figure 21-1. Analog to Digital Converter Block Schematic и таблицу на стр. 247
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.