Страница 1 из 1

АЦП на Atmega8

Добавлено: Вт июн 17, 2014 21:16:25
zwer97
Есть Atmega8, знаю что у нее есть функция считывания и переобразования аналогового сигнала в цыфровой через порты ADC.
Аналоговый сигнал у меня представлен сигналом с акселерометра mma7361 (там выходит питание от 1 до 2 вольт). Нужно переобразовать в число и залить в переменную. Времени учить АЦП полностью нету, да и смысла тоже, это разовый проэкт.
Помогите пожалуйста с кодом.
*Немного не в ту тему, но форум для МК закрыт.

Re: АЦП на Atmega8

Добавлено: Вт июн 17, 2014 21:28:50
Pink-Pank
там учить 2 страницы. стыдно.

Re: АЦП на Atmega8

Добавлено: Вт июн 17, 2014 21:39:07
zwer97
Pink-Pank писал(а):там учить 2 страницы. стыдно.
http://myrobot.ru/wiki/index.php?n=CodeLibrary.AVRADC вот, + кучу сайтов перелопатил. Так и не понял как значение в переменную записать.

Re: АЦП на Atmega8

Добавлено: Вт июн 17, 2014 22:21:19
zwer97
Вот моя програма, но значение ADCH всегда 255 и не меняеться (вычеслил експерементально)

Код: Выделить всё

#define F_CPU 1000000UL  // 1 MHz
   #include <avr/io.h>
   #include <avr/delay.h>
   
   int main (void){

	// инициализация портов

   DDRD = 0xff; 
   DDRC = 0x00;
   
   ADCSR = 0b10000011; // ADEN=1 (7-й бит); ADPS2..0=011;
   ADMUX = 0b00100001; // MUX3..0=ADC1 (00001);
   
while(1) {

		ADCSR |= _BV(ADSC);   // запуск преобразования

		loop_until_bit_is_set(ADCSR,ADSC); // ждем, пока не 
                                                   // будет сброшен ADSC

		_delay_us(1);   // ждем обновления регистра данных
		if (ADCH < 255) 
		{PORTD |= _BV(PD0); // установить "1" на линии 0 порта D
         PORTD &= ~_BV(PD1); // установить "0" на линии 1 порта D
		}
		else
		{
		PORTD |= _BV(PD1); // установить "1" на линии 1 порта D
        PORTD &= ~_BV(PD0); // установить "0" на линии 0 порта D
		}
		}
		}

Re: АЦП на Atmega8

Добавлено: Вт июн 17, 2014 22:48:14
zwer97
Нашел ответ на свой вопрос вод тут. Всем кому нужно, заходите. Все очень понятно написано)) http://radioparty.ru/index.php/prog-avr ... l=&start=1

Re: АЦП на Atmega8

Добавлено: Ср июн 18, 2014 13:23:19
zwer97
Теперь появилась следующая проблема.
Нужно считать два аналоговых сигнала с ADC0 и ADC1, но повсюду написано только как считать один.
Без опытного человека не обойтись.

Re: АЦП на Atmega8

Добавлено: Ср июн 18, 2014 13:34:59
Pink-Pank
Есть такой чувак Евстифеев. Написал книгу на руccком об AVR-контроллерах. скачайте.