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

 
 
> АЦП и прерывания ATmega48, помогите начинающему...
NikitoS-86
сообщение Sep 22 2008, 10:29
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 22-09-08
Пользователь №: 40 380



Добрый день. Я занялся изучением AVR, использую AVRStudio в связке с WinAVR.
И у меня появились затруднения определённого плана. Я имею представление о том, что есть прерывание, что есть стек, указатель команд и вообще имею хорошее знание касательно теории... Но дошло дело до практики... И попытался я написать простейший код... Итак ситуация: в качестве входа АЦП использоваться ADC7, надо будет на 3 выхода (PB0..2) выдавать адрес на мультиплексер, который будет переключать свои входы, на входв АДС7 будет как раз приходить сигнал с демультеплексора, АЦП должен оцифровать и записать эти данные в массив...
Вот примерный код:

Цитата
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>

void port_B_settings (void);
void ADC_settings (void);
void port_C_settings (void);


int help_reg=0;

ISR (ADC_vect)
{
help_reg = 1;
}

void main (void)
{
int Ubat[4];
int Tbat[4];
int Icur;

port_B_settings();
ADC_settings();


for (int i=0;i<3;i++)
{
ADCSRA = 0xC8;
sei();

while (!help_reg)
{}

Ubat[i] = help_reg;
}
}

void port_B_settings (void)
{
DDRB = 0x07; //PB0..1 - outputs
}

void ADC_settings (void)
{
ADMUX = 0x07; //ADC7
ADCSRA = 0x88; //ADEN=1 | ADIE = 1
}



В нём правда ещё не выдаётся адрес никуда и т.д. Не суть... А суть в том, что у меня по-левому работает прерывание.
Я хочу, чтобы после начала прерывания шло ожидание прерывания, после чего его обработка и после чего запись..., а у меня выходит всякая ересь и в симуляторе вконце концов вообще после первого "прохода" получается бесконечный цикл....=/
Что я делаю неправильно?
Вопрос касательно языка С - можно ли обрабатывать прерывание не по этому макросу, а что называется ручками... Просто я не знаю как мне в такой обработчик прерывания отправить например указатель на мой массив, чтобы прям в обработчике осуществлять запись в массив, а не вводить для этого пресловутый help_reg=/

И ещё вопрос: я перед запуском АЦП настраиваю только его вход в ADMUX, а надо ли настраивать ещё первые байты, которые отвечают за настройку напряжения если не ошибаюсь... Вообще если можно, то посвятите немного о том, как настраивать и запускать АЦП, поскольку из даташита к сожалению не всё понял на английском, например мне не понятно немного что такое некий "непрерывный режим работы" АЦП, который настраивается через запись бита ADATA в регистре ADCSRA...

Ах да, последнее: речь идёт о ATmega48

Заранее огромное спасибо ответившим, просто уже 2 дня мучаюсь с этим АЦП=/

Сообщение отредактировал NikitoS-86 - Sep 22 2008, 10:31
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- NikitoS-86   АЦП и прерывания ATmega48, помогите начинающему...   Sep 22 2008, 10:29
- - gormih   Для инииализации АЦП небходимо обязательно инициал...   Sep 22 2008, 11:41
- - NikitoS-86   1) Так я помоему как раз в функции ADC_settings ()...   Sep 22 2008, 11:45
- - SasaVitebsk   Давайте по-порядку. 1) Для начала очень даже непло...   Sep 22 2008, 12:18
- - NikitoS-86   1) К сожалению выбрать другую микруху - уже нельзя...   Sep 22 2008, 12:43
|- - SasaVitebsk   Цитата(NikitoS-86 @ Sep 22 2008, 15...   Sep 22 2008, 15:48
||- - Цыкетчик   Надо не забыть ещё сделать задержку примерно на 1м...   Sep 23 2008, 10:50
|- - Сергей Борщ   Цитата(NikitoS-86 @ Sep 22 2008, 15...   Sep 23 2008, 18:23
- - Aleksandr Baranov   Для манипуляции битами регистров в библиотеке avr-...   Sep 22 2008, 12:58
|- - NikitoS-86   Цитата(Aleksandr Baranov @ Sep 22 2008, 16...   Sep 22 2008, 13:13
|- - Aleksandr Baranov   Цитата(NikitoS-86 @ Sep 22 2008, 09...   Sep 22 2008, 13:43
- - NikitoS-86   Итак, во-первых, ОГРОМНОЕ спасибо всем откликнувши...   Sep 23 2008, 12:25
- - MrYuran   Цитатаmeasure_Ubat (&Ubat , &channel_numbe...   Sep 23 2008, 12:35
- - NikitoS-86   Да, так и есть по идее, и сначала я пользовал имен...   Sep 23 2008, 13:25
|- - MrYuran   Цитата(NikitoS-86 @ Sep 23 2008, 17...   Sep 23 2008, 13:46
- - SasaVitebsk   Высскажу несколько соображений общего характера. В...   Sep 23 2008, 16:09
- - NikitoS-86   Цитата(SasaVitebsk @ Sep 23 2008, 20:09) ...   Sep 23 2008, 19:25


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:46
Рейтинг@Mail.ru


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