历史上的今天
返回首页

历史上的今天

今天是:2024年09月24日(星期二)

正在发生

2020年09月24日 | Contiki clock模块

2020-09-24 来源:eefocus

一、functions for handling system time

clock_time_t clock_time(void);//return the current system time in clock ticks

unsigned long clock_seconds(void);//return the system time in seconds

void clock_set_seconds(unsigned long ec);//set the value of the platform seconds


这些函数都是platform dependent的,我们是在stm8中实现的。


#if USE_RTC_CLK

#if USE_LSE  // 32768Hz

#define CLOCK_CONF_SECOND 1024

#else        // 38000Hz

#define CLOCK_CONF_SECOND 1000

#endif

#else

#define CLOCK_CONF_SECOND 1024

#endif

typedef unsigned long clock_time_t;


/**

 * A second, measured in system clock time.

 *

 * hideinitializer

 */

#ifdef CLOCK_CONF_SECOND

#define CLOCK_SECOND CLOCK_CONF_SECOND

#else

#define CLOCK_SECOND (clock_time_t)32

#endif


其中我们的clock_time_t是unsigned long型的,在stm8中unsigned long是32bit,最大数值是4294967295。


The number of clock ticks per second is specified with the constant CLOCK_SECOND.


CLOCK_SECOND 按1024来算,clock_time函数wrap around的时间是:


4294967295/1024/(60*60*24*365) = 0.133年


clock_seconds函数wrap aound的时间是:


4294967295/(60*60*24*365) = 136.2年


The system time starts from zero when the Contiki system starts.


二、functions for blocking the CPU


/**

 * Wait for a given number of ticks.

 * param t   How many ticks.

 *

 */

void clock_wait(clock_time_t t);


/**

 * Delay a given number of microseconds.

 * param dt   How many microseconds to delay.

 *

 * note Interrupts could increase the delay by a variable amount.

 */

void clock_delay_usec(uint16_t dt);


These functions are normally only used in low-level drivers where it sometimes is necessary to wait a short time without giving up the control over the CPU.


The function clock_init() is called by the system during the boot-up procedure to initialize the clock module.


main函数:


int

main(void)

{

  reset_sr = RST->SR;

  RST->SR = 0xFF;


  clock_init();


  leds_init();

  leds_on(LEDS_GREEN);

  HALT_LED_ON();


  rs232_init(RS232_PORT_0, USART_BAUD_9600, USART_PARITY_NONE);


  node_id_restore();

  node_init();


  process_init();


  process_start(&etimer_process, NULL);


  ctimer_init();


略……


  return 0;

}


三、Porting the Clock Module

The clock module is platform dependent and is implemented in the file clock.c. Since the clock module handles the system time, the clock module implementation usually also handles the notifications to the etimer library when it is time to check for expired event timers.


具体相关代码如下:


if(etimer_pending() && etimer_next_expiration_time() <= current_clock) {

    etimer_request_poll();

  }

推荐阅读

史海拾趣

Harvatek Corporation公司的发展小趣事

背景:随着全球经济的一体化和电子信息产业的快速发展,Hantronix意识到市场拓展的重要性。公司开始积极寻求国际合作机会,拓展其全球业务版图。

发展:Hantronix通过参加国际展会、建立海外销售网络等方式,成功将产品推向全球市场。其高品质的产品和优质的服务赢得了众多国际客户的信赖和好评。同时,公司还加强了与国际知名企业的合作,共同推动电子显示技术的进步和应用。

Amphenol Nexus公司的发展小趣事

2008年,Amphenol公司看中了Nexus, Inc.在连接器领域的潜力,决定对其进行收购。收购完成后,Amphenol成立了提供全球销售支持的Amphenol Nexus Technologies,同时仍保持了对客户支持和开发的坚定承诺。这一举措使Amphenol Nexus Technologies得以借助Amphenol的全球性的资源和网络,进一步拓展其业务范围和市场影响力。

Epistar Corp公司的发展小趣事

近年来,随着OLED(有机发光二极管)技术的兴起,LED行业面临着巨大的挑战。Epistar敏锐地意识到了这一点,开始积极调整战略方向,加大在OLED技术领域的研发力度。同时,公司还通过优化产品结构、提高生产效率等措施降低成本、提升竞争力。这些努力使Epistar在OLED技术浪潮中保持了稳健的发展态势。

Filtran Ltd公司的发展小趣事

随着业务规模的扩大,Filtran Ltd意识到供应链管理的重要性。公司开始在全球范围内寻找优质原材料供应商,并在亚洲和欧洲建立了生产基地,以降低成本并缩短交货周期。同时,通过引入先进的ERP系统和数字化管理工具,实现了供应链的高效协同。这一战略调整不仅提高了生产效率,还增强了公司对市场变化的快速响应能力。

Charcroft Electronics Ltd公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Charcroft Electronics Ltd公司开始积极拓展国内外市场。公司加强与国际知名企业的合作,通过参加国际电子展会、举办技术研讨会等方式,提升品牌知名度和影响力。同时,公司还针对不同地区的市场需求,推出定制化的产品和服务,进一步巩固和扩大市场份额。

Analytic Instruments Corp公司的发展小趣事

随着技术的不断成熟和产品线的不断丰富,Analytic Instruments Corp开始积极拓展市场。公司通过与行业内的知名企业和研究机构建立合作关系,成功地将产品打入多个重要的应用领域。同时,公司还加大了品牌宣传力度,通过参加行业展会、举办技术研讨会等方式,提升了品牌知名度和影响力。

问答坊 | AI 解惑

变频调速技术在三次采油中的应用

一、前言 在原油开采过程中,初次采油一般依靠地底压力让原油自喷而出;此后由于地下压力减小,不得不往地下注水将油驱出,称二次采油。当前,中国多数油田处于二次采油晚期,每百吨采出液体中,含水量高达95%,综合原油采收率只有30%多一些,6 ...…

查看全部问答>

电容漏泄的测量

电容器是几乎所有电气设备上都会用到的主要器件。漏阻是电容器被测试的众多电气特征中的一个。漏阻通常被称为“IR”(Insulation Resistance,绝缘电阻),以“兆欧-微法”表示。在其它情况下,漏泄可能被表示为特定电压(通常为工作电压)下的漏 ...…

查看全部问答>

请教代替3sk318的双栅管

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 请教各位高手,什么型号的双栅管可以代替3SK318(能直接替换最好) 谢谢! …

查看全部问答>

电动车跷跷板【F题,二等奖】

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 电动车跷跷板~~~~~~~~  …

查看全部问答>

2440 读 温度芯片,总是无法触发中断,请教有什么方法呀?

BSP包里通过应用层调用IIC文件夹不能正常工作,只好转入到bootloader层去做温度检测了,可是无论如何也不能触发中断,有经验的请指教,先谢谢了。…

查看全部问答>

Pci 网卡驱动

现在要开始搞pci网卡驱动想从Realtek 8139这个入手, 个位有甚么好的建议 linux device driver有個pci_skel框架, 不知道怎麼楊. …

查看全部问答>

LED为什么这么“热”呢?

LED为什么这么“热”呢?…

查看全部问答>

深入浅出玩转 FPGA 特权同学的 书

深入浅出玩转 FPGA  特权同学的 书   大家东清楚,不用我介绍了吧!…

查看全部问答>

有人在STM8移植uCos吗?

                                 有人在STM8移植uCos吗?…

查看全部问答>

分享-最好用的串口终端

Bray++同志写的,俺用了好多年。这是最新版。 Terminal.rar (278.15 KB) 下载次数:190 2010-10-13 20:16 …

查看全部问答>