AVR studio в вопросах и ответах
Re: AVR studio в вопросах и ответах
Желательно, чтобы и в пути к файлам не было русских букв.
Re: AVR studio в вопросах и ответах
спасибо за помощь откомпилировал (машинально написал )
Re: AVR studio в вопросах и ответах
Привет всем форумчанам. Помогите разобраться с таймером 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"); //установим паузу
}
}- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: AVR studio в вопросах и ответах
а при переполнении чего не разрешил? он в совпадение заходит а порт и так в том состоянии, в которое его перевести надо, потому изменения и не видны
Добавлено after 1 minute 54 seconds:
при такой как у тебя записи регистр надо сначала обнулять иначе, если там чтото было - то результат будет непредсказуем
(это я про запись в TCCR0A, TCCR0B, TIMSK...)
разве студия не дает записать: TCCR0B = (1<<CS00|1<<CS02); или TCCR0B = (5<<CS00);
Добавлено after 1 minute 54 seconds:
при такой как у тебя записи регистр надо сначала обнулять иначе, если там чтото было - то результат будет непредсказуем
(это я про запись в TCCR0A, TCCR0B, TIMSK...)
разве студия не дает записать: TCCR0B = (1<<CS00|1<<CS02); или TCCR0B = (5<<CS00);
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: AVR studio в вопросах и ответах
В даташите написано что эти биты изначально в нуле. (а как это сделать, а то я себе это плохо представляю)при такой как у тебя записи регистр надо сначала обнулять иначе, если там чтото было - то результат будет непредсказуем
(это я про запись в TCCR0A, TCCR0B, TIMSK...)
Не пробовал ну наверно может я только учусь и о компактности кода даже не задумываюсь.разве студия не дает записать: TCCR0B = (1<<CS00|1<<CS02); или TCCR0B = (5<<CS00);
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: AVR studio в вопросах и ответах
Как-то вы сзаду наперёд делаете. Запустили таймер, а потом начали его настраивать.
Никакая контра не уйдёт от нас
Re: AVR studio в вопросах и ответах
Вы имели в веду что код надо писать так
но этот код тоже не работает
Код: Выделить всё
TIMSK |= (1<<OCIE0A);//при совпадении (1 - OCIE0A) при переполнении (1 - TOIE0)
TCCR0A |= (1<<WGM01); // WGM = 010 - режим CTC(сброс по совпадению)
TCCR0B |= (1<<CS00);
TCCR0B |= (1<<CS02);- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: AVR studio в вопросах и ответах
Не работает - не появляются единички в младших битах PORTB?
Никакая контра не уйдёт от нас
Re: AVR studio в вопросах и ответах
Я когда запускаю отладчик по шагам я не вижу как таймер считает, а 1ца в порте В появляется как то не понятно.
TCNT0 доходит до 78 и сет останавливается.
TCNT0 доходит до 78 и сет останавливается.
Последний раз редактировалось bango Пн янв 14, 2019 10:48:57, всего редактировалось 1 раз.
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: AVR studio в вопросах и ответах
Попробуйте breakpoint в обработчике прерывания поставить
Никакая контра не уйдёт от нас
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: AVR studio в вопросах и ответах
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3548528#p3548528"]а при переполнении чего не разрешил? он в совпадение заходит а порт и так в том состоянии, в которое его перевести надо, потому изменения и не видны[/uquote]
попробуй: TIMSK = (1<<OCIE0A|1<<TOIE0);
попробуй: TIMSK = (1<<OCIE0A|1<<TOIE0);
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: AVR studio в вопросах и ответах
не получается вот проект для наглядности с протеусом
- Вложения
-
- timer0 proba2.zip
- (36.5 КБ) 298 скачиваний
Re: AVR studio в вопросах и ответах
В режиме CTC прерывание переполнения с таким значением OCR0A=100 никогда не вызовется. Попробуйте
asm("nop");
; PORTB = 0b00000001;
PINB = 0b00000011;
asm("nop");
; PORTB = 0b00000001;
PINB = 0b00000011;
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: AVR studio в вопросах и ответах
ещё: у тебя режим по совпадению, попробуй для начала в обычном режиме...
Добавлено after 2 minutes 2 seconds:
а с каким вызовется?
правильно, если нужны 2 прерывания, в режиме СТС то задействуй прерывание Б. (т.к. А у этого МК связан с переполнением)
Добавлено after 2 minutes 2 seconds:
а с каким вызовется?
правильно, если нужны 2 прерывания, в режиме СТС то задействуй прерывание Б. (т.к. А у этого МК связан с переполнением)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: AVR studio в вопросах и ответах
подскажите как выставить микросхему AT90S2313_10PI в AVR studio 6 при создании проекта в списке микросхем такой микросхемы нет, как с этим бороться.
Re: AVR studio в вопросах и ответах
Наивный и глупый вопрос по интерфейсу программы от меня.
Можно ли как-то сворачивать записи циклов, условных переходов? Функции то можно свернуть, нажав слева на значок минуса. А то иногда целая куча фигурных скобок сбивает с толку. Если не ошибаюсь, в кодевижене была такая фишка. А тут не могу в настройках найти.
Просто бывают очень длинные записи внутри циклов. Бить на подпрограммы смысла нет. А хочется как-то упростить чтение кода, пропуская уже отлаженные куски внутри программы
Можно ли как-то сворачивать записи циклов, условных переходов? Функции то можно свернуть, нажав слева на значок минуса. А то иногда целая куча фигурных скобок сбивает с толку. Если не ошибаюсь, в кодевижене была такая фишка. А тут не могу в настройках найти.
Просто бывают очень длинные записи внутри циклов. Бить на подпрограммы смысла нет. А хочется как-то упростить чтение кода, пропуская уже отлаженные куски внутри программы
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: AVR studio в вопросах и ответах
Atmel Studio 6.0. Игнорирует участки с кодом. Как заставить компилятор выполнять все участки? Кроме случая с отключением оптимизации.
Пример кода:
{
flag.bit.b31 = 0;
//---------------------------------------------
// delay(1);
flag_fl.bit.b2 = 1; // timer sys 10 mS
while (flag_fl.bit.b2)
{ ; }
//---------------------------------------------
flag_stopped.bit.bf6 = 0;
TCNT0 = OCR0A_const-1;
while(1)
{ ; } // Задача выполнена
}
В коде показана задержка, реализованная при помощи аппаратных прерываний по таймеру, по которому указанный в while флаг сбрасывается. Так вот компилятор творит хз. Пример дизассемблерного кода:
LDS R24,0x0159 Load direct from data space
ANDI R24,0xBF Logical AND with immediate
STS 0x0159,R24 Store direct to data space
flag_fl.bit.b2 = 1; // timer sys 10 mS
LDS R24,0x0174 Load direct from data space
ORI R24,0x04 Logical OR with immediate
STS 0x0174,R24 Store direct to data space
RJMP PC-0x0000 Relative jump
Подскажите, что мне можно сделать. Код пока тестовый, но мне нужно, чтобы строка flag_stopped.bit.bf6 = 0; обязательно выполнялась. Спасибо.
Пример кода:
Спойлер
void Task6(void){
flag.bit.b31 = 0;
//---------------------------------------------
// delay(1);
flag_fl.bit.b2 = 1; // timer sys 10 mS
while (flag_fl.bit.b2)
{ ; }
//---------------------------------------------
flag_stopped.bit.bf6 = 0;
TCNT0 = OCR0A_const-1;
while(1)
{ ; } // Задача выполнена
}
Спойлер
flag.bit.b31 = 0;LDS R24,0x0159 Load direct from data space
ANDI R24,0xBF Logical AND with immediate
STS 0x0159,R24 Store direct to data space
flag_fl.bit.b2 = 1; // timer sys 10 mS
LDS R24,0x0174 Load direct from data space
ORI R24,0x04 Logical OR with immediate
STS 0x0174,R24 Store direct to data space
RJMP PC-0x0000 Relative jump
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
вангую, у вас flag_fl.bit.b2 не объявлена volatile, но присвоена единичке. в итоге компилятор уверен, что эта единичка - вечная, и стопорит программу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: AVR studio в вопросах и ответах
[uquote="dr.doc",url="/forum/viewtopic.php?p=3609230#p3609230"]Atmel Studio 6.0. Игнорирует участки с кодом.[/uquote]
Попробуйте AVR Studio 5.1 с этим же кодом, 6-я и у меня неправильно работает. Как и 7-я.
Попробуйте AVR Studio 5.1 с этим же кодом, 6-я и у меня неправильно работает. Как и 7-я.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
[uquote="Vlad_RK",url="/forum/viewtopic.php?p=3609287#p3609287"]Попробуйте AVR Studio 5.1 с этим же кодом, 6-я и у меня неправильно работает. Как и 7-я.[/uquote]лучше попробуйте повысить свои знания в Си - уверен, студия станет работать намного правильнее 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!