Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

Эта тяга к прекрасному быстро заканчивается когда требуется готовая либа для работы с ЛСД или чем то подобным коих на етих языках весьма мало и грустно :)

В точку!А когда приспичит собрать первые часы,или термометр,вот тут баскомовские библиотеки очень кстати будут.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 8,9т
  • Создана
  • Последний ответ

Топ авторов темы

А вот Баском зараза водил меня за нос,а я доверял ему как толковой проге :bomb: Оказалось,что он тасует мне неверные нерабочие HEX файлы

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

Кстати,мой USBASP,правда самодельный, не видит МК,если МК тактируется от внутреннего генератора в 1мгц. Тини13 с завода по умолчанию имеет именно 1мгц.

Лечилось так:захожу в баскоме в настройки программатора,меняю тактовую частоту программатора с авто на 50гц,запитываю МК от USBASP,считываю МК и меняю фьюзы МК на что-нибудь больше 1мгц.Если МК рабочий(у меня несколько тини13 с алиэкспресс оказались полностью дохлыми),то все дышит.

На вашем скрине программы используется директива $PROG.Если вы прошиваете фьюзы из меню "Загрузка в МК" F4,то этой директивой обычно не пользуются. Также в программе указана тактовая частота 9,6 мгц,а фьюз деление на 8 (divide clock by 8 ) не отключен,значит программа будет работать на частоте 1,2 мгц. Если вы хотите "считать" состояния порта,то используем PIN,если нет, то можно использовать PORT.

$regfile = "attiny13a.dat"

$Crystal=9600000

$hwstack=12

$swstack=12

$framesize=20

Config PORTB.4=Output

Do

set PORTB.4

Wait 1

reset PORTB.4

Wait 2

Loop

End

Я делал примерно так. Программа простая,как автомат Калашникова,работает также))

Ссылка на комментарий
Поделиться на другие сайты

Эта тяга к прекрасному быстро заканчивается когда требуется готовая либа для работы с ЛСД или чем то подобным

Для употребления таких веществ уже библиотека нужна?

Хватит путать ЛСД (LSD) и ЖК(LCD)

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Есть у меня вопрос по правке прошивки одного интересного девайса. Опыта в этом деле почти нет, по этому прошу отнестись с пониманием к возможным ошибкам в описании задачи.

Собрал термостат для котла отопления из дружественного форума. Суть работы довольно проста - управление моностабильным или бистабильным реле для включения/отключения котла.

Вот часть кода которая отвечает за управление реле

//==============================================================
// Управление реле
//==============================================================
#ifdef BISTABLE_RELAY
/* Бистабильное реле */
void relay (char s)
{
#asm ("cli") /* ATOMIC */
if (s)
{ /* SET */
 PORTC |= 0x10;
delay_ms(50);
PORTC &= ~0x10;
}
else
{ /* RESET */
 PORTC |= 0x20;
delay_ms(50);
PORTC &= ~0x20;
};
#asm ("sei") /* END ATOMIC */
}
#else
/* Моностабильное реле */
void relay (char s)
{
#asm ("cli") /* ATOMIC */
if (s)
{
 PORTC |= 0x10;
}
else
{
PORTC &= ~0x10;
};
#asm ("cli") /* END ATOMIC */
}
#endif

Для бистабильного реле подается управляющий импульс включения на 50мсек на одну ногу мк

или управляющий импульс выключения на другую ногу

Для моностабильного реле включаем или отключаем сигнал на одной и той же ноге мк.

Играя с устройством я попробывал увеличить длительность импульса до 1 - 5 сек и заметил что у меня на самом деле получилось подобие некого цикла. Тоесть должно же быть так:

температура в комнате ниже измеренной = подаем одиночную команду включения (устанавливаем управляющий выход мк в лог 1 на 50мсек), после чего снимаем управляющий сигнал и ждем пока температура не вырастет

После того как температура вырастет от желаемой на 0.2 град подаем такой же сигнал отключения реле на другую ногу мк и снова ждем.

Я же получаю постоянную серию управляющих импульсов (как бы цикл). Тоесть если измеренная температура ниже желаемой у меня будут постоянные управляющие сигналы с некой скважностью пока температура не достигнет желаемой + гистерезис. И далее та же картина но уже с сигналом отключения реле.

Если использовать вариант с моностабильным реле, то тут все работает нормально.

Я бы хотел понять почему не работает как нужно режим с бистабильным реле.

А также например сделать так чтобы для включения реле мк подавал одиночный импульс скажем на секунду и для отключения этот же сигнал подавался снова, такой же длительности на ту же ногу мк. Исполнительное устройство не проблема подкорректировать а вот прошивку изменить для меня сложновато.

Автор этого проекта выложил исходники. Выкладываю их тут и буду рад если кто найдет время объяснить и помочь в моем вопросе.

Может достаточно просто изменить синтаксис, но я в этом не спец

main.txt

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

У вас происходит постоянный вызов функции relay из программы. В случае моностабильного реле вы его просто не видите, так как состояние порта С при таком вызове не изменяется. А в случае бистабильного импульс виден. Собственно ничего страшного в этом нет, если на бистабильное реле будут постоянно идти импульсы. Если хотите от этого избавиться, то нужно перелопачивать весь код и искать, каким образом избавиться от ненужных вызовов функции. На мой взгляд это лишнее.

А также например сделать так чтобы для включения реле мк подавал одиночный импульс скажем на секунду и для отключения этот же сигнал подавался снова, такой же длительности на ту же ногу мк. Исполнительное устройство не проблема подкорректировать а вот прошивку изменить для меня сложновато.

А какой в этом смысл? Вы рискуете в этом случае потерять синхронизацию. Контроллер ведь не знает, в каком положении находится ваше реле и после первого же сбоя в схеме будет тупо гнать импульс за импульсом не подозревая, что реле работает уже в противоположной фазе, т.е. включается, когда надо отключиться и наоборот.

Изменено пользователем Sergey-Ufa
Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Прикрепленные файлы:

main.txt 43,35 Кб

И что это за код ? Как он относится к тому, который Вы нам показали в посте ?

Где в нём включение реле, сравнение с температурой, .... ?

Ну а вообще, Вы просто хотите иметь триггер, запоминающий состояние. Ну так и напишите его :)

Ссылка на комментарий
Поделиться на другие сайты

Вот часть кода которая отвечает за управление реле/////

Для бистабильного реле подается управляющий импульс включения на 50мсек на одну ногу мк

или управляющий импульс выключения на другую ногу

этот код ничего общего с управлением би_реле не имеет... это в лучшем случае третья часть необходимого кода... и постоянное отключение прерывания на 50мсек при каждом вызове функции наводит на мысль, а на вообще тогда прерывание....
Ссылка на комментарий
Поделиться на другие сайты

У вас происходит постоянный вызов функции relay из программы.

Вы рискуете в этом случае потерять синхронизацию.

Очень хорошее замечание. В таком случае я бы хотел реализировать аналогию с бистабильным реле но в идеале по такому алгоритму:

Если температура ниже желаемой = выдавать импульсы включения бистабильного реле по такому вот принципу - первый импульс дительностью 1сек, далее пауза скажем в пол часа далее снова импульс в 0.5 сек, пауза в пол часа, импульс 0.5сек и т.д. пока температура не привысит желаемую + гистерезис.

Ипмульсы отключения реле по такому же алгоритму.

Термостат этот у меня работает в безпроводном режиме, применен приемник и передатчик на 433МГц

Так вот все это нужно для уменьшения потребления тока передающей части и улучшения стабильности работы в случае кратковременного либо длительного отключения приемной части.

И что это за код ?

В посте только часть кода, в прикрепленном файле исходник.

Я бы с радостью написал все что угодно, но в моем посте я четко описал суть ситуации и мои познания в этом деле.

Там (в аттаче)

1. читайте пожалуйста мой пост полностью особенно о том что я очень далек от программирования, хотя с помощью гугла удалось добавить подсветку в эту прошивку.

2. я вижу что часть кода которую я привел в посте и возможно в аттаче действительно на мой взгяд "чайника" не для AVR, но также вижу что он закомменчен и никак не влияет на работу прошивки.

3. Я блогодарен всем откликнувшимся. Но друзья! Есть задача, нужен совет либо конкретная помощь, какую вот например предоставил - Sergey-Ufa

Изменено пользователем vova_ua
Ссылка на комментарий
Поделиться на другие сайты

В посте только часть кода, в прикрепленном файле исходник.

А Вы сами качали и смотрели то, что прикрепили ? В прикреплённом файле не то что исходник, кусок из которого Вы выложили, там вообще нет ничего общего с тем, что Вы описываете.

Где код, в котором идёт сравнение с уставкой, решение включать или выключать реле, и т.д... ? Там какая то куча условий с каким то портами, задержки, всё запутанно и в кучу свалено...

Вы только твердите, что далеки от программирования и что Вас не слушают. Только Вы сами не слышите. Вам говорят, что выложенного Вами - мало. Решать Вашу проблему нужно не в Вашей функции relay, а там, где решается включать его или отключать.

Как можно дать совет, не видя ситуации ? Мы не экстрасенсы...

