终于完成精简系统了,使用avr m8,电路板大概火柴盒大小,实现的功能如下:
/********************************************************
* 项目说明: yaesu gs232a 控制器 *
* 版本: v1.0 *
* cpu : m8l *
* 主频: 内部8m *
* 串口: 4800bps *
* 作者: 胡云杰(ba6iv) *
* 日期: 2010年2月10日 *
* 修改: 胡云杰(ba6iv) *
* 修改日期: 2010年2月10日 *
* *
* 说明: *
* 串口rx pd0 *
* 串口tx pd1 *
* 串口指示led pd2 *
* 旋转器工作指示led pd3 *
* 正传控制端口 pd5 *
* 反转控制端口 pd6 *
* 角度ad输入 pc0 *
* 控制器校准开关 pc5 *
********************************************************/
/********************************************************
* 程序版权声明 *
*-------------------------------------------------------*
* 程序版权归作者 胡云杰(ba6iv)所有。使用者必须遵循开 *
*源协议。你可以免费: 拷贝、分发、修改和演示本程序,制作派*
*生程序,但是不得移除程序版权标识。 *
* 非商业用途。 你不可将当前程序用于商业目的。 *
* 胡云杰(ba6iv) *
********************************************************/
/********************************************************
程序修改记录
---------------------------------------------------------
2010.2.10
移植了原来的m16l系统,精简了预置位、lcd602、音频提示
等模块以及部分全局变量,保留了角度校准、方向控制、串口命
令解析、eeprom模块,增加了板上isp下载接口、部分功能的led
指示。系统延续了m16l系统的使用2ms中断函数作为系统的系统
时钟。
构建了系统框架,规划了系统资源的使用,用到串口接收中
断、串口查询发送、定时器0、定时器1、ad通道7 10bit精度采
样等系统资源。
定义了系统需要的全局变量以及预定义符号;定义了基本系
统数据处理函数。
当前系统可完成的功能:
1、正确读取转向器的角度电压值并换算成实际角度数值;
2、正确接收pc发送的串口指令并作出回应;
3、手动校准、pc校准两用。
串口命令解析放到了2ms中断里以保证对串口发送的命令
作出及时的反应。同时取消了void uart_data_process (void)
串口命令处理函数。增加了一个全局变量tx_az天线方位发送使
能标志。
eerom模块,用于关键系统参数的掉电保存,下次系统启动
时直接提取即可。
保存变量 数据类型 eeprom地址
az_0 unsigned int 0x0001
az_180 unsigned int 0x0003
az_360 unsigned int 0x0005
az_step unsigned int 0x0007
az_dev unsigned char 0x0009(本系统已取消方向精度变量)
在系统初始化时读出eeprom的内容并赋值全局变量。
2010.2.11
加入了旋转器工作指示灯和串口工作指示灯。
led1 串口工作指示灯
led2 旋转器工作指示灯
手动校准:
系统开机后按下校准键2秒后led闪烁20次进入方位校准程序,将旋转
器旋转到起始位置0度(rc5a-3为逆时针转到180度),短按一下校准键后
led闪烁10次表示已将0度数据保存完毕。将旋转器旋转到起始位置180度
(rc5a-3为顺时针转到0度),短按一下校准键后led闪烁10次表示已将
180度数据保存完毕。将旋转器旋转到起始位置360度(rc5a-3为顺时针转
到180度),短按一下校准键后led闪烁10次表示已将360度数据保存完毕。
手动校准时应等旋转器到达校准位置停止后ad电压稳定一段时间后再
按键保存当前ad数据到eeprom,以确保数据准确。
计算机校准:(推荐使用)
使用计算机对系统的方位角进行校准,简单直观,推荐使用。使用前
需要控制器连接好电脑和旋转器。打开串口调试软件,打开相应的串口,
通讯速率为4800,以十六进制格式发送串口命令,通过简单的命令即可迅
速将旋转器的角度校准。命令成功发送或执行后串口led指示灯会闪烁5次。
串口命令表
---------------------------------------------------
25 0d 显示0 180 360以及当前的ad值
向控制器发送该命令后系统会向串口返回0 180 360以及当前的ad值,
用于查看方位校准的各项参数,各参数为无符号整型数,高位在前,低位
在后,参数之间用0xff分隔开,末尾已0d结尾。
---------------------------------------------------
23 n1 n2 n3 n4 0d 设置0 180 360以及az_step的ad值
向控制器发送该命令后系统会以命令中的参数替换设置az_0、az_180、
az_360和az_step的值,替换后立即生效,用户可以马上进入用户程序查看
方位角度的校准情况,方位不准的话可返回再次设置。
n1 az_0 两字节无符号整型
n2 az_180 两字节无符号整型
n3 az_360 两字节无符号整型
n4 az_step 两字节无符号整型
az_step可通过手工计算获得,公式为:
az_step = ((az_360-az_0)*64)/360
---------------------------------------------------
24 0d 保存0 180 360以及az_step的ad值到eeprom
向控制器发送该命令后系统会将全局变量az_0、az_180、az_360和
az_step的值保存到eeprom的指定位置,实现断电后的系统关键数据保存,
每次控制器上电后都将读取指定位置的eeprom数据赋值给全局变量az_0、
az_180、az_360和az_step!?
---------------------------------------------------
********************************************************/
电路图以及单片机烧录文件如下(比较简单,用洞洞板搭一个就行了):