Зарегистрирован: Вт сен 10, 2019 16:18:33 Сообщений: 64
Рейтинг сообщения:0
Вопрос по таймеру,запускаю функцию Taimer_zaderhgka(); все работает,только мне надо несколько раз запускать ее в разных местах кода,естественно второй раз она не работает так как обнулил регистр TCCR1B,если я делаю вторую такую же функцию например Taimer_zaderhgka_1();только в этом регистре заново выставляю источник тактирования TCCR1B=0b00000010;,тобишь как я думаю запускаю таймер и после выполнения условия его опять обнуляю,вторая задержка работает,только вот работает не коректно,изредко через некоторое время на микросекунды еле заметно включается пин периодически,это в протэусе видно и в железе точно так же,я понимаю,что что-то не так делаю ввиду своей не грамотности в этом деле,пробовал всякие манипуляции с флагами и переменными адекватного ничего не получилось,подскажите пожалуйста как правильно запускать и останавливать один и тот же таймер несколько раз. МК атмега 328,другие таймеры будут использоваться для других дел
static void Taimer_zaderhgka(void) { if(PIND.4==0&&TCNT1L==0x00&&TCNT1H==0x00){PORTB.1=0;PORTB.2=0;PORTB.4=0;PORTB.3=0;}// if(PIND.4==0&&TCNT1L==0x00&&TCNT1H==32) {PORTB.1=1;PORTB.2=0;PORTB.4=0;PORTB.3=0;TCNT1L=0;TCNT1H=0;TCCR1B=0;}//#asm("cli") //таймер дотикал до 32 включился пин 1 порта В,обнулили и выключили источник тактирования,что бы не мигал }
Заголовок сообщения: Re: Вопрос по коду СИ(Таймер)
Добавлено: Чт янв 21, 2021 23:10:31
Открыл глаза
Зарегистрирован: Вт сен 10, 2019 16:18:33 Сообщений: 64
Рейтинг сообщения:0
я так и делал,но вторая задержка либо не работает,либо какая то из двух не коректно,если флагами блочить,ну я всякие варики попробовал,но чет не получается,не хватает грамотности в этом деле,в книжках не нашел решение данной проблемы,подмигивает изредко через некоторое время,с пин включает оптопару и через нее магнитный пускатель включается,когда это кратковременное включение пина через некоторое время начинается,то даже пускатель не успевает разомкнуть свои контакты,настолько мала и еле заметная,не мешает но смущает ппц,какое-то не верное написание кода
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Вопрос по коду СИ(Таймер)
Добавлено: Пт янв 22, 2021 03:26:54
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Цитата:
вторая задержка работает,только вот работает не коректно,изредко через некоторое время на микросекунды еле заметно включается пин
Каким боком пин может относиться к задержке ? Вы смешали всё в кучу, отсюда и проблемы. Делайте задержку как отдельную единицу кода, а работу с портом - отдельно.
Вообще это делается не так. Высталвяется пин и запускается таймер в режиме CTC со счетом до нужного значения. А в прерывании выставляем порт назад как надо.
Рекомендую почитать цикл статей Татарчевского. Применение SWITCH технологии при разработке прикладного программного обеспечения для микроконтроллеров. На многое глаза раскроет. Сразу скажу, не бойтесь сложностей, поймёте потом, что на самом деле все просто.
Какое же неудачное и я бы даже сказал дурацкое название для статей о конечных автоматах на switch/case. Статьи с виду нормальные (мельком глянул первые 2 части), но название что-то прям совсем не о том... "SWITCH технологии" как-то ужасно звучит. Мне кажется ТС рано в КА еще. Хотя бы с азами программирования для начала надо разобраться. Применение масок, нормальный стиль кода и т.д. Чтобы вместо вот этой простыни научиться писать PORTB &= _BV(PB0)|_BV(PB1)|_BV(PB2)|_BV(PB3), и т.д. Потом с таймерами разобраться, режимами и практическому применению. А уже потом, когда и если понадобится что-то более сложное, где нужно реализовывать несколько задач - тогда уже и почитать что-нибудь про КА.
Switch-Case технология. Всё правильно. И ни фига не рано. Я эти статьи читал ещё на этапе ассемблера. Язык не важен. Важен сам подход. Псевдопараллельность процессов-задач. А свитч кейс или индексный переход - тоже не важно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения