Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.11.2010, 17:17
|
#61
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Сообщение от sergx1300
|
А хватит ли времени, не будут слишком длинные паузы между следующим АЦП преобразованием?
|
Это уже вам надо посчитать. Псмотрите сколько времени требуется для переключения вывода для отключения int, типо переключение между альтернативными функциями порта(в даташите). Посмотрите время преобразования АЦП, тож вроде есть в даташите. Ну и считайте, сколько всего времени займет это у вас в совокупности.
А по поводу вкл/выкл инт идея не нова, так, например в меге 128 которую сейчас мучил на этот предмет, так в ней АЦП может отключать, все кроме таймеров и нескольких еще блоков, так сказать, чтобы не искажать показания.
|
|
|
|
04.11.2010, 17:32
|
#62
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
инты и по фронту , и по уровню настраиваются
|
|
|
|
04.11.2010, 17:36
|
#63
|
Прописка
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Сообщение от Saadov
|
так в ней АЦП может отключать
|
тоесть в меге 128 принудительно отключаться все левое а потом само включается.
|
|
|
|
04.11.2010, 17:39
|
#64
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Сообщение от sergx1300
|
тоесть в меге 128 принудительно отключаться все левое а потом само включается.
|
Из даташита)
Цитата:
|
The ADC Noise Reduction mode stops the CPU and all I/O modules except
Asynchronous Timer and ADC, to minimize switching noise during ADC conversions. In Standby
mode, the Crystal/Resonator Oscillator is running while the rest of the device is sleeping. This
allows very fast start-up combined with low power consumption. In Extended Standby mode,
both the main Oscillator and the Asynchronous Timer continue to run
|
|
|
|
|
04.11.2010, 17:39
|
#65
|
Прописка
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Сообщение от OlegNZH
|
инты и по фронту , и по уровню настраиваются
|
Да. Но ето к хорошому не проведет, все равно отключать надо
|
|
|
|
04.11.2010, 17:43
|
#66
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Сообщение от sergx1300
|
тоесть в меге 128 принудительно отключаться все левое а потом само включается.
|
в дополнение, вдруг кому для развития пригодится
|
|
|
|
04.11.2010, 23:33
|
#67
|
Прописка
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Вопрос:
Если использовать внешнее прерывание по нарастающему фронту, вывод порта как должен быть сконфигурирован: как in или out
|
|
|
|
05.11.2010, 01:43
|
#68
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Сообщение от sergx1300
|
Вопрос:
Если использовать внешнее прерывание по нарастающему фронту, вывод порта как должен быть сконфигурирован: как in или out
|
А если логически подумать? Внешнее - "Из вне"
|
|
|
|
05.11.2010, 14:28
|
#69
|
Прописка
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Вот реальная картина импульсов и сигнала на осциллографе. Может кому то интересно.
|
|
|
|
05.11.2010, 14:37
|
#70
|
Прописка
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
|
Re: Помогите настроить АЦП в Atmega32
Настроил инт на выключения перед ацп преобразованием и включение после преобразования. Между выкл/вкл задержка 15 нс. Вот результаты и кусочек кода.
Код:
|
while(1)
{
//printf("777\r\n");
// INT0: Off
GICR=0x00; //External Interrupt Request 1 Disable
MCUCR=0x00; //Interrupt Sense Control 0 Bit 1 and Bit 0
ADMUX=0b00000000; //chanel ADC 0
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_0=adc_0+(ADCW››2);
// INT0 Mode: Rising Edge
GIFR=0x40; //External Interrupt Flag
MCUCR=0x03; //Interrupt Sense Control 0 Bit 1 and Bit 0
GICR|=0x40; //External Interrupt Request 1 Enable
delay_us(delay_adc);
// INT0: Off
GICR=0x00; //External Interrupt Request 1 Disable
MCUCR=0x00; //Interrupt Sense Control 0 Bit 1 and Bit 0
ADMUX=0b00000001; //chanel ADC 1
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_1=adc_1+(ADCW››2);
// INT0 Mode: Rising Edge
GIFR=0x40; //External Interrupt Flag
MCUCR=0x03; //Interrupt Sense Control 0 Bit 1 and Bit 0
GICR|=0x40; //External Interrupt Request 1 Enable
delay_us(delay_adc);
// INT0: Off
GICR=0x00; //External Interrupt Request 1 Disable
MCUCR=0x00; //Interrupt Sense Control 0 Bit 1 and Bit 0
ADMUX=0b00000010; //chanel ADC 2
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_2=adc_2+(ADCW››2);
// INT0 Mode: Rising Edge
GIFR=0x40; //External Interrupt Flag
MCUCR=0x03; //Interrupt Sense Control 0 Bit 1 and Bit 0
GICR|=0x40; //External Interrupt Request 1 Enable
delay_us(delay_adc);
// INT0: Off
GICR=0x00; //External Interrupt Request 1 Disable
MCUCR=0x00; //Interrupt Sense Control 0 Bit 1 and Bit 0
ADMUX=0b00000011; //chanel ADC 3
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_3=adc_3+(ADCW››2);
// INT0 Mode: Rising Edge
GIFR=0x40; //External Interrupt Flag
MCUCR=0x03; //Interrupt Sense Control 0 Bit 1 and Bit 0
GICR|=0x40; //External Interrupt Request 1 Enable
delay_us(delay_adc);
// INT0: Off
GICR=0x00; //External Interrupt Request 1 Disable
MCUCR=0x00; //Interrupt Sense Control 0 Bit 1 and Bit 0
ADMUX=0b00000100; //chanel ADC 4
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_4=adc_4+(ADCW››2);
// INT0 Mode: Rising Edge
GIFR=0x40; //External Interrupt Flag
MCUCR=0x03; //Interrupt Sense Control 0 Bit 1 and Bit 0
GICR|=0x40; //External Interrupt Request 1 Enable
delay_us(delay_adc);
// INT0: Off
GICR=0x00; //External Interrupt Request 1 Disable
MCUCR=0x00; //Interrupt Sense Control 0 Bit 1 and Bit 0
ADMUX=0b00000101; //chanel ADC 5
// Delay needed for the stabilization of the ADC input voltage
delay_us(delay_adc);
ADCSRA|=0x40; // Start one AD conversion (bit 6 to set one)
while (!(ADCSRA & 0x10)); // Wait for the AD conversion to complete
adc_5=adc_5+(ADCW››2);
n_adc++;
// INT0 Mode: Rising Edge
GIFR=0x40; //External Interrupt Flag
MCUCR=0x03; //Interrupt Sense Control 0 Bit 1 and Bit 0
GICR|=0x40; //External Interrupt Request 1 Enable
delay_us(40);
} |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:22.
|
|