Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 21.03.2023, 23:56  
Alexander_vrn
Прохожий
 
Регистрация: 21.03.2023
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Alexander_vrn на пути к лучшему
По умолчанию

Что-то похоже переклинило. Всегда так прописывал и работало. Прошу помощи.
Код:
//#include ‹stdlib.h›
#include ‹avr/interrupt.h›
//#include ‹util/delay.h›

unsigned char dat;


ISR(SIG_INTERRUPT0) // прерываниe INT0
{
	PORTC=PINC&0b11111110;
	TCNT1=65265+dat; // диапазон 65265..65500
	TIMSK|=(1‹‹TOIE1); // запуск счета TIMER1
	ADCSRA|=(1‹‹ADSC);	// пуск АЦП замера
}

ISR(TIMER1_OVF_vect)
{
	PORTC=PINC|0b00000001;
	TIMSK&=(0‹‹TOIE1); // конец счета
	
}

//Обработчик прерывания от АЦП
SIGNAL (SIG_ADC) 
{
	dat=ADCH;
	if (dat›235) dat=235;
}	


int main(void)
{  
	DDRC= 0b00000101;//
	PORTC=0b00000000;//

	MCUCR|=(1‹‹ISC01); //прерывание по спадающему фронту INT0 
	GICR|=(1‹‹INT0);  //разрешение прерываний INT0

	// инициализация таймера1
	TCCR1B|=(1‹‹CS12); // делитель 256
	TCNT1=0;

	// Настройка АЦП
	ADMUX= 0b01100001; //канал АЦП1, AVcc с конденсатором AREF, левое выравнивание бит
	ADCSRA=0b01001100;// откл АЦП, Кд=16 

	sei();

	while(1) {}                   
}
Прошу прощения, не сообщил.
atmega8- F_CPU = 7372800
Реклама:

Последний раз редактировалось mike-y-k; 22.03.2023 в 00:41. Причина: 6.6
Alexander_vrn вне форума  
Непрочитано 22.03.2023, 00:14  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 664
Сказал спасибо: 360
Сказали Спасибо 743 раз(а) в 353 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Не работает прерывание АЦП

1. Для запуска АЦП он (АЦП) должен быть как минимум разрешен ( установкой бита ADEN ) - проверьте по коду, что и когда заносится в регистр ADCSRA.
2. Примечание: АЦП может настраиваться на запуск преобразования по событию ("триггеру"), в том числе по External Interrupt Request 0.
3. Таки да, для ATmega8 пункт 2 неактуален.

UPD
АЦП запускается из обработчика прерывания INT0, а вызывается ли сам обработчик прерывания INT0? Чтобы исключить подобные потенциальные причины ( зависимости ), можно в качестве проверки однократно запустить преобразование АЦП в функции main() и убедиться, что прерывание АЦП вызывается ( добиться, чтобы вызывалось ).

P.S.
ИМХО лучше не смешивать макросы для определения обработчиков, а использовать что-то одно: или ISR(xxx_vect), или SIGNAL(SIG_xxx). Возможно, потребуется также объявить переменную dat как volatile.

Последний раз редактировалось j-Roger; 22.03.2023 в 01:26. Причина: Дополнение
j-Roger вне форума  
Непрочитано 22.03.2023, 08:07  
Alexander_vrn
Прохожий
 
Регистрация: 21.03.2023
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Alexander_vrn на пути к лучшему
По умолчанию Re: Не работает прерывание АЦП

INT0 работает.
dat как volatile назначал, не помогает.

Сообщение от j-Roger Посмотреть сообщение
ISR(xxx_vect), или SIGNAL(SIG_xxx)
прописывал и так и так
Alexander_vrn вне форума  
Непрочитано 22.03.2023, 09:13  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 664
Сказал спасибо: 360
Сказали Спасибо 743 раз(а) в 353 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Не работает прерывание АЦП

Сообщение от j-Roger Посмотреть сообщение
(АЦП) должен быть как минимум разрешен ( установкой бита ADEN ) - проверьте по коду, что и когда заносится в регистр ADCSRA.
Сообщение от Alexander_vrn Посмотреть сообщение
ADCSRA=0b01001100;// откл АЦП, Кд=16
ADCSRA=0b1xxxxxxx;

Оно?

PHP код:
...
// Инициализация АЦП
ADCSRA 0
    
| (1‹‹ ADEN// вкл. АЦП
    
| (0‹‹ ADSC// без запуска
    
| (0‹‹ ADFR// Free Running отключен
    
| (1‹‹ ADIF// сброс флага окончания преобразования
    
| (1‹‹ ADIE// разрешение прерывания
    
| (1‹‹ ADPS2)|(0‹‹ ADPS1)|(0‹‹ ADPS0// Кд=16
    


Последний раз редактировалось j-Roger; 22.03.2023 в 10:44.
j-Roger вне форума  
Непрочитано 22.03.2023, 22:53  
Alexander_vrn
Прохожий
 
Регистрация: 21.03.2023
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Alexander_vrn на пути к лучшему
По умолчанию

j-Roger
Оно. Спасибо, нашло какое-то затмение. Сколько раз прописывал АЦП, а в этот раз ни в какую.

Вообщем моя ошибка была в том, что в протеусе при симулировании на вывод микросхемы AVCC не подал питание.

Из-за этого что только не перепробовал, а схема работать не хотела.

Последний раз редактировалось mike-y-k; 22.03.2023 в 23:41. Причина: 6.6, 7.15
Alexander_vrn вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
АЦП алгоритм измерения напряжения сложной формы E_C_C Микроконтроллеры, АЦП, память и т.д 70 22.10.2016 23:07
Прерывание по совпадению таймера 1 gruffi AVR 38 21.10.2016 22:58
Прерывание в прерывании или как их правильно разложить? rusyvochka PIC 20 31.05.2015 23:21
Перепайка АЦП SC7001Q в цифровом мультиметре dimkis577 Песочница (вопросы новичков) 6 24.07.2013 21:39
AtMega АЦП impuls-v Микроконтроллеры, АЦП, память и т.д 19 20.06.2011 20:12


Часовой пояс GMT +4, время: 13:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot