|
ATMega16 и АЦП, настройка |
|
|
|
Nov 6 2007, 20:15
|
Группа: Новичок
Сообщений: 6
Регистрация: 3-11-07
Пользователь №: 32 020

|
Имеется МК Mega 163, на вход ADC0 (PA0) которого подается изменяющееся напряжение 0...5 В; AVcc и AREF соединен с Vcc, AGND соединен с GND. В CodeVisionAVR пишу такой код: Код unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | 0xff; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSR|=0x40; // Wait for the AD conversion to complete while ((ADCSR & 0x10)==0); ADCSR|=0x10; return ADCW; }
//настройки портов
void main(void) { int a = 0;
while(1) { a = (int)read_adc; PORTC.6 = 1; delay_ms(a); PORTC = 0x00; } } в результате светодион на шестом выводе порта С постоянно мигает с частотой примерно 0,5с. Наверное, снимается показание с внутреннего источника опорного напряжения, которое составляет примерно половину 5В. Что неправильно сделано? Как сделать, чтобы частота мигания светодиода менялась в зависимости от подаваемого напряжения на ADC0?
|
|
|
|
|
 |
Ответов
|
Nov 7 2007, 19:41
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(mr_onnik @ Nov 6 2007, 23:15)  ....................... Господа(товарисчи... кому как больше нравится...), хватит измываться над автором темы... Автор, полную схему со ВСЕМИ параметрами, полностью софт, и подробное описание того что Вы хотели получить, в студию... Тогда точно найдутся желающие Вам подсказать...
|
|
|
|
|
Nov 8 2007, 21:22
|
Группа: Новичок
Сообщений: 6
Регистрация: 3-11-07
Пользователь №: 32 020

|
Цитата(singlskv @ Nov 7 2007, 21:41)  Автор, полную схему со ВСЕМИ параметрами, полностью софт, и подробное описание того что Вы хотели получить, в студию...
Код /***************************************************** This program was produced by the CodeWizardAVR V1.25.7a Evaluation Automatic Program Generator © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com
Project : Version : Date : 02.11.2007 Author : Freeware, for evaluation and non-commercial use only Company : Comments:
Chip type : ATmega163 Program type : Application Clock frequency : 4,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *****************************************************/
#include <mega163.h> #include <stdio.h> #include <stdlib.h> #include <io.h> #include <stdint.h> #include <delay.h>
#define F_CPU 4000000UL
// Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSR|=0x40; // Wait for the AD conversion to complete while ((ADCSR & 0x10)==0); ADCSR|=0x10; return ADCW; }
// ADC initialization // ADC Clock frequency: 115,200 kHz // ADC Voltage Reference: Int., cap. on AREF
void init_avr(void) {
PORTA=0x00; DDRA=0x00;
PORTB=0x00; DDRB=0x00;
PORTC = 0x00; DDRC = 0xF0;/* set port C pins 7-4 as outputs, 3-0 as inputs */
PORTD=0x00; DDRD=0x0F;
// Global enable interrupts #asm("sei")
}
// Declare your global variables here
void main(void) { unsigned int a = 0; PORTD = 0x00; PORTC = 0x00; // Declare your local variables here
init_avr();
while (1) { a = read_adc(0); PORTC.6 = 1; delay_ms(a); PORTC = 0x00; delay_ms(a); }; } Программа CodeVisionAVR. Требуется сделать так, чтобы частота мигания светодиода прямопропорционально зависела от напряжения, подаваемого на ADC0.
|
|
|
|
|
Nov 8 2007, 23:53
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(mr_onnik @ Nov 9 2007, 00:22)  Код // ADC initialization // ADC Clock frequency: 115,200 kHz // ADC Voltage Reference: Int., cap. on AREF А где код инициализации ADC ? Вы там случаем битик ADEN выставить не забыли ?
|
|
|
|
Сообщений в этой теме
mr_onnik ATMega16 и АЦП Nov 6 2007, 20:15 mdmitry Цитата(mr_onnik @ Nov 6 2007, 23:15) Имее... Nov 6 2007, 21:49 oran-be А это - так задумано?
Код
ADMUX=adc_input | 0xff;... Nov 7 2007, 06:50 mr_onnik Цитата(oran-be @ Nov 7 2007, 08:50) ... Nov 7 2007, 08:30 SergeiCh Цитата(mr_onnik @ Nov 7 2007, 03:15) a = ... Nov 7 2007, 09:03 IgorKossak Цитата(SergeiCh @ Nov 7 2007, 11:03) (int... Nov 7 2007, 09:33  mr_onnik Цитата(IgorKossak @ Nov 7 2007, 11:33) Ну... Nov 7 2007, 10:09   oran-be Цитата(mr_onnik @ Nov 7 2007, 14:09) Испр... Nov 7 2007, 10:36    mr_onnik Цитата(oran-be @ Nov 7 2007, 12:36) ... Nov 7 2007, 10:55     SergeiCh Цитата(mr_onnik @ Nov 7 2007, 17:55) Подр... Nov 7 2007, 11:44     oran-be Цитата(mr_onnik @ Nov 7 2007, 14:55) Заса... Nov 7 2007, 13:01   SergeiCh Цитата(mr_onnik @ Nov 7 2007, 17:09) Испр... Nov 7 2007, 10:48  SergeiCh Цитата(IgorKossak @ Nov 7 2007, 16:33) Та... Nov 7 2007, 10:19 oran-be Да - кто первый заметит слона? Nov 7 2007, 10:05 GDI Вот что хорошо в CV, так это мастер нового проекта... Nov 7 2007, 12:22   mr_onnik Цитата(singlskv @ Nov 9 2007, 01:53) А гд... Nov 22 2007, 21:28  SergeiCh Цитата(mr_onnik @ Nov 9 2007, 04:22) Код#... Nov 9 2007, 04:43 sergeeff Jr. PWM организуй при помощи таймера... Nov 8 2007, 22:15 mrKirill Цитатаwhile (1)
{
a = read... Nov 23 2007, 04:45 Сергей Борщ Цитата(mrKirill @ Nov 23 2007, 06:45) Есл... Nov 23 2007, 10:25  mrKirill Цитата(Сергей Борщ @ Nov 23 2007, 16:25) ... Nov 23 2007, 11:11   Сергей Борщ Цитата(mrKirill @ Nov 23 2007, 13:11) Есл... Nov 23 2007, 11:26 defunct Код#define ADC_CONTROL (1 << ADEN... Nov 23 2007, 13:16 WHALE defunct,в CV это не пройдет.Почему-то у него нет х... Nov 23 2007, 15:14 defunct Цитата(WHALE @ Nov 23 2007, 18:14) в CV э... Nov 23 2007, 16:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|