本文整理汇总了C++中cli函数的典型用法代码示例。如果您正苦于以下问题:C++ cli函数的具体用法?C++ cli怎么用?C++ cli使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cli函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: os_disable_interrupt
inline void os_disable_interrupt() {
cli();
}
开发者ID:qinzb,项目名称:WeOS,代码行数:3,代码来源:os_cpu.c
示例2: update_sregs
//.........这里部分代码省略.........
kgsbase = (ulong_t)CPU;
if (HYPERVISOR_set_segment_base(SEGBASE_GS_USER_SEL,
pcb->pcb_gs) != 0) {
no_trap();
return (1);
}
rp->r_gs = pcb->pcb_gs;
ASSERT((cpu_t *)kgsbase == CPU);
#else /* __xpv */
/*
* A little more complicated running native.
*/
kgsbase = (ulong_t)CPU;
__set_gs(pcb->pcb_gs);
/*
* If __set_gs fails it's because the new %gs is a bad %gs,
* we'll be taking a trap but with the original %gs and %gsbase
* undamaged (i.e. pointing at curcpu).
*
* We've just mucked up the kernel's gsbase. Oops. In
* particular we can't take any traps at all. Make the newly
* computed gsbase be the hidden gs via __swapgs, and fix
* the kernel's gsbase back again. Later, when we return to
* userland we'll swapgs again restoring gsbase just loaded
* above.
*/
__swapgs();
rp->r_gs = pcb->pcb_gs;
/*
* restore kernel's gsbase
*/
wrmsr(MSR_AMD_GSBASE, kgsbase);
#endif /* __xpv */
/*
* Only override the descriptor base address if
* r_gs == LWPGS_SEL or if r_gs == NULL. A note on
* NULL descriptors -- 32-bit programs take faults
* if they deference NULL descriptors; however,
* when 64-bit programs load them into %fs or %gs,
* they DONT fault -- only the base address remains
* whatever it was from the last load. Urk.
*
* XXX - note that lwp_setprivate now sets %fs/%gs to the
* null selector for 64 bit processes. Whereas before
* %fs/%gs were set to LWP(FS|GS)_SEL regardless of
* the process's data model. For now we check for both
* values so that the kernel can also support the older
* libc. This should be ripped out at some point in the
* future.
*/
if (pcb->pcb_gs == LWPGS_SEL || pcb->pcb_gs == 0) {
#if defined(__xpv)
if (HYPERVISOR_set_segment_base(SEGBASE_GS_USER,
pcb->pcb_gsbase)) {
no_trap();
return (1);
}
#else
wrmsr(MSR_AMD_KGSBASE, pcb->pcb_gsbase);
#endif
}
__set_ds(pcb->pcb_ds);
rp->r_ds = pcb->pcb_ds;
__set_es(pcb->pcb_es);
rp->r_es = pcb->pcb_es;
__set_fs(pcb->pcb_fs);
rp->r_fs = pcb->pcb_fs;
/*
* Same as for %gs
*/
if (pcb->pcb_fs == LWPFS_SEL || pcb->pcb_fs == 0) {
#if defined(__xpv)
if (HYPERVISOR_set_segment_base(SEGBASE_FS,
pcb->pcb_fsbase)) {
no_trap();
return (1);
}
#else
wrmsr(MSR_AMD_FSBASE, pcb->pcb_fsbase);
#endif
}
} else {
cli();
rc = 1;
}
no_trap();
return (rc);
}
开发者ID:pcd1193182,项目名称:openzfs,代码行数:101,代码来源:sundep.c
示例3: cli
/** Discard all data in the ring buffer.
*
* @note This function must not be called with interrupts disabled.
*/
void SerialRingBuffer::flush() {
uint8_t s = SREG;
cli();
head_ = tail_ = 0;
SREG = s;
}
开发者ID:EATtomatoes,项目名称:blackbox-firmware,代码行数:10,代码来源:SerialPort.cpp
示例4: sim710_soft_reset
static void
sim710_soft_reset (struct Scsi_Host *host)
{
unsigned long flags;
#ifdef CONFIG_TP34V_SCSI
struct sim710_hostdata *hostdata = (struct sim710_hostdata *)
host->hostdata[0];
#endif
save_flags(flags);
cli();
#ifdef CONFIG_TP34V_SCSI
tpvic.loc_icr[irq_index[hostdata->chip]].icr = 0x80;
#endif
/*
* Do a soft reset of the chip so that everything is
* reinitialized to the power-on state.
*
* Basically follow the procedure outlined in the NCR53c700
* data manual under Chapter Six, How to Use, Steps Necessary to
* Start SCRIPTS, with the exception of actually starting the
* script and setting up the synchronous transfer gunk.
*/
/* XXX Should we reset the scsi bus here? */
NCR_write8(SCNTL1_REG, SCNTL1_RST); /* Reset the bus */
udelay(50);
NCR_write8(SCNTL1_REG, 0);
udelay(500);
NCR_write8(ISTAT_REG, ISTAT_10_SRST); /* Reset the chip */
udelay(50);
NCR_write8(ISTAT_REG, 0);
mdelay(1000); /* Let devices recover */
NCR_write8(DCNTL_REG, DCNTL_10_COM | DCNTL_700_CF_3);
NCR_write8(CTEST7_REG, CTEST7_10_CDIS|CTEST7_STD);
NCR_write8(DMODE_REG, DMODE_10_BL_8 | DMODE_10_FC2);
NCR_write8(SCID_REG, 1 << host->this_id);
NCR_write8(SBCL_REG, 0);
NCR_write8(SXFER_REG, 0);
NCR_write8(SCNTL1_REG, SCNTL1_ESR_700);
NCR_write8(SCNTL0_REG, SCNTL0_EPC | SCNTL0_EPG_700 | SCNTL0_ARB1 |
SCNTL0_ARB2);
NCR_write8(DIEN_REG, DIEN_700_BF |
DIEN_ABRT | DIEN_SSI | DIEN_SIR | DIEN_700_OPC);
NCR_write8(SIEN_REG_700,
SIEN_PAR | SIEN_700_STO | SIEN_RST | SIEN_UDC | SIEN_SGE | SIEN_MA);
#ifdef CONFIG_TP34V_SCSI
tpvic.loc_icr[irq_index[hostdata->chip]].icr = 0x30 | TP34V_SCSI0n1_IPL;
#endif
restore_flags(flags);
}
开发者ID:iwangv,项目名称:edimax-br-6528n,代码行数:61,代码来源:sim710.c
示例5: unregister_netdev
void unregister_netdev(struct device *dev)
{
struct device *d = dev_base;
unsigned long flags;
int i;
save_flags(flags);
cli();
if (dev == NULL)
{
printk("was NULL\n");
restore_flags(flags);
return;
}
/* else */
if (dev->start)
printk("ERROR '%s' busy and not MOD_IN_USE.\n", dev->name);
/*
* must jump over main_device+aliases
* avoid alias devices unregistration so that only
* net_alias module manages them
*/
#ifdef CONFIG_NET_ALIAS
if (dev_base == dev)
dev_base = net_alias_nextdev(dev);
else
{
while(d && (net_alias_nextdev(d) != dev)) /* skip aliases */
d = net_alias_nextdev(d);
if (d && (net_alias_nextdev(d) == dev))
{
/*
* Critical: Bypass by consider devices as blocks (maindev+aliases)
*/
net_alias_nextdev_set(d, net_alias_nextdev(dev));
}
#else
if (dev_base == dev)
dev_base = dev->next;
else
{
while (d && (d->next != dev))
d = d->next;
if (d && (d->next == dev))
{
d->next = dev->next;
}
#endif
else
{
printk("unregister_netdev: '%s' not found\n", dev->name);
restore_flags(flags);
return;
}
}
for (i = 0; i < MAX_ETH_CARDS; ++i)
{
if (ethdev_index[i] == dev)
{
ethdev_index[i] = NULL;
break;
}
}
restore_flags(flags);
/*
* You can i.e use a interfaces in a route though it is not up.
* We call close_dev (which is changed: it will down a device even if
* dev->flags==0 (but it will not call dev->stop if IFF_UP
* is not set).
* This will call notifier_call_chain(&netdev_chain, NETDEV_DOWN, dev),
* dev_mc_discard(dev), ....
*/
dev_close(dev);
}
开发者ID:liexusong,项目名称:linux2.0-comment,代码行数:81,代码来源:net_init.c
示例6: set_date
void set_date(){
clear_pixelMatrix();
print_date(POS_DATE_SET);
print_year();
print_symbol(16,17, hakenSymb,108,46);
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_dateXPos() + get_dayWidth() / 2 - 4, POS_DATE_SET - 10);
update_LCD();
int old_selectedItem = 0;
int item = 0;
while (item != 3){
cli();
btn_drehenc_pushed = false;
sei();
while(!btn_drehenc_pushed){
if(rotary != 0){
item += rotary;
cli();
rotary = 0;
sei();
item = item % 4;
if(item<0){
item += 4;
}
switch (old_selectedItem){
case 0: for(int x = 0; x<128; x++){
for(int y = 0; y<10; y++)
reset_pixel(x,y);
} break;
case 1: for(int x = 0; x<128; x++){
for(int y = 0; y<10; y++)
reset_pixel(x,y);
}break;
case 2: for(int x = 0; x<128; x++){
for(int y = 30; y<40; y++)
reset_pixel(x,y);
}break;
case 3: for(int x = 94; x<104; x++){
for(int y = 2+3*15+5; y<2+3*15+5+8; y++)
reset_pixel(x,y);
}break;
}
switch (item) {
case 0: print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_dateXPos() + get_dayWidth() / 2 - 4, POS_DATE_SET - 10); break; //-4 = halbe Länge Herz
case 1: print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_dateXPos() + get_dayWidth() + get_monthWidth() / 2 - 4, POS_DATE_SET - 10); break;
case 2: print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_yearXPos() + get_yearWidth() / 2 - 4, YPOS_YEAR - 10);break;
case 3: print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, 94, 2+3*15+5);break;
}
old_selectedItem = item;
update_LCD();
}
goodNight();
check_light();
}
cli();
btn_drehenc_pushed = false;
sei();
switch (item) {
case 0: {
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinOffenSymb, get_dateXPos() + get_dayWidth() / 2 - 4, POS_DATE_SET - 10);
update_LCD();
set_day();
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_dateXPos() + get_dayWidth() / 2 - 4, POS_DATE_SET - 10);
break;
}
case 1:{
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinOffenSymb, get_dateXPos() + get_dayWidth() + get_monthWidth() / 2 - 4, POS_DATE_SET - 10);
update_LCD();
set_month();
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_dateXPos() + get_dayWidth() + get_monthWidth() / 2 - 4, POS_DATE_SET - 10);
break;
}
case 2: {
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinOffenSymb, get_yearXPos() + get_yearWidth() / 2 - 4, YPOS_YEAR - 10);
update_LCD();
set_year();
print_symbol(8, HERZ_KLEIN_WIDTH, herzKleinSymb, get_yearXPos() + get_yearWidth() / 2 - 4, YPOS_YEAR - 10);
break;
}
default: break;
}
update_LCD();
}
}
开发者ID:MalteBastelt,项目名称:Wecker,代码行数:85,代码来源:EADOGL128.c
示例7: memset
void WarGServer::start(){
clients_ptr=&clients;
serv=socket(AF_INET,SOCK_STREAM,0);
if(serv<0){ cout<<"sock error\n"; return;}
memset(&serv_addr,sizeof serv_addr,0);
port=9898;
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port =htons(port);
if(bind(serv,(struct sockaddr*)&serv_addr,sizeof serv_addr)<0){
cout<<"error binding\n"; return;
}
listen(serv,5);
FD_SET(serv,&master);
fdmax=serv;
clilen=sizeof cli_addr;
int newsock;
while(true){
read_fds=master;
if(select(fdmax+1,&read_fds,NULL,NULL,NULL)==-1){
cout<<"select error\n";
return;
}
for(int i=0;i<=fdmax;i++){
if(FD_ISSET(i,&read_fds)){//data to be red
if(i==serv){//new connection
if((newsock=accept(serv,(struct sockaddr*)&cli_addr,&clilen))!=-1){
char ip[INET_ADDRSTRLEN];
inet_ntop(AF_INET,&cli_addr.sin_addr.s_addr,ip,INET_ADDRSTRLEN);
stringstream ss;
ss<<"Connection from "<<ip<<" accepted.";
writeLog(ss.str());
Client cli(newsock);
cli.setIp((string)ip);
clients.push_back(cli);
FD_SET(newsock,&master);
if(newsock >fdmax){
fdmax=newsock;
}
cout<<"new connection, "<<newsock<<endl;
// send_welcome(newsock);
send_data(newsock,"LOGON: ");
}else{
cout<<"error accepting\n";
//close(newsock);
}
}else{ //handle data from client
if(handle_client(i)==0){ //connection lost?
close_connection(i);
}
}
}
}//for
}//while
}
开发者ID:TylerOrcutt,项目名称:WarGames,代码行数:65,代码来源:WarGServer.cpp
示例8: cli
void HardwareSerial::flush()
{
cli();
_rxfifo->idx_r = _rxfifo->idx_w = 0;
sei();
}
开发者ID:Lohmatyi86,项目名称:rogue-code,代码行数:6,代码来源:HardwareSerial.cpp
示例9: ProcessBus
/*-----------------------------------------------------------------------------
* process received bus telegrams
*/
static void ProcessBus(void) {
uint8_t ret;
TClient *pClient;
TBusMsgType msgType;
uint8_t i;
uint8_t *p;
bool msgForMe = false;
ret = BusCheck();
if (ret == BUS_MSG_OK) {
msgType = spRxBusMsg->type;
switch (msgType) {
case eBusDevReqReboot:
case eBusDevRespSwitchState:
case eBusDevReqActualValue:
case eBusDevReqSetClientAddr:
case eBusDevReqGetClientAddr:
case eBusDevReqInfo:
case eBusDevReqSetAddr:
case eBusDevReqEepromRead:
case eBusDevReqEepromWrite:
if (spRxBusMsg->msg.devBus.receiverAddr == MY_ADDR) {
msgForMe = true;
}
break;
default:
break;
}
}
if (msgForMe == false) {
return;
}
switch (msgType) {
case eBusDevReqReboot:
/* reset controller with watchdog */
/* set watchdog timeout to shortest value (14 ms) */
cli();
wdt_enable(WDTO_15MS);
/* wait for reset */
while (1);
break;
case eBusDevRespSwitchState:
pClient = sClient;
for (i = 0; i < sNumClients; i++) {
if ((pClient->address == spRxBusMsg->senderAddr) &&
(pClient->state == eWaitForConfirmation)) {
if (spRxBusMsg->msg.devBus.x.devResp.switchState.switchState == sWindSwitch) {
pClient->state = eConfirmationOK;
}
break;
}
pClient++;
}
break;
case eBusDevReqActualValue:
sTxBusMsg.senderAddr = MY_ADDR;
sTxBusMsg.type = eBusDevRespActualValue;
sTxBusMsg.msg.devBus.receiverAddr = spRxBusMsg->senderAddr;
sTxBusMsg.msg.devBus.x.devResp.actualValue.devType = eBusDevTypeWind;
sTxBusMsg.msg.devBus.x.devResp.actualValue.actualValue.wind.state = sWindSwitch;
sTxBusMsg.msg.devBus.x.devResp.actualValue.actualValue.wind.wind = sMaxWind; //sWind;
BusSend(&sTxBusMsg);
break;
case eBusDevReqSetClientAddr:
sTxBusMsg.senderAddr = MY_ADDR;
sTxBusMsg.type = eBusDevRespSetClientAddr;
sTxBusMsg.msg.devBus.receiverAddr = spRxBusMsg->senderAddr;
for (i = 0; i < BUS_MAX_CLIENT_NUM; i++) {
p = &(spRxBusMsg->msg.devBus.x.devReq.setClientAddr.clientAddr[i]);
eeprom_write_byte((uint8_t *)(CLIENT_ADDRESS_BASE + i), *p);
}
BusSend(&sTxBusMsg);
GetClientListFromEeprom();
break;
case eBusDevReqGetClientAddr:
sTxBusMsg.senderAddr = MY_ADDR;
sTxBusMsg.type = eBusDevRespGetClientAddr;
sTxBusMsg.msg.devBus.receiverAddr = spRxBusMsg->senderAddr;
for (i = 0; i < BUS_MAX_CLIENT_NUM; i++) {
p = &(sTxBusMsg.msg.devBus.x.devResp.getClientAddr.clientAddr[i]);
*p = eeprom_read_byte((const uint8_t *)(CLIENT_ADDRESS_BASE + i));
}
BusSend(&sTxBusMsg);
break;
case eBusDevReqInfo:
sTxBusMsg.type = eBusDevRespInfo;
sTxBusMsg.senderAddr = MY_ADDR;
sTxBusMsg.msg.devBus.receiverAddr = spRxBusMsg->senderAddr;
sTxBusMsg.msg.devBus.x.devResp.info.devType = eBusDevTypeWind;
strncpy((char *)(sTxBusMsg.msg.devBus.x.devResp.info.version),
version, BUS_DEV_INFO_VERSION_LEN);
sTxBusMsg.msg.devBus.x.devResp.info.version[BUS_DEV_INFO_VERSION_LEN - 1] = '\0';
BusSend(&sTxBusMsg);
//.........这里部分代码省略.........
开发者ID:tpotechnix,项目名称:homebus,代码行数:101,代码来源:main.c
示例10: main
int main( void )
{
int32_t tmp = 0x0;
// uint8_t tmp8;
cli();
SetupInterruptPins();
y_pos = 0;
x_pos = 0;
// DDRC = _BV(PC6); //output pin
SetupDriverPins();
setup_clock();
setup_timers();
SetupPrintf();
USB_ZeroPrescaler();
USB_Init();
sei();
printf("hello world");
// motorflags |= 0x01;
// set_motor_pwm(PWM_MAX);
// forward();
// while(1);
//AutoSlop();
/*
AutoSlop();
while(1);
*/
// dec_backward();
// set_dec_pwm(0x1fff);
// ra_forward();
// set_ra_pwm(0x3fff);
while(1)
{
cli();
// tmp8 = usbHasEvent;
//add accumulated radial encoder output
y_pos += y_tmp;
y_tmp = 0;
x_pos += x_tmp;
x_tmp = 0;
sei();
if (usbHasEvent) ProcessUSB();
if (jog_value_dec == 0) {
tmp = ComputeOffset(&y_pos,&y_dest); //pid error value
slew_dec(&tmp);
}
if (jog_value_ra == 0) {
tmp = ComputeOffset(&x_pos,&x_dest); //pid error value
slew_ra(&tmp);
}
}
return 0;
}
开发者ID:axlecrusher,项目名称:AvrProjects,代码行数:70,代码来源:test.c
示例11: fetch_op
//.........这里部分代码省略.........
/* AND nnnn,X */
case 0x3D: _and(load_byte(addr_absx()),4); break;
/* ROL nnnn,X */
case 0x3E: rol_mem(addr_absx(),7); break;
/* RTI */
case 0x40: rti(); break;
/* EOR (nn,X) */
case 0x41: eor(load_byte(addr_indx()),6); break;
/* EOR nn */
case 0x45: eor(load_byte(addr_zero()),3); break;
/* LSR nn */
case 0x46: lsr_mem(addr_zero(),5); break;
/* PHA */
case 0x48: pha(); break;
/* EOR #nn */
case 0x49: eor(fetch_op(),2); break;
/* BVC */
case 0x50: bvc(); break;
/* JMP nnnn */
case 0x4C: jmp(); break;
/* EOR nnnn */
case 0x4D: eor(load_byte(addr_abs()),4); break;
/* LSR A */
case 0x4A: lsr_a(); break;
/* LSR nnnn */
case 0x4E: lsr_mem(addr_abs(),6); break;
/* EOR (nn,Y) */
case 0x51: eor(load_byte(addr_indy()),5); break;
/* EOR nn,X */
case 0x55: eor(load_byte(addr_zerox()),4); break;
/* LSR nn,X */
case 0x56: lsr_mem(addr_zerox(),6); break;
/* CLI */
case 0x58: cli(); break;
/* EOR nnnn,Y */
case 0x59: eor(load_byte(addr_absy()),4); break;
/* EOR nnnn,X */
case 0x5D: eor(load_byte(addr_absx()),4); break;
/* LSR nnnn,X */
case 0x5E: lsr_mem(addr_absx(),7); break;
/* RTS */
case 0x60: rts(); break;
/* ADC (nn,X) */
case 0x61: adc(load_byte(addr_indx()),6); break;
/* ADC nn */
case 0x65: adc(load_byte(addr_zero()),3); break;
/* ROR nn */
case 0x66: ror_mem(addr_zero(),5); break;
/* PLA */
case 0x68: pla(); break;
/* ADC #nn */
case 0x69: adc(fetch_op(),2); break;
/* ROR A */
case 0x6A: ror_a(); break;
/* JMP (nnnn) */
case 0x6C: jmp_ind(); break;
/* ADC nnnn */
case 0x6D: adc(load_byte(addr_abs()),4); break;
/* ROR nnnn */
case 0x6E: ror_mem(addr_abs(),6); break;
/* BVS */
case 0x70: bvs(); break;
/* ADC (nn,Y) */
case 0x71: adc(load_byte(addr_indy()),5); break;
/* ADC nn,X */
case 0x75: adc(load_byte(addr_zerox()),4); break;
开发者ID:CameronBanga,项目名称:emudore,代码行数:67,代码来源:cpu.cpp
示例12: main
void main(void)
{
int receiveInt = 0;
setInt = 0;
setFlag = 0; //false
unsigned long sClk, pClk;
cli(); //
SetSystemClock(CLK_SCLKSEL_RC32M_gc, CLK_PSADIV_1_gc,
CLK_PSBCDIV_1_1_gc);
GetSystemClocks(&sClk, &pClk);
/*
* Programmable interrupt controller configuration
*/
PMIC_CTRL = PMIC_HILVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_LOLVLEN_bm; //enable all levels of interrupts
PORTH_DIR = 0xFF;
PORTQ_DIR = 0x0F; //port q lower 3 bits control access to usb and other stuff so get access with these two lines
PORTQ_OUT = 0x07; //if using port F make this hex 5.
/*
* Serial set up
*/
//initialize the usart d0 for 57600 baud with 8 data bits, no parity, and 1 stop bit, interrupts on low (porth set to this for debugging purposes)
USART_init(&serialStruct, 0xD0, pClk, (_USART_RXCIL_LO | _USART_TXCIL_LO), 576, -4, _USART_CHSZ_8BIT, _USART_PM_DISABLED, _USART_SM_1BIT);
USART_buffer_init(&serialStruct, 100, 100); //initialize the circular buffers
USART_enable(&serialStruct, USART_TXEN_bm | USART_RXEN_bm); //enable the USART
serialStruct.fOutMode = _OUTPUT_CRLF; //append a carriage return and a line feed to every output.
serialStruct.fInMode = _INPUT_CR | _INPUT_TTY | _INPUT_ECHO; //echo input back to the terminal and set up for keyboard input.
/*
* Timer E0 setup for servo PWM
*/
TCE0_CTRLA = TC_CLKSEL_DIV64_gc; //set timer to div/64
TCE0_CTRLB = 0x10 | TC_WGMODE_SS_gc; //turn on capture(CCAEN) and set waveform generation mode to PWM
TCE0_CTRLC = 0x00; //turn off compares
TCE0_CTRLD = 0x00; //turn off events
TCE0_CTRLE = 0x00; //turn off byte mode
TCE0_PER = 10000; //set the top of the period to 20ms
TCE0_CCA = 350; //lower bound, datasheet says 600 microseconds(which should be 300) but that is to low so set it to this
TCE0_INTCTRLA = 0x01; //turn on Overflow interrupt at low priority.
/*
* Port J configuration for pushbutton incrementing
*/
PORTJ_DIR = 0x00; //all pins as input
PORTJ_INTCTRL = 0x05; //turn on both interrupts to low
PORTJ_PIN0CTRL = 0x01; //set pin 0 so only rising edges trigger
PORTJ_PIN1CTRL = 0x01; //set pin 1 so only rising edges trigger
PORTJ_INT0MASK = 0x01; //mask interrupt 0 to only be fired by pin 0
PORTJ_INT1MASK = 0x02; //mask interrupt 1 to only be fired by pin 1
/*
* PORT E configuration
*/
PORTE_DIR = 0xFF;
PORTH_OUT = TCE0_CCA/10;
sei();
while(1)
{
if(serialStruct.serStatus & _USART_RX_DONE)
{
USART_read(&serialStruct, receiveString);
receiveInt = atoi(receiveString);
if(receiveInt < 350 || receiveInt > 1150)
USART_send(&serialStruct, "These are not the values you are looking for");
else
TCE0_CCA = receiveInt;
}
if(setFlag)
{
setFlag = 0; //false
itoa(setInt, sendString, 10);
while(1)
USART_send(&serialStruct, sendString);
}
}
}
开发者ID:nukesforbreakfast,项目名称:IRbot,代码行数:84,代码来源:ServoTest.c
示例13: init
//.........这里部分代码省略.........
// Set contrast to the default value
st7565_set_brightness(Config.Contrast);
_delay_ms(500); // Save is now too fast to show the "Reset" text long enough
}
// Display message in place of logo when updating eeprom structure
if (updated)
{
st7565_command(CMD_SET_COM_NORMAL); // For text (not for logo)
clear_buffer(buffer);
LCD_Display_Text(259,(const unsigned char*)Verdana14,30,13); // "Updating"
LCD_Display_Text(260,(const unsigned char*)Verdana14,33,37); // "settings"
write_buffer(buffer);
clear_buffer(buffer);
_delay_ms(1000);
}
else
{
// Write logo from buffer
write_buffer(buffer);
_delay_ms(1000);
}
clear_buffer(buffer);
write_buffer(buffer);
st7565_init(); // Seems necessary for KK2 mini
//***********************************************************
// i2c init
//***********************************************************
i2c_init();
init_i2c_gyros();
init_i2c_accs();
//***********************************************************
// Remaining init tasks
//***********************************************************
// Display "Hold steady" message
clear_buffer(buffer);
st7565_command(CMD_SET_COM_NORMAL); // For text (not for logo)
LCD_Display_Text(263,(const unsigned char*)Verdana14,18,25); // "Hold steady"
write_buffer(buffer);
clear_buffer(buffer);
// Do startup tasks
Init_ADC();
init_int(); // Initialise interrupts based on RC input mode
init_uart(); // Initialise UART
// Initial gyro calibration
if (!CalibrateGyrosSlow())
{
clear_buffer(buffer);
LCD_Display_Text(61,(const unsigned char*)Verdana14,25,25); // "Cal. failed"
write_buffer(buffer);
_delay_ms(1000);
// Reset
cli();
wdt_enable(WDTO_15MS); // Watchdog on, 15ms
while(1); // Wait for reboot
}
// Update voltage detection
SystemVoltage = GetVbat(); // Check power-up battery voltage
UpdateLimits(); // Update travel and trigger limits
// Disarm on start-up if Armed setting is ARMABLE
if (Config.ArmMode == ARMABLE)
{
General_error |= (1 << DISARMED); // Set disarmed bit
}
// Check to see that throttle is low if RC detected
if (Interrupted)
{
RxGetChannels();
if (MonopolarThrottle > THROTTLEIDLE) // THROTTLEIDLE = 50
{
General_error |= (1 << THROTTLE_HIGH); // Set throttle high error bit
}
}
// Reset IMU
reset_IMU();
// Beep that init is complete
LVA = 1;
_delay_ms(25);
LVA = 0;
#ifdef ERROR_LOG
// Log reboot
add_log(REBOOT);
#endif
} // init()
开发者ID:ghw103,项目名称:nextcopterplus,代码行数:101,代码来源:init.c
示例14: USART_TXUsed
unsigned short USART_TXUsed(USART * serial) {
unsigned short ret;
cli();
ret = RingBufferBytesUsed(&serial->tx_buffer);
sei();
}
开发者ID:StephenCEI,项目名称:2011,代码行数:6,代码来源:USART.c
示例15: main
/**
* Entry point
*/
int main(void) {
/* Misc variables */
DCPU_registers reg; // CPU registers states (at boot)
/* Hardware initialisation */
cli();
led_setup();
spi_setup(SPI_PRESCALER, SPI_MODE, SPI_BITS_ORDER);
uart_setup(UART_BAUDRATE);
DEBUG_STR("Main init", "UART ready");
button_setup();
buzzer_setup(BUZZER_FREQUENCY, BUZZER_DURATION);
ram_setup();
rom_setup();
microvga_setup();
microvga_enable();
dcpu_register_init(®);
DEBUG_STR("Main init", "done");
sei();
/* MicroVGA initialisation */
_delay_ms(1000); // MicroVGA boot time
microvga_clear_screen(); // Clear screen and goto (0, 0)
microvga_goto_cursor(0, 0);
uart_puts_PSTR(PSTR("SkyWodd DCPU-16 hardware emulator")); // Screen test
buzzer_beep();
DEBUG_STR("Main init", "MicroVGA ready");
/* Hardware self-test */
DEBUG_STR("Main init", "self-test run");
led_run_write(1); // Led test
_delay_ms(250);
led_run_write(0);
led_cpu_write(1);
_delay_ms(250);
led_cpu_write(0);
led_rom_write(1);
_delay_ms(250);
led_rom_write(0);
led_ram_write(1);
_delay_ms(250);
led_ram_write(0);
DEBUG_STR("Main init", "self-test done");
/* Keyboard & MicroVGA api test */
DEBUG_STR("Main init", "waiting for keypress");
microvga_goto_cursor(0, 1);
uart_puts_PSTR(PSTR("Press any key to boot ..."));
keyboard_wait();
uart_puts_PSTR(PSTR("Loading please wait ..."));
dcpu_setup(reg);
buzzer_beep();
microvga_clear_screen();
microvga_goto_cursor(0, 0);
DEBUG_STR("Main init", "ready to run");
/* Infinite loop */
for(;;) {
/* Handle pause */
while(!button_get_state());
#ifdef SERIAL_DEBUG_SUPPORT
/* Debug */
dcpu_registers_dump();
#endif
/* Fetch opcode from ROM */
dcpu_step();
}
}
开发者ID:skywodd,项目名称:AVR_DCPU_16,代码行数:76,代码来源:main.c
示例16: set_time
void set_time(bool timeType){
int *hou = &hour;
int *min = &minute;
update_timeXPos(hour, minute);
if (timeType == ALARM_TYPE){
hou = &alarm_hour;
min = &alarm_minute;
update_timeXPos(alarm_hour, alarm_minute);
}
int item = 0;
int old_selectedItem = 1;
cli();
btn_drehenc_pushed = false;
sei();
clear_pixelMatrix();
print_time(timeType);
print_symbol(16,17, hakenSymb,108,46);
print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb,timeXPos+get_timeWidth(alarm_hour)/2-4, 2);
update_LCD();
while(item != 2){
while(!btn_drehenc_pushed){
if(rotary != 0){
item += rotary;
cli();
rotary = 0;
sei();
item = item % 3;
if(item<0){
item += 3;
}
switch (old_selectedItem){
case 0: for(int x = 0; x<128; x++){
for(int y = 2; y<10; y++)
reset_pixel(x,y);
} break;
case 1: for(int x = 0; x<128; x++){
for(int y = 2; y<10; y++)
reset_pixel(x,y);
}break;
case 2: for(int x = 92; x<102; x++){
for(int y = 2+3*15+5; y<2+3*15+8+5; y++)
reset_pixel(x,y);
}break;
}
switch (item) {
case 0: print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb,timeXPos+hourWidth/2-4, 2); break;
case 1: print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb,timeXPos+hourWidth+2*SPACE_TO_DOTS+ TIMEDOT_WIDTH + minuteWidth/2-4, 2); break;
case 2: print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb, 92, 2+3*15+5);break;
}
old_selectedItem = item;
update_LCD();
}
goodNight();
check_light();
}
cli();
btn_drehenc_pushed = false;
sei();
switch (item) {
case 0: {
print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinOffenSymb,timeXPos+hourWidth/2-4, 2);
update_LCD();
set_timeParameter(hou, 24, timeType);
print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb,timeXPos+hourWidth/2-4, 2);
break;
}
case 1: {
print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinOffenSymb,timeXPos+hourWidth+2*SPACE_TO_DOTS+ TIMEDOT_WIDTH + minuteWidth/2-4, 2);
update_LCD();
set_timeParameter(min, 60, timeType);
print_symbol(8,HERZ_KLEIN_WIDTH,herzKleinSymb,timeXPos+hourWidth+2*SPACE_TO_DOTS+ TIMEDOT_WIDTH + minuteWidth/2-4, 2);
break;
}
case 2: { seconds = 0;
cli();
TCNT2 = 0;
timeAdvance = 0;
timeUpdate = 0;
sei();
break;
}
}
update_LCD();
}
}
开发者ID:MalteBastelt,项目名称:Wecker,代码行数:88,代码来源:EADOGL128.c
示例17: rtc_stop
/*!
* Stop the counter.
*
* Disable the interrupt and remove the link
* to the interrupt routine.
*
* \bug The interrupt can be required enable by
* other part of the program.
* It shouldn't be totally disabled here.
*/
void rtc_stop(void)
{
cli();
TCCR0B = 0;
}
开发者ID:erossi,项目名称:tsunami_simulator,代码行数:15,代码来源:rtc.c
示例18: door_main
int
door_main(void)
{
serial_init(9600, 8e2);
pin13_mode_output();
pin_mode_input(PIN_CLK); /* clk */
pin_mode_input(PIN_DATA); /* data */
pin_mode_output(PIN_GREEN_LED); /* green led lock */
pin_mode_output(PIN_YELLOW_LED); /* yellow led lock */
pin_mode_output(PIN_OPEN_LOCK); /* open */
pin_mode_output(PIN_DAYMODE); /* stay open */
pin_mode_output(PIN_STATUS_LED); /* yellow status */
pin_high(PIN_OPEN_LOCK);
pin_high(PIN_DAYMODE);
pin_high(PIN_GREEN_LED);
pin_high(PIN_YELLOW_LED);
/* trigger pin2 interrupt when the clock
* signal goes high */
pin2_interrupt_mode_rising();
pin2_interrupt_enable();
data_reset();
/* setup timer1 to trigger interrupt a 4 times a second */
timer1_mode_ctc();
timer1_compare_a_set(62499);
timer1_clock_d64();
timer1_interrupt_a_enable();
softserial_init();
pin_mode_output(PIN_RFID_ENABLE);
pin_low(PIN_RFID_ENABLE);
sleep_mode_idle();
while (1) {
/*
* sleep if no new events need to be handled
* while avoiding race conditions. see
* http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html
*/
cli();
if (events == EV_NONE && !ev_softserial) {
sleep_enable();
sei();
sleep_cpu();
sleep_disable();
continue;
}
sei();
if (events & EV_SERIAL) {
handle_serial_input();
continue;
}
if (ev_softserial) {
handle_rfid_input();
}
events &= ~EV_DATA;
if (cnt > 0 && data[cnt - 1] == 0xB4) {
if (cnt >= 10) {
struct sha1_context ctx;
char digest[SHA1_DIGEST_LENGTH];
sha1_init(&ctx);
sha1_update(&ctx, (char *)data, 256);
sha1_final(&ctx, digest);
serial_print("HASH+");
serial_hexdump(digest, SHA1_DIGEST_LENGTH);
serial_print("\n");
}
data_reset();
continue;
}
events &= ~EV_TIME;
if (second > 10*4) {
serial_print("ALIVE\n");
second = 0;
data_reset();
continue;
}
}
}
开发者ID:knielsen,项目名称:doorduino,代码行数:90,代码来源:doorduino.c
示例19: main
//.........这里部分代码省略.........
mcp9800_addr = 0x48;
}
else
{
mcp9800_addr = 0x4D;
}
/*-----------------------------------------------------------------------*/
/* Set MCP9800 to 12 bit resolution */
/*-----------------------------------------------------------------------*/
I2C_Start();
I2C_Write(write_address(mcp9800_addr));
I2C_Write(0x01);
I2C_Write((1<<7)|(1<<6)|(1<<5));
I2C_Stop();
/*-----------------------------------------------------------------------*/
/* Set MCP9800 Register Pointer to Ambient Temperature */
/*-----------------------------------------------------------------------*/
I2C_Start();
I2C_Write(write_address(mcp9800_addr));
I2C_Write(0x00);
I2C_Stop();
while(1)
{
/*-------------------------------------------------------------------*/
/* MCP9800: Cold junction channel */
/*-------------------------------------------------------------------*/
usbPoll();
I2C_Start();
debug[0] = I2C_Write(read_address(mcp9800_addr));
tmpReadout[0] = I2C_Read(ACK);
tmpReadout[1] = I2C_Read(NO_ACK);
I2C_Stop();
movAvg_read = ((int16_t)tmpReadout[0] << 8) + ((int16_t)tmpReadout[1]);
movAvg_sum -= movAvg_mem[movAvg_ind];
movAvg_sum += movAvg_read;
movAvg_mem[movAvg_ind] = movAvg_read;
if(movAvg_ind == 7)
{
movAvg_ind = 0;
movAvg_stabil = 1;
}
else
{
movAvg_ind++;
}
if(movAvg_stabil == 1)
{
movAvg_read = movAvg_sum >> 3;
}
usbPoll();
cli();
coldJunctionReadout[0] = movAvg_read >> 8;
coldJunctionReadout[1] = movAvg_read & 0xFF;
sei();
/*-------------------------------------------------------------------*/
/* MCP3421: 3.75 SPS + 18 Bits + Initiate new conversion
/*-------------------------------------------------------------------*/
usbPoll();
I2C_Start();
I2C_Write(write_address(mcp3421_addr));
I2C_Write((1<<7)|(1<<3)|(1<<2)|gainSetting);
I2C_Stop();
/*-------------------------------------------------------------------*/
/* Small delay ...
/*-------------------------------------------------------------------*/
timer0_counter = 250;
while(timer0_counter)
{
usbPoll();
}
/*-------------------------------------------------------------------*/
/* MCP3421
/*-------------------------------------------------------------------*/
usbPoll();
I2C_Start();
I2C_Write(read_address(mcp3421_addr));
tmpReadout[0] = I2C_Read(ACK);
tmpReadout[1] = I2C_Read(ACK);
tmpReadout[2] = I2C_Read(ACK);
tmpReadout[3] = I2C_Read(NO_ACK);
I2C_Stop();
usbPoll();
cli();
thermocoupleReadout[0] = tmpReadout[0];
thermocoupleReadout[1] = tmpReadout[1];
thermocoupleReadout[2] = tmpReadout[2];
thermocoupleReadout[3] = tmpReadout[3];
sei();
}
开发者ID:PaxInstruments,项目名称:t100-firmware,代码行数:101,代码来源:main.c
示例20: fsl_write
/* Put data into the tx_buffer and schedule write_tasklet */
static ssize_t fsl_write(struct file *f, const char *buf,
size_t count, loff_t *pos)
{
struct fsl_fifo_t *fsl_fifo;
int do_sched_tasklet=0;
unsigned flags;
int total=0;
fsl_fifo = (struct fsl_fifo_t *)f->private_data;
if(!fsl_fifo->exists)
return -ENODEV;
save_flags_cli(flags);
/* Is the tx buffer full, and we block */
while(fsl_fifo->tx_cnt==FSLFIFO_BUF_SIZE)
{
restore_flags(flags);
tasklet_schedule(&fsl_write_tasklet);
interruptible_sleep_on(&fsl_write_queue);
if(current->sigpending)
return -EINTR;
save_flags_cli(flags);
}
/* The following logic stolen from mcfserial.c */
save_flags(flags);
while(1)
{
int c;
cli();
/* How much can we write into the buffer? */
c=MIN(count, MIN(FSLFIFO_BUF_SIZE - fsl_fifo->tx_cnt-1,
FSLFIFO_BUF_SIZE - fsl_fifo->tx_head));
if(c<=0)
{
restore_flags(flags);
break;
}
copy_from_user(fsl_fifo->tx_buf+fsl_fifo->tx_head,
buf, c);
fsl_fifo->tx_head=(fsl_fifo->tx_head+c) & (FSLFIFO_BUF_SIZE-1);
fsl_fifo->tx_cnt += c;
restore_flags(flags);
do_sched_tasklet++;
buf+=c;
count-=c;
total+=c;
}
if(do_sched_tasklet)
tasklet_schedule(&fsl_write_tasklet);
return total;
}
开发者ID:ProjectZeroSlackr,项目名称:linux-2.4.32-ipod,代码行数:63,代码来源:fslfifo.c
注:本文中的cli函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论