реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> настройка АЦП Atmega16
romanF1
сообщение Jun 3 2011, 08:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 18-05-11
Пользователь №: 65 092



подскажите в чем проблема, включил внутреннее АЦП миктроконтролера Atmega16 с выводом данных на ком порт, не измеряю ничего а результат приходит 1023, что же АЦП регистрирует?
CODE

#include <mega16.h>

#include <delay.h>

// Standard Input/Output functions
#include <stdio.h>

#define ADC_VREF_TYPE 0x00

// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
printf("ADC=%u \n",adc_data);
ADCSRA|=0x40;
delay_ms(10000);
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x8B;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Global enable interrupts
#asm("sei")
ADCSRA|=0x40;
while (1)
{
// Place your code here

delay_ms(100);
}
}


Сообщение отредактировал IgorKossak - Jun 3 2011, 08:38
Причина редактирования: [codebox]!!! Читайте правила оформления!
Go to the top of the page
 
+Quote Post
GDI
сообщение Jun 3 2011, 09:31
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Опору подайте внешнюю, как Вы в коде включили, или на внутреннюю переключите. Вывод AVCC должен быть подключен к какому-нибудь питанию.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
dimka76
сообщение Jun 3 2011, 09:37
Сообщение #3


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



У вас выбран для опорного напряжения AREF pin, а на него нпряжение подано?
Включите лучше внутренний опорник.
И частота какая-то странная (уж больно большая ) 1000 кГц.

Оставьте визарды в покое и настраивайте сами по документации на контроллер. Ничего там сложного нет пару регистров настроить.
Если с английским совсем никак, то Евстифеева почитайте.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
romanF1
сообщение Jun 3 2011, 10:45
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 18-05-11
Пользователь №: 65 092



выбирал внутренний источник питания АЦП, AVCC всегда должен быть подключен к питанию?
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jun 3 2011, 12:53
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(romanF1 @ Jun 3 2011, 14:45) *
выбирал внутренний источник питания АЦП, AVCC всегда должен быть подключен к питанию?

"Вы играете на скрипке? -- Не пробовал, но думаю, что смогу."
Простите, навеяло.

Документацию всё ж таки надо читать.
Там написано: "AVCC is the supply voltage pin for Port A and the A/D Converter. It should be externally connected
to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC
through a low-pass filter.".
И ещё: "AVCC must not differ more than ±0.3 V from VCC"
По слухам, от avcc питается весь порт А.
Go to the top of the page
 
+Quote Post
GDI
сообщение Jun 3 2011, 13:38
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата(Maik-vs @ Jun 3 2011, 16:53) *
По слухам, от avcc питается весь порт А.

Вы сами и распространаете такие "слухи" sm.gif, т.к. выше цитировали:
Цитата(Maik-vs @ Jun 3 2011, 16:53) *
Там написано: "AVCC is the supply voltage pin for Port A and the A/D Converter.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 5 2011, 14:07
Сообщение #7


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Кстати, когда Вы правильно запитаете АЦП, то входы в воздухе не оставляйте. Иначе снова странные цифры приходить будут)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 23:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016