Или вбить значения в исходник намертво, без возможности их изменения кнопками, но это отстой


а это как поможет?Engineer_Keen писал(а):Попробовать поставить внешний монитор питания
это да... Регулировка здесь обязательна...Engineer_Keen писал(а):без возможности их изменения кнопками, но это отстой
isx писал(а):а это как поможет?
isx писал(а):в чём разница
isx писал(а):Странно... Такой большой ценовой разброс при таких маленьких различиях параметров...
Он похоже вам не подойдёт. Больше похоже на защиту питания материнской платы – отслеживает сразу три напряжения. Если только вся схема питается от 12 вольт, то можно подать через резисторный делитель на ненужные ножки. А нужное напряжение мониторить.TPS3510P в наличии, но с даташитом никак не разберусь..
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#define KEY1UM PIND.2
#define KEY2UP PIND.3
#define KEY4IM PIND.6
void key_scan()
{
}
void kb_check()
{
key_scan((KEY1UM), 0); // Error 1 expected ')' before numeric constant
key_scan((KEY2UP), 1); // Error 2 expected ')' before numeric constant
key_scan((KEY4IM), 2); // Error 3 expected ')' before numeric constant
}
int main(void)
{
while(1)
{
}
}
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#define KEY1UM PIND.2
#define KEY2UP PIND.3
#define KEY4IM PIND.6
#define NOTT 0
#define PRES 1
#define LEAV 2
#define HOLD 3
uint8_t key_state[5];
uint8_t key_count[5];
uint8_t kb_tmrU, kb_tmrI;
uint8_t wait_key_tmr = 0;
uint16_t wait_key_tmr2 = 0;
void key_scan(uint8_t key, uint8_t num) //функция определение клика и удержания
{
if (key == 0) //кнопка нажата
{
if (key_count[num] < 255) key_count[num]++; //считаем время удержания
else key_state[num] = HOLD; //0,28сек
}
else if (key_count[num] > 0 && key_state[num] != HOLD) key_count[num] --; //кнопка отжата, считаем время от последнего нажатия
else key_count[num] = 0;
if (key_count[num] == 0) key_state[num] = NOTT;
else if (key_count[num] > 8) //интервал, после которого фиксируется однократное нажатие (с отпусканием)
{
if (key_state[num] == PRES && key == 1) key_state[num] = LEAV;
}
else if (key_count[num] > 4) //интервал, после которого фиксируется нажатие (10ms)
{
if (key_state[num] == NOTT) key_state[num] = PRES;
}
}
void kb_check()
{
key_scan((KEY1UM),0); // Error 1 expected ')' before numeric constant
key_scan((KEY2UP),1); // Error 2 expected ')' before numeric constant
key_scan((KEY4IM),2); // Error 3 expected ')' before numeric constant
}
int main(void)
{
while(1)
{
}
}
AStudio не знает такого:#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
PIND.2
pyzhman писал(а):Попробуйте так:Код: Выделить всё
(KEY1UM,0)
service47 писал(а):То же самое, ошибка не пропала.
a_skr писал(а)://#define KEY1UM PIND.2
#define KEY1UM ((PIND & (1<<PD2)) ? 1 : 0)
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#define KEY1UM ((PIND & (1<<PD2))
#define KEY2UP ((PIND & (1<<PD3))
#define KEY4IM ((PIND & (1<<PD6))
#define NOTT 0
#define PRES 1
#define LEAV 2
#define HOLD 3
uint8_t key_state[5];
uint8_t key_count[5];
uint8_t kb_tmrU, kb_tmrI;
uint8_t wait_key_tmr = 0;
uint16_t wait_key_tmr2 = 0;
void key_scan(uint8_t key, uint8_t num) //функция определение клика и удержания
{
if (key == 0) //кнопка нажата
{
if (key_count[num] < 255) key_count[num]++; //считаем время удержания
else key_state[num] = HOLD; //0,28сек
}
else if (key_count[num] > 0 && key_state[num] != HOLD) key_count[num] --; //кнопка отжата, считаем время от последнего нажатия
else key_count[num] = 0;
if (key_count[num] == 0) key_state[num] = NOTT;
else if (key_count[num] > 8) //интервал, после которого фиксируется однократное нажатие (с отпусканием)
{
if (key_state[num] == PRES && key == 1) key_state[num] = LEAV;
}
else if (key_count[num] > 4) //интервал, после которого фиксируется нажатие (10ms)
{
if (key_state[num] == NOTT) key_state[num] = PRES;
}
}
void kb_check()
{
key_scan(KEY1UM,0); // Error 1 expected ')' before numeric constant
key_scan(KEY2UP,1); // Error 2 expected ')' before numeric constant
key_scan(KEY4IM,2); // Error 3 expected ')' before numeric constant
}
int main(void)
{
while(1)
{
}
}