У тебя это где? И потом, я в кн смотрел, и настроил все как надо, а написано там так:
#include <avr/signal.h>
INTERRUPT(прерывание)
{
//Пользовательский код
}
где перерывание -- идентификатор, передающийся в в качестве параметров макросу INTERRUPT, ну типа SIG_ADC, SIG_COMPARATOR. А в моем случае походу SIG_OUTPUT_COMPARE0
А все регистры по настройке СV настроил аналогично тому что я описал выше. Вот така тут беда
_________________ А кота своего я назвал квадратом...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Работает такой вариант. Но странно, когда я обявил еще так:
ISR(SIG_OUTPUT_COMPARE0)
{
PORTA = 80;
}
то ничего не происходило, а ведь в iom162.h обявлено так:
/* Timer/Counter0 Compare Match */
#define TIMER0_COMP_vect _VECTOR(16)
#define SIG_OUTPUT_COMPARE0 _VECTOR(16)
Это ж одно и тоже, только функция ISR. Почемуже новая версия неподдерживает измененные функции предиидущей
Гон немного играешся пол дня пока до тебя донесут, что так уже незаписываеться....
И такой малюсенький вопросик: Что за предупреждение такое при компиляции "5.c:26:2: warning: no newline at end of file"?, кручу мучу убрать его немогу
_________________ А кота своего я назвал квадратом...
Опять попал на гиморой, кокогото..... глобально обьявленая переменная N нехочеть работать. Експерементальный код такой:
#include <avr/io.h>
#include <avr/interrupt.h>
int N=0;
ISR(TIMER0_COMP_vect)
{
N=TCNT1;
TCNT0=0;
N=0;
}
int main(void)
{
DDRA=0xFF;
PORTA=0xFF;
TCCR0=0x01;//Set timer0
OCR0=0x5F;
TIMSK=0x01;
sei();
while(1)
{
asm volatile ("nop");
volatile N=N+1;
asm volatile ("nop");
asm volatile ("nop");
}
}
Она гадина в цикле ни с нуля считает (просматривал в AVR4). Да и в прерывании, ей почемуто ничего неприсваиваеться. И при компиляции выскакивают такие сообщения:
5.c:25: warning: type defaults to 'int' in declaration of 'N'
Тоесть компилятор незнает что N имеет тип integer, хотя обявлено вроде нормально.
Что бы это могло быть????? Может я уже нетак ее обьявляю??? И еще вопросик: неимел ли кто-то дело с функцией dtostrf, которая определена в файле stdlib.h, а тоникак заставить ее работать немогу
_________________ А кота своего я назвал квадратом...
При обработке перерывания регист состояния SREG запрещает все перерывания, когда выходит из подпрограммы обработки перерывания, то автоматически разрешаються глобальные перерывания. Регистр SREG по известным данным не где не сохраняеться. Вопрос: Можно ли в подпрограме обработки перерывания запретить общие перерывания, когда произрйдет выход из подпрограмы? Что бы когда вышел, а общие прерывания запрещены???
_________________ А кота своего я назвал квадратом...
Это называется функция в Си. Запретить бессмысленно так как компилятор сам ставит инструкцию RETI по завершению функции.
Вот если функцию не выполнять до конца а выскочить из нее безусловным переходом типа GOTO МЕТКА - тогда бы RETI не выполнилось. но по-моему CVAVR не позволяет покинуть функцию по GOTO.
Но ведь можно наверно в функции вставить АСМ вставку для перехода на какое то место программы ? Може получится вот так хитро выскочить из функции не доделав ее.
В асме есть две команды ret и reti. Превая выход без разрешения общих перерываний другая с. Вообщем. Записал так
asm("ret");
и все. Но опять прикол с этим WinAVR, прыгает оно вообще на середину функции, которая стоит еще перед главной
_________________ А кота своего я назвал квадратом...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения