AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

Привет с прошедшими ВАС праздниками и с началом рабочего года.
Нашел на просторах интернета библиотеку подключение кнопок подключил ее и программа выдает ошибку Build: 0 succeeded or up-to-date, 1 failed, 0 skipped что это такое и как с этим бороться помогите.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь

Сообщение prinv »

Это неизвестно что и как с этим бороться тоже неизвестно.
Никакая контра не уйдёт от нас
Контактная информация:
Реклама
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

да ответ ободряющий может это поможет прикладываю проект
Вложения
библиотека проба.zip
(8.62 КБ) 195 скачиваний
Вымогатель припоя
Аватара пользователя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь

Сообщение prinv »

Для начала уберите все русские буквы из названий файлов.
Никакая контра не уйдёт от нас
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Чт июл 11, 2013 12:37:39

Сообщение Vlad_RK »

Желательно, чтобы и в пути к файлам не было русских букв.
Реклама
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

спасибо за помощь откомпилировал (машинально написал )
Реклама
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

Привет всем форумчанам. Помогите разобраться с таймером 0 Attini 2313 не работает не входит в прерывания.

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

#define F_CPU 16000000UL // установка в программе частоты процессора
#include <avr/io.h>//библиотека для портов вводы вывода
#include <avr/interrupt.h>//библиотека прерываний
//-----------------------------------------
// обработка прерывания
//-----------------------------------------
// comp при совпадении
ISR (TIMER0_COMPA_vect)
{
		asm("nop");
		PORTB = 0b00000001;	
}
//ovf при переполнении
ISR (TIMER0_OVF_vect)
{
		asm("nop");
		PORTB = 0b00000010;
}
int main(void)
{
	DDRB = 0b11111111;  // Определение направления Порта В работает на выход
	PORTB = 0b11111100; // Подтягиваем резисторами не используемые биты
	//------------------------------------------
	//задаем режим работы таймера счетчика 0
	//------------------------------------------
	//
	// устанавливаем делитель 1024 (101)
	TCCR0B |= (1<<CS00);
	TCCR0B |= (1<<CS02);	
	TCCR0A |= (1<<WGM01); // WGM = 010 - режим CTC(сброс по совпадению)
	//разрешаем прерывание таймера т0 при событии совпадение
	//устанавливаем бит разрешения прерывания 0го счетчика
	// по совпадению с OCR0A
	TIMSK |= (1<<OCIE0A);//при совпадении (1 - OCIE0A) при переполнении (1 - TOIE0)
	//OCR0B = 150;// заносим в регистр число для сравнения
	OCR0A = 100;
	asm ("sei");		
    while(1)
    {
        asm("nop"); //установим паузу 
    }
}
Друг Кота
Аватара пользователя
Сообщения: 7083
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

а при переполнении чего не разрешил? он в совпадение заходит а порт и так в том состоянии, в которое его перевести надо, потому изменения и не видны

Добавлено after 1 minute 54 seconds:
при такой как у тебя записи регистр надо сначала обнулять иначе, если там чтото было - то результат будет непредсказуем
(это я про запись в TCCR0A, TCCR0B, TIMSK...)
разве студия не дает записать: TCCR0B = (1<<CS00|1<<CS02); или TCCR0B = (5<<CS00); :))
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

при такой как у тебя записи регистр надо сначала обнулять иначе, если там чтото было - то результат будет непредсказуем
(это я про запись в TCCR0A, TCCR0B, TIMSK...)
В даташите написано что эти биты изначально в нуле. (а как это сделать, а то я себе это плохо представляю)
разве студия не дает записать: TCCR0B = (1<<CS00|1<<CS02); или TCCR0B = (5<<CS00);
Не пробовал ну наверно может я только учусь и о компактности кода даже не задумываюсь.
Вымогатель припоя
Аватара пользователя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь

Сообщение prinv »

Как-то вы сзаду наперёд делаете. Запустили таймер, а потом начали его настраивать.
Никакая контра не уйдёт от нас
Контактная информация:
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

Вы имели в веду что код надо писать так

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

	TIMSK |= (1<<OCIE0A);//при совпадении (1 - OCIE0A) при переполнении (1 - TOIE0)
	TCCR0A |= (1<<WGM01); // WGM = 010 - режим CTC(сброс по совпадению)
	TCCR0B |= (1<<CS00);
	TCCR0B |= (1<<CS02);
но этот код тоже не работает
Вымогатель припоя
Аватара пользователя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь

Сообщение prinv »

Не работает - не появляются единички в младших битах PORTB?
Никакая контра не уйдёт от нас
Контактная информация:
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

Я когда запускаю отладчик по шагам я не вижу как таймер считает, а 1ца в порте В появляется как то не понятно.
TCNT0 доходит до 78 и сет останавливается.
Последний раз редактировалось bango Пн янв 14, 2019 10:48:57, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь

Сообщение prinv »

Попробуйте breakpoint в обработчике прерывания поставить
Никакая контра не уйдёт от нас
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7083
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3548528#p3548528"]а при переполнении чего не разрешил? он в совпадение заходит а порт и так в том состоянии, в которое его перевести надо, потому изменения и не видны[/uquote]
попробуй: TIMSK = (1<<OCIE0A|1<<TOIE0);
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

не получается вот проект для наглядности с протеусом
Вложения
timer0 proba2.zip
(36.5 КБ) 320 скачиваний
akl
Друг Кота
Сообщения: 4473
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

В режиме CTC прерывание переполнения с таким значением OCR0A=100 никогда не вызовется. Попробуйте
asm("nop");
; PORTB = 0b00000001;
PINB = 0b00000011;
Друг Кота
Аватара пользователя
Сообщения: 7083
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

ещё: у тебя режим по совпадению, попробуй для начала в обычном режиме...

Добавлено after 2 minutes 2 seconds:
а с каким вызовется? :)
правильно, если нужны 2 прерывания, в режиме СТС то задействуй прерывание Б. (т.к. А у этого МК связан с переполнением)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Открыл глаза
Сообщения: 52
Зарегистрирован: Вт май 05, 2009 17:32:50

Сообщение bango »

подскажите как выставить микросхему AT90S2313_10PI в AVR studio 6 при создании проекта в списке микросхем такой микросхемы нет, как с этим бороться.
Собутыльник Кота
Аватара пользователя
Сообщения: 2564
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Сообщение serg_svd »

Наивный и глупый вопрос по интерфейсу программы от меня.
Можно ли как-то сворачивать записи циклов, условных переходов? Функции то можно свернуть, нажав слева на значок минуса. А то иногда целая куча фигурных скобок сбивает с толку. Если не ошибаюсь, в кодевижене была такая фишка. А тут не могу в настройках найти.
Просто бывают очень длинные записи внутри циклов. Бить на подпрограммы смысла нет. А хочется как-то упростить чтение кода, пропуская уже отлаженные куски внутри программы
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Ответить

Вернуться в «AVR»