实验五 CC2530平台上ADC组件的TinyOS编程
实验五 CC2530平台上ADC组件的TinyOS编程
实验目的:
- 加深和巩固学生对于TinyOS编程方法的理解和掌握
- 让学生初步掌握传感器的ADC组件应用方法
- 学生通过本实验能够初步的了解和掌握CC2530平台上传感器的连接方法,及TinyOS编程方法
- 提高学生的上机和编程过程中处理具体问题的能力
实验要求:
- 实验要求自己独立的完成;
- 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
- 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
- 实验完成后,要上交实验报告。
实验内容:
- 开发一个新的应用,每秒钟获取一次传感数据。以下述顺序完成这个新应用的开发。
- 首先使得应用能够以1秒为周期获取电压及芯片内部温度;
- 然后在上述基础上通过光敏传感器获取光照强度值。
- 在实验报告中分别给出上述两个阶段的源码。
实验代码:
(1)配置文件TestAdcC.nc
configuration TestAdcC
{
}
implementation
{
components TestAdcM as App;
components MainC ;
App.Boot -> MainC.Boot;
components PlatformLcdC;
App.Lcd->PlatformLcdC.PlatformLcd;
App.LcdInit->PlatformLcdC.Init;
components new TimerMilliC() as Timer1;
App.Timer1 -> Timer1;
components new AdcC() as Ad;
App.AdControl->Ad;
App.AdRead->Ad;
}
(2)模块文件TestAdcM.nc
#include "ADC.H"
module TestAdcM
{
uses interface Boot;
uses interface PlatformLcd as Lcd;
uses interface Init as LcdInit;
uses interface AdcControl as AdControl;
uses interface Read<int16_t> as AdRead;
uses interface Timer<TMilli> as Timer1;
}
implementation
{
#define VDD 33
uint16_t m_val;
task void CalcVolt()
{
unsigned char s[16];
m_val = ((float)m_val / (float)0x1FFF) *VDD;
sprintf(s, (char*)"%d.%d V", m_val/10, m_val%10);
call Lcd.PutString(60,20,s);
}
event void Boot.booted()
{
call LcdInit.init();
call Lcd.ClrScreen();
call Lcd.FontSet_cn(1,1);
call Lcd.PutString_cn(0,20,"电压为 ");
call AdControl.enable(ADC_REF_AVDD,ADC_12_BIT,ADC_AIN7);
call Timer1.startPeriodic(1024);
call Lcd.FontSet(1,1);
}
event void AdRead.readDone(error_t result, int16_t val)
{
m_val=val;
post CalcVolt();
}
event void Timer1.fired()
{
call AdRead.read();
}
}
(3)makefile 编译文件
COMPONENT=TestAdcC
include $(MAKERULES)
实验环境:
- 上位机操作系统为WindowsXP,在Cygwin环境下编译
- 集成开发环境为Notepad++
实验报告人:木舟 报告时间:2018.11.16
实验五 CC2530平台上ADC组件的TinyOS编程的更多相关文章
- 实验四 CC2530平台上UART组件的TinyOS编程
实验四 CC2530平台上UART组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530的UART.及其TinyOS编程方法 学生通过本实验 ...
- 第二次实验:CC2530平台上GPIO组件的TinyOS编程
实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...
- 实验六 CC2530平台上P2P通信的TinyOS编程
实验六 CC2530平台上P2P通信的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的掌握射频通信TinyOS编程方法 学生通过本实验应理解TinyOS中 ...
- 实验三 CC2530平台上CC2530平台上定时器组件的
实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...
- 第一次实验: CC2530平台上电源管理与休眠
实验一 CC2530平台上电源管理与休眠 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的认识TinyOS编程的基础和简单的程序编写 学生通过本实验能够初步的了解和掌握Ti ...
- 2017-2018-2 1723《程序设计与数据结构》实验四 & 实验五 & 课程总结 总结
作业地址 实验四作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1943 提交情况如图: 实验五作业:https://edu ...
- 2017-2018-2 20155228 《网络对抗技术》 实验五:MSF基础应用
2017-2018-2 20155228 <网络对抗技术> 实验五:MSF基础应用 1. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需 ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- 2017-2018-2 20155225《网络对抗技术》实验五 MSF基础应用
2017-2018-2 20155225<网络对抗技术>实验五 MSF基础应用 ms08_067 用search命令,搜索与ms08_067相关的模块,如图: 找到了对应的攻击模块expl ...
随机推荐
- 开源HUSTOJ
hustoj -- 请一定认真看完本页再动手安装,以免无谓的折腾!====== 根据你选择的发行版不同,从下面三个脚本里选一个来用. <b>不要相信百度来的长篇大论的所谓教程,那些都是好几 ...
- Intellij Idea 解决字符乱码、设定颜色主题、字体
1.写入字符编码设置 2.调整mintty 字体.主题
- C# [Win32] [API] Layered Windows
static void* WndProc(void* hwnd, uint uMsg, void* wParam, void* lParam) { switch (uMsg) { case WM_PA ...
- PHP运算符知识
1.三目运算符: $a =1; echo $a>0 ? '大于0':$a==0 ? '等于0':'小于0'; 貌似应该输出:大于0 其实: 然而,上面语句的实际输出是't',因为三元运算符是从左 ...
- # -*- coding: utf-8 -*-
-- coding: utf-8 -- import scrapy from jobscrawler_qianchengwuyou.items import JobscrawlerQianchengw ...
- Collections集合工具类
一.Collection与Collections Collection 是所有单列集合的根接口 Collection 是操作集合的工具类 二.Collections中常见的方法:(大都是static方 ...
- 开发工具IntelliJ IDEA的安装与操作
开发工具IntelliJ IDEA的安装与操作 1.1 开发工具概述 IDEA是一个专门针对Java的集成开发工具(IDE),它可以极大地提升我们的开发效率.可以自动编译,检查错误.在公司中,使用的就 ...
- 用vector与bitset分别创建1亿以内的素数表,比较快慢
vector容器: 代码如下: #include<iostream>#include<vector>#include<ctime>using namespace s ...
- CentOS7.4+OpenStack-Queens版本部署
一.准备工作.网络选择NAT 创建两台虚拟机:linux-node1.linux-node2 node1: 修改主机名 [root@localhost ~]# hostnamectl set-host ...
- js 判断变量是否为空或未定义
判断变量是否定义: if(typeof(hao) == "undefined"){ //未定义 }else{ //定义 } 判断变量是否为空或NULL,是则返回'', 反之返回原对 ...