搜索
bottom↓
回复: 9

充分发挥单片机,急需请高手指点!

[复制链接]

出0入0汤圆

发表于 2011-7-21 13:44:50 | 显示全部楼层 |阅读模式
单片机如同一名员工而程序员则好像是它的领导,怎样才能让单片机有序的而又不冲突完成“领导”(程序员)下达的任务,对于我来讲现在还没有摸透!

例如在做姿态解算时,陀螺、加速度计、AD、以及数据处理及输出

朋友们一起讨论下吧,怎样安排才能充分的利用或发挥单片机的性能!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-7-21 16:52:40 | 显示全部楼层
基本的思想是:分时,不能阻塞单片机,具体的实现与实际项目有关

出0入42汤圆

发表于 2011-7-21 16:54:49 | 显示全部楼层
上操作系统呀

出0入0汤圆

 楼主| 发表于 2011-7-21 18:53:49 | 显示全部楼层
操作系统 似乎不大现实 资源 本来资源就不富裕
分时 有点不太懂 就例如做姿态结算这种 数据处理及高刷新率输出

出0入0汤圆

发表于 2011-7-22 00:48:21 | 显示全部楼层
while(i)i--;
这应该是课本上害人最深刻的语句了……

lz去理解一下如何用定时器,而不是while。然后去理解一下状态机就可以了。
其实思路很简单,能让中断完成的,就让中断去完成它,对时序要求高的,尽早连续地去做,其他计算插空算

比如你提取传感器数据,如果是模拟的,就给ad中断去提取。然后内核去查询状态即可。
比如你要输出pwm 信号,就用定时器中断来做,不会影响内核的。至于姿态计算,跟中断不冲突啊

出0入0汤圆

 楼主| 发表于 2011-7-22 01:53:46 | 显示全部楼层
谢楼上讲解 我已有所感悟但你所说的 内核是什么?main ()?

出0入0汤圆

发表于 2011-7-22 08:55:04 | 显示全部楼层
告诉楼主:采用多任务非抢占式轮训的架构。由一个定时中断统一“领导”;

出0入0汤圆

 楼主| 发表于 2011-7-22 11:20:19 | 显示全部楼层
你的意思是说 关闭其他中断 或者说在main()中执行的语句放在定时器中断内完成 对吗?

出0入0汤圆

发表于 2011-7-27 09:14:57 | 显示全部楼层
可以考虑这样,51的代码

void mainc(void)
{
    while(1)
    {
        while(!F10MS);
        F10MS = 0;
        ...
    }
}

如果速度够快的话,就5MS跑一次主程序,然后可以在等待定时标志的时候插入一些对时间比较不敏感的代码,比如LED切换等,但执行时间不要太长.
中断尽量不要用C的中断编写方式,因为那可能会占用比较多的堆栈以及增加不必要的代码执行时间,

然后中断里面这样做

USING 1

CSEG AT 0x000B
;/***************************************************************************************
;定时器0溢出中断向量
;***************************************************************************************/
    PUSH   PSW                              ;
    PUSH   ACC                              ;保护现场
   
    SETB   RS0                              ;使用第1组工作组寄存器
    ...
    ;定时中断服务程序
    DJNZ   cnt_10ms,exit_int                ;10mS计时
    MOV    cnt_10ms,#TMR_SET_10MS           ;
    SETB   F10MS                            ;10mS标志
exit_int:
    POP    ACC                              ;恢复现场
    POP    PSW                              ;
    RETI                                    ;

启动代码
;/***************************************************************************************
;段声明
;***************************************************************************************/
MYCODES SEGMENT CODE                        ;代码段

;/***************************************************************************************
;引入的外部函数/变量
;***************************************************************************************/
EXTRN CODE(mainc)                           ;C代码入口

DSEG AT    0x70                     
;/***************************************************************************************
;定义堆栈空间
;***************************************************************************************/
MYSTACKS:                DS     16          ;预留16个字节作为堆栈空间

CSEG AT 0x0000
;/***************************************************************************************
;RAM初始化
;***************************************************************************************/
    MOV    R0,#0x7F      ;2
    MOV    @R0,#0x00     ;2
    DJNZ   R0,$ - 2      ;2
    LJMP   START         ;3
   
RSEG MYCODES
;/***************************************************************************************
;系统初始化
;***************************************************************************************/
START:
    MOV    SP,#MYSTACKS                     ;设置堆栈指针
   
    MOV    TMOD,#0x02                       ;设置定时器
    ;MOV    TL0,#(256 - 125)                 ;省略,由TH0载入
    MOV    TH0,#(256 - 125)                 ;125uS溢出时间常数
   
    ...
    ;其他初始化   
    MOV    IE,#0x82                         ;开启中断,启动定时器
    SETB   TR0
   
    LJMP   mainc                            ;C代码入口

出0入0汤圆

发表于 2011-7-29 13:45:50 | 显示全部楼层
用状态机描述,再写程序!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 06:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表