1. pl端的encoder模块实现了可选的外部复位信号 2. pl端修改encoder模块的ENCODER_CR寄存器复位值,为仅限内部复位以及内部默认处于复位状态 3. 驱动层实现外部复位的开启和关闭功能,驱动open时退出默认的复位清零状态 由于驱动程序已在open时退出复位状态,应用程序可不做更改,驱动程序close后不会自动切换回复位状态 4. 更新了驱动测试应用程序
78 lines
2.0 KiB
C
78 lines
2.0 KiB
C
#include "encoder_dev.h"
|
|
#include <signal.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
|
|
static void sig_handler(int sig);
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
unsigned int a = 100, b = 100, c = 100, d = 100;
|
|
unsigned int divider = 0;
|
|
char which[32] = {0};
|
|
char clear_mode[32] = {0};
|
|
encoder_dev_init();
|
|
encoder_dev_set_trigmod(ENCODER_TRIG_MODE_EXTERNEL);
|
|
encoder_dev_set_divide(100, 100, 100, 100, 100);
|
|
signal(SIGINT, (sig_t)sig_handler);
|
|
while (1)
|
|
{
|
|
while (strcmp(clear_mode, "i") && strcmp(clear_mode, "ei"))
|
|
{
|
|
printf("clear mode(i/ei)? ");
|
|
scanf("%s", clear_mode);
|
|
}
|
|
|
|
if (strcmp(clear_mode, "i"))
|
|
{
|
|
encoder_dev_set_clrmod(ENCODER_CLEAR_MODE_INTERNAL);
|
|
}
|
|
else
|
|
{
|
|
encoder_dev_set_clrmod(ENCODER_CLEAR_MODE_BOTH);
|
|
}
|
|
|
|
while (strcmp(which, "a") && strcmp(which, "b") && strcmp(which, "c") && strcmp(which, "d") && strcmp(which, "all"))
|
|
{
|
|
printf("which camera(a/b/c/d/all)? ");
|
|
scanf("%s", which);
|
|
}
|
|
|
|
printf("divider value?(2~2^32-1)? ");
|
|
scanf("%ud", ÷r);
|
|
if (strcmp(which, "a") == 0)
|
|
{
|
|
a = divider;
|
|
}
|
|
else if (strcmp(which, "b") == 0)
|
|
{
|
|
b = divider;
|
|
}
|
|
else if (strcmp(which, "c") == 0)
|
|
{
|
|
c = divider;
|
|
}
|
|
else if (strcmp(which, "d") == 0)
|
|
{
|
|
d = divider;
|
|
}
|
|
else if (strcmp(which, "all") == 0)
|
|
{
|
|
a = b = c = d = divider;
|
|
}
|
|
encoder_dev_set_divide(500, a, b, c, d);
|
|
printf("clear mode is %s, divider of camera %s is set to %d\r\n\r\n", clear_mode, which, divider);
|
|
which[0] = '\0';
|
|
clear_mode[0] = '\0';
|
|
}
|
|
}
|
|
|
|
static void sig_handler(int sig)
|
|
{
|
|
encoder_dev_set_trigmod(ENCODER_TRIG_MODE_INTERNEL);
|
|
encoder_dev_deinit();
|
|
printf("\r\n\r\nExisting...");
|
|
exit(0);
|
|
} |