Jump to content
-=FISHER=-

Софтверный таймер и ошибка invalid use of void expression

Recommended Posts

Всем привет!

 

Нашел в интернете пример для создания программного таймера, всё отлично заработало. Функция его создания выглядит так:

enum StateTimer {IDLE, ACTIVE, DONE}; //состояния таймера - неработающий, активный, отработавший

typedef struct{
	unsigned long time;           //через какое время сработает таймер
	unsigned int period;         //период повторения
	enum StateTimer state;    //текущее состояние
	void (*pFunc)(void);         //указатель на функцию
}SoftTimer;

void CreateTimer(SoftTimer *CurSoftTimer, unsigned int time, unsigned int period, enum StateTimer state, void (*pFunc)())
{
	SoftTimers[AmountTimers] = CurSoftTimer;
	CurSoftTimer->time = time;
	CurSoftTimer->period = period;
	CurSoftTimer->state = state;
	CurSoftTimer->pFunc = pFunc;
	AmountTimers++;
}

В качестве функции, которая будет вызываться, когда время таймера истечет я сначала использовал обычную, без аргумента. И создавал таймер вот таким образом:

CreateTimer(&Timer_CH1_Rise, timers_time[0], 0, IDLE, TimerDone); //создание таймера

Всё прекрасно работало, но теперь у меня возникла необходимость вызывать при сработке таймера функцию с аргументом и я делаю это вот таким образом:

CreateTimer(&Timer_CH1_Fall, timers_time[1], 0, IDLE, TimerDone(1)); //создание таймера

Однако Atmel Studio теперь ругается на эту строчку и выдает мне ошибку invalid use of void expression

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

Share this post


Link to post
Share on other sites

Посмотрите вот это, может понравится больше...

 

Share this post


Link to post
Share on other sites
4 часа назад, -=FISHER=- сказал:

выдает мне ошибку invalid use of void expression

Вот же у Вас указывается тип функции :

void (*pFunc)(void);

Тут и меняйте на нужный.
Если хочется с аргументом, то в скобках вместо void пишем тип.

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

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

Подробнее

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Виновным в домашнем насилии могут запретить приближаться к жертве... СПЧ предлагает определять семейно-бытовое насилие как "умышленное противоправное действие или бездействие либо угрозы в отношении близких родственников или их имущества". Согласно законопроекту, жертвам предлагается выдавать защитные ордера (принудительное предписание) двух типов: судебные и внесудебные. При наличии внесудебного ордера преследователь не сможет приближаться к пострадавшему ближе чем на десять метров, а также будет обязан пройти специализированную психологическую программу... В исключительных случаях судебное защитное предписание обяжет нарушителя покинуть место совместного проживания с пострадавшим. При этом не имеет значения, кто является собственником недвижимости. https://ria.ru/20191019/1559971722.html
    • За базар ответь!!!40Ватт в студию!!!!!!!!!!!
    • А ты думал я буду тебе диссертацию писать? Не захламляй ветку...
    • Не зря ведь"неучи" советуют на место Q3 ставить транзюк с максимально большей беттой
    • Ну я ж сказал, не сможете, вы просто скопировали текст с какой то чушью. Генератор тока там не нужен, поставьте вместо него сопротивление и подайте на него питание без пульсаций.
    • Где же вы раньше были, в начале недели на веге взял недостающее количество на 100р дороже А посылку вашу получил, все ОК
    • Генераторами стабильного тока принято называть устройства, выходной ток которых практически не зависит от сопротивления нагрузки. Он может найти применение, например.в омметрах с линейной шкалой. Величина коллекторного тока транзистора V2 определяется отношением Iк=0,66/R2.Например, при R2, равном 2,2 к0м. ток коллектора транзистора V2 будет равен 0,3 мА и остается практически постоянным при изменении сопротивления резистора Rx от 0 до 30 к0м. При необходимости величина постоянного тока может быть увеличена до 3 мА, для этого сопротивление резистора R2 необходимо уменьшить до 180 Ом. Дальнейшее увеличение тока при сохранении высокой стабильности его величины как при смене нагрузки, так и при увеличении температуры возможно лишь при использовании трехтранзисторного генератора, показанного на рис. 2. При этом транзисторы V2 и V3 должны быть средней мощности, а напряжение второго источника питания - в 2...3 раза больше напряжения питания транзисторов V1, V2. Сопротивление резистора R3 рассчитывается по вышеприведенной формуле, но дополнительно корректируется с учетом разброса характеристик транзисторов. Источники стабильного тока применяются, когда нужно обеспечить заданный ток вне зависимости от напряжения и сопротивления нагрузки. Источник (генератор) тока обладает большим дифференциальным сопротивлением. Это означает, что сила тока через генератор тока в рабочем режиме мало зависит от напряжения на нем. В идеале дифференциальное сопротивление источника тока должно быть равно бесконечности, то есть ток не должен зависеть от напряжения. Реальные источники тока обладают дифференциальным сопротивлением от 1 МОм.
  • Покупай!

×
×
  • Create New...