Далее, Вы просите советов. Чем Вам вот эта фраза:

Ну а вообще, Вы просто хотите иметь триггер, запоминающий состояние. Ну так и напишите его
не совет ?

На сколько я понял, Вы просто его проигнорировали. Вопрос вот только почему ? Неужели Вы на столько компетентны в этом, чтобы могли отсеивать правильные/неправильные советы ?

Если бы Вы его не игнорировали, то у Вас по-любому появились бы вопросы по нему.

А совет, между прочим, в отличии от тех, которые Вы посчитали "правильными", был в тему. Но Вы же у нас понимаете в советах, куда нам там...

Всего наилучшего :bye:

Ссылка на комментарий
Поделиться на другие сайты

только что скачал исходник который прикрепил выше.

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

//==============================================================
// Управление реле
//==============================================================
#ifdef BISTABLE_RELAY
/* Бистабильное реле */
void relay (char s)
{
#asm ("cli") /* ATOMIC */
   if (s)
   { /* SET */
    PORTC |= 0x10;
 delay_ms(50);
 PORTC &= ~0x10;
   }
   else
   { /* RESET */
 PORTC |= 0x20;
 delay_ms(50);
 PORTC &= ~0x20;
   };
#asm ("sei") /* END ATOMIC */
}
#else
/* Моностабильное реле */
void relay (char s)
{
#asm ("cli") /* ATOMIC */
   if (s)
   {
    PORTC |= 0x10;
   }
   else
   {
 PORTC &= ~0x10;
   };
#asm ("cli") /* END ATOMIC */
}
#endif

//==============================================================
// Сравнение температур и выдача команды
//==============================================================
void compare (void)
{
if ((temp2-hyst)>=temp) // Желаемая тем-ра больше измеренной - вкл. реле
{
 relay(1);
   }
   else if (temp>=(temp2+hyst)) // Желаемая тем-ра меньше измеренной - откл. реле
   {
 relay(0);
   };
}

Я не игнорирую советы, которые дали форумчане. Просто некоторые из них не могут быть актуальными так как не соответствуют тому что я описал в задаче.

Я упомянул что в программировании я не разбираюсь - Вы же советуете написать триггер.

Я упомянул иной алгоритм который мне был бы полезен - Вы не обратили на него никакого внимания.

Сравните совет который дал Sergey-Ufa и иные советы и увидите что иные советы куда менее информативны и конкретны.

В идеале я бы конечно хотел чтобы знающий человек просмотрел на досуге код и указал как бы мне решить мою ситуацию. Я не ставлю для себя задачу освоить программирование, так как для этого уже немного поздновато. Я нуждаюсь в помощи с этой задачей что и описал выше

и что самое главное я действительно благодарен всем откликнувшимся не зависимо от советов

Ссылка на комментарий
Поделиться на другие сайты

Просто некоторые из них не могут быть актуальными так как не соответствуют тому что я описал в задаче
Вот, что Вы написали :
Я же получаю постоянную серию управляющих импульсов (как бы цикл). Тоесть если измеренная температура ниже желаемой у меня будут постоянные управляющие сигналы с некой скважностью пока температура не достигнет желаемой + гистерезис. И далее та же картина но уже с сигналом отключения реле.

Я Вам дал совет с запоминанием состояния. Что не так ? Каким образом он не соответствует написанному Вами ? Поясните...

Сравните совет который дал Sergey-Ufa и иные советы и увидите что иные советы куда менее информативны и конкретны
Какой более информативен ? Что у Вас происходит постоянный вызов функции relay ? Т.е. Вы этого в своей же собственной программе не видите ?

Или что Вы рискуете рассинхронизировать программу с реле ? Дак это и ежу понятно. Если для Вас это не логично, тогда не в ту степь Вы полезли.

Вы просто не поняли сути его поста. Вот его ответ на Ваш вопрос :

. Если хотите от этого избавиться, то нужно перелопачивать весь код и искать, каким образом избавиться от ненужных вызовов функции
А Вы увидели очевидные для Вас вещи (ну или то, что хотели услышать), а остальное - мимо ушей.

А теперь Вы возьмите и сравните советы и ответы, может всё таки чего и уловите, соответствующего Вашим "запросам"...

ЗЫ: Ничего против поста Sergey-Ufa не имею, он всё верно написал. Просто некоторые не умеют читать и вникать в суть написанного.

Ссылка на комментарий
Поделиться на другие сайты

Что не так ? Каким образом он не соответствует написанному Вами ? Поясните...

Я упомянул что в программировании я не разбираюсь - Вы же советуете написать триггер.

Согласитесь же - Вы ведь тоже пропускаете многое из написанного мной мимо ушей ;)

Но ведь я никого и никак не хочу задеть или обидеть, у меня совсем иная задача. Тем не менее если я задел Вас, прошу простить :)

Давайте попробую максимально конкретизировать вопрос!

Я бы хотел найти баг в коде который есть причиной постоянного вызова функции (relay) и исправить его

Если Вы например имеете свободное время и желание помочь и можете просмотреть код и помочь в этом вопросе - буду благодарен. Если же нет, то возможно не стоит тратить время на мой вопрос ;)

Ссылка на комментарий
Поделиться на другие сайты

Я упомянул что в программировании я не разбираюсь - Вы же советуете написать триггер.
Опять двадцать пять. Причём тут то, что Вы не разбираетесь в программировании ? Я вам дал совет. Если бы Вы его не проигнорировали и хотели бы им воспользоваться, но не понимали бы как, Вы бы задали наводящие вопросы. Но от Вас только и было слышно, что все советы - говно и не удовлетворяют Вашим требованиям.

Меня лично Вы ничем не обидели и не задели. Принимать советы или нет - дело Ваше.

Я бы хотел найти баг в коде который есть причиной постоянного вызова функции (relay) и исправить его
С трудом представляю ситуацию, в которой Вы не понимаете как сделать запоминание текущего состояния реле и по этому состоянию решать о включении/отключении реле.

Заводим переменную, после каждого изменения состояния реле пишем в неё значение этого состояния, и перед каждым вкл/откл реле проверяем эту переменную (предыдущее состояние). Если оно изменилось - выполняем действие, не изменилось - ничего не делаем.

Вот и вся магия... :)

Ссылка на комментарий
Поделиться на другие сайты

1. я не говорил что советы говно ;)

2. мне не нужен триггер. Вопрос - найти баг в коде который есть причиной постоянного вызова функции (relay) и исправить его

Так как желаемый алгоритм управления я также описал выше. Но с этим я сам разберусь после того как не без посторонней помощи исправлю баг с вызовом функции.

3. магия... Очень тонко подметили. Для Вас возможно это как азбука, для меня - магия ;)

Ссылка на комментарий
Поделиться на другие сайты

Не знаю что такое s и с чем оно сравнивается. По этому как получится.

Если, не понятная мне s имеет значение нужное значения для включения нагрева или чего там и не примет противоположное значение пока не выполнится условие, тогда как-то так.

bool position=false;
void relay (char s)
{
#asm ("cli") /* ATOMIC */
 if( s)
 { /* SET */
if(position==false)
{
		 PORTC |= 0x10;
delay_ms(50);
PORTC &= ~0x10;
position=true;
};
 }
 else
 { /* RESET */
if(position==true)
{
	 PORTC |= 0x20;
delay_ms(50);
PORTC &= ~0x20;
position=false;
}
 };

Вопрос одноразового исполнения кода - это отключение питания. Или отключение бесконечного цикла. Но как и в первом так и вовтором случае измерений не будет.

Изменено пользователем Rhime

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Ссылка на комментарий
Поделиться на другие сайты

найти баг в коде который есть причиной постоянного вызова функции (relay)
мне не нужен триггер
У Вас противоречия :)

Вам, как раз, и нужен триггер :)

И найти Вам нужен не баг (его просто нет), а дополнить программу. Я написал каким образом дополнить. Не хотите слушать - дело Ваше.

Ссылка на комментарий
Поделиться на другие сайты

мне не нужен триггер. Вопрос - найти баг в коде который есть причиной постоянного вызова функции (relay) и исправить его

Постоянный вызов функции relay это не баг. Он вероятно заложен в программу специально, чтобы состояние реле точно соответствовало требованию контроллера. Вызов relay встроен через compare() вот отсюда:

// Прерывание от DS1307 ежесекундно
interrupt [EXT_INT1] void ext_int1_isr(void)
          { ..................................................
            compare(); // Сравнение температур
          }

Можно изменить функцию compare так, чтобы она вызывала relay только тогда, когда контроллер изменяет состояние реле или каждые полчаса согласно вашим требованиям. Но при этом может пострадать надежность работы регулятора, так как контроллер будет исправлять возможную ошибку работы реле не каждую секунду, а лишь через полчаса. Код может выглядеть так:

// Сравнение температур и выдача команды
//==============================================================
void compare (void)
        {static char RelayStatus;
         static int Time;
         Time++;
          if ((temp2-hyst)>=temp) // Желаемая тем-ра больше измеренной - вкл. реле
            {if((RelayStatus==0)||(Time>1800))
                {relay(1);
                 Time=0;
                 RelayStatus=1;
               };
            }
         else
            {if (temp>=(temp2+hyst)) // Желаемая тем-ра меньше измеренной - откл. реле
               {if((RelayStatus==1)||(Time>1800))
                   {relay(0);
                    Time=0;
                    RelayStatus=0;
                   };
                };
            };
}

Если я правильно понял Alex'а, RelayStatus исполняет роль того триггера, о котором он писал. Сразу говорю, что этот код не компилировался и досконально не проверялся и может служить лишь как подсказка, в каком направлении можно двигаться.

Изменено пользователем Sergey-Ufa
Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте всем.У меня тут новая заморочка.Решил все-таки разобраться,что же произошло с Баскомом.Ведь раньше все работало,а потом как кто подменил.

Программатор USBASP,в меню программы он есть,она его поддерживает.Скорости для него выбраны в том же окошке 32 Кгц.При попытке программирования диодик на программаторе мигает,в микруху вроде все пишется,даже последующая сверка выдает,что все Ок,а прога не работает... Программирую используя Sinaprog 2.1.1.

Программатор простой и удобный.Хексовские файлы откомпилированной Баскомом проги шьет,но и они не работают.... :unknw:

Проргамма в Баскоме.Отмечено какие использовал кнопки

dZlO.th.jpg

Это что выдал компилятор

Vhfyp.th.jpg

И,наконец,та же прога в микропаскале.Хекс код работает на ура.

Qbjy.th.jpg

В чем дело? Может кто подскажет? Почему хексовские файлы баскома неработоспособны? Может где-то настройки барахлят? Баксом переустанавливал уже раза 4 и все попусту.Но ведь раньше работало! Он,правда,крякнутый,но раньше проблем не было.

Прошу прощения.Тут забарахлил старый фотохостинг,а с новым еще не освоился и получился конфуз.Исправляюсь...

8T71.jpg

JbW1v.jpg

Blz3b.jpg

Ссылка на комментарий
Поделиться на другие сайты

Доброго всем времени суток. Проблему с кодом решить не могу ,дело вот в чем, значение "n" должно прибавляться при достижении "hag"=360, который в свою очередь работает от таймера, а оно(значение n) считает только до 7 и почему то сбрасывается сам собой, вопрос: почему?

#include <avr/io.h>
#include <avr/interrupt.h>
int d=0;
int n=0;
volatile unsigned int hag = 0;
unsigned char cw_dir[]=
{
(0b00000001),// 0-45 // 0
(0b00000101),// 45-90 // 1
(0b00000100),// 90-135 // 2
(0b00000110),// 135-180 // 3
(0b00000010),// 180-225 // 4
(0b00001010),// 225-270 // 5
(0b00001000),// 270-315 // 6
(0b00001001) // 315-360 // 7
};// по часовой
ISR(TIMER0_OVF_vect)//OVF " срабатывает при переполнении" для оборотов
{
hag++;
if (hag>=360)
{
n++;
hag=0;
}
}
int main(void)
{
DDRB = 0b00111111; // PB0, PB1, PB2, PB3... - выходы
DDRD = 0b11111111; // инициализация D
ADMUX |=(1<<REFS0) // источн напряж.AVcc
	 |(0<<MUX3); // вход PORTC.0

GICR |= (1 << INT1)
 |(1 << INT0); // Разрешаем внешние прерывания
MCUCR|= (1 << ISC01); // Прерывание по заднему фронту INT0

TCCR0=0b00000011;// запуск таймера и предделитель на 64
TIMSK|=(1<<0);//прерывание в вектор при переполнении
sei();//глобально разрешаем прерывания
TCNT0=0b00000000;//запуск счетчика 0 с нуля
while(1)
{
//Hag();
vivod();
}
}
vivod()
{
PORTD=n;
}

объясните пожалуйста что не так. Заранее спасибо!

Изменено пользователем KRISS
Ссылка на комментарий
Поделиться на другие сайты

К сожалению не помогает, ни volatile ни static, пробовал менять тип данных, результата никакого. Это может быть связано с портом вывода??

у ПИКов может. у АВиРов не знаю,

а если значение в порт выводить в прерывании по условию? что-то меняется

Ссылка на комментарий
Поделиться на другие сайты

Вы имеете в виду так?

ISR(TIMER0_OVF_vect)//OVF  " срабатывает при переполнении" для оборотов
{
hag++;
if (hag>=360)
{
 n++;
 hag=0;
}
PORTD=n;
}

Если идти таким способом то но считает все равно до 7(стабильно) 8 цифра срабатывет но сразу же сбрасывается.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...