📄 reacme.txt
字号:
本程序目标MCU:MEGA8 晶振:内部RC(INT) 8MHZ
程序主要结构:
(1)Mega8 1#
通过UART与计算机进行RS232通信。
MCU选择合适的PWM输出,经OPA转换,变换为DAC。
Timer0定时器用来进行周期性的检测,主要包括检测Uart接受数据后判断状态字。形成一个任务的FIFO。
可使用INT0/INT1按键改变DAC输出电压大小,采用中断方式。
通过TWI总线,将UART接收的数据发送到Mega8 2#上。
TCXO振荡电路中的3个热敏电阻,可通过ADC进行12为AD转换,通过UART发送到PC端。
(2)Mega8 2#
通过TWI接收Meag8 1#的数据,并根据要求可返回数据。
将接收的数据,通过8位LED数码管显示出来,每位数字(char)均采用3位BCD码显示。内部有32个LED数码 管缓冲区,进行循环显示。
(2)TCXO振荡部分
采用Collpits振荡电路,使用varactor调频。varactor电压通过DAC(实际是PWM)施加上。
内部温度通过3个热敏电阻进行测试。
备注:
振荡频率修正参数不在EEPROM的0x1ff0中,使用PonyProg测试OSCCAL后已经写入
由于开发板CtrlBody部分SPI接口已经损坏,在使用串口进行ISP中,注意不要修改了OSCCAL参数,否则可能出现串口与PC通信时故障(不过后来写了一个“测试MegaOSCCAL”,可测试出来,注意选择中间一点的参数)
以下内容为TWI实现的基本中断机制:
字节写过程:
主机在正常程序中发送Start信号,产生如下中断及动作:
主机中断号 主机中断动作 从机中断号 从机中断动作
START 发送:SLA+W SR_SLA_ACK 发送:MT_ACK
MT_SLA_ACK 发送:DATA(ROM地址Index) SR_DATA_ACK 接收:DATA,发送:MT_ACK
MT_DATA_ACK 发送:DATA(ROM数据 SR_DATA_ACK 接收:DATA,发送:MT_ACK
MT_DATA_ACK 发送:STOP SR_STOP_RESTART 发送:MT_ACK
字节读过程:
主机在正常程序中发送Start信号,产生如下中断及动作:
主机中断号 主机中断动作 从机中断号 从机中断动作
START 发送:SLA+W SR_SLA_ACK 发送:MT_ACK
MT_SLA_ACK 发送:DATA(ROM地址Index) SR_DATA_ACK 接收:DATA,发送:MT_ACK
MT_DATA_ACK 发送:(Re)Start SR_STOP_RESTART 发送:MT_ACK
RE_START 发送:SLA+R ST_SLA_ACK 发送:MT_NACK、(LAST)DATA
MR_SLA_ACK 发送:MT_NACK ST_LAST_DATA_ACK 发送:MT_ACK
MR_DATA_NACK 接收:数据,发送:STOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -