搜索
bottom↓
回复: 5

ATmega16都DM9000c的ID

[复制链接]

出0入0汤圆

发表于 2012-11-19 10:51:53 | 显示全部楼层 |阅读模式
我在网上买了一个DM9000c的网络通信模块,想用ATmega16先来读下DM9000c的ID,可是老读不出来.
代码是参考网店老板给的代码,具体的代码如下:
#include<iom16v.h>
#include<macros.h>

#define        PWRST_SET    (PORTA=PORTA | 0x01)    //复位端口         PA0
#define        CS_SET       (PORTA=PORTA | 0x02)    //片选端口              PA1
#define        CMD_SET             (PORTA=PORTA | 0x04)    //数据/命令        PA2          
#define        IOW_SET             (PORTA=PORTA | 0x08)    //写数据                PA3
#define        IOR_SET             (PORTA=PORTA | 0x10)    //读数据                PA4                                                                  
                                                                    
#define        PWRST_CLR    (PORTA=PORTA & 0xFE)    //复位端口         PA0
#define        CS_CLR       (PORTA=PORTA & 0xFD)    //片选端口              PA1
#define        CMD_CLR             (PORTA=PORTA & 0xFB)    //数据/命令        PA2                  
#define        IOW_CLR             (PORTA=PORTA & 0xF7)    //写数据                PA3
#define        IOR_CLR             (PORTA=PORTA & 0xEF)    //读数据                PA4



void mdelay (int m)
{
        int i;
        for (;m > 0; m--)
                for (i = 0; i < 1000; i++);
}

void port_init(void)   //ATmega16引脚的初始化
{
        DDRA=0xff;   // 设置PA为输出,初始为高电平
        PORTA=0xff;  

        DDRB=0xff;   // 设置PB为输出,初始为高电平
        PORTB=0xff;  
         
        DDRC=0xff;   // 设置PC为输出,初始为高电平
        PORTC=0xff;
       
        DDRD=0xff;   // 设置PD为输出,初始为高电平
        PORTD=0xff;

}  

void dm9000_write (unsigned char reg, unsigned char date)
{
    DDRD=0xff;
        PORTD = reg;
        CS_CLR;
        CMD_CLR;
        IOR_SET;
        IOW_CLR;
        mdelay(1);
        CS_SET;
        IOW_SET;
        mdelay(2);
        DDRD=0xff;
        PORTD = date;
        CS_CLR;
        CMD_SET;
        IOR_SET;
        IOW_CLR;
        mdelay(1);
        CS_SET;
        IOW_SET;
}

unsigned char dm9000_read (unsigned char reg)
{
        unsigned char date = 0;

        DDRD=0xff;
        PORTD = reg;
        CS_CLR;
        CMD_CLR;
        IOR_SET;
        IOW_CLR;
        CS_SET;
        IOW_SET;
        DDRD=0x00;
        PORTD = 0xff;
        CS_CLR;
        CMD_SET;
        IOW_SET;
        IOR_CLR;
        date = PORTD;
        PORTD = date;
        CS_SET;
        IOR_SET;

        return date;
}

void main (void)
{
        unsigned int date = 0;
        port_init();
       
        PORTB=0x00;
        PWRST_CLR;
        mdelay(5000);
        PWRST_SET;
        mdelay(5000);
        PWRST_CLR;
        mdelay(5000);
        PWRST_SET;
        mdelay(5000);
        PORTB=0xff;       
        mdelay(5000);
       
        date = dm9000_read (0x28);
        if (date == 0x46)
                date = dm9000_read (0x29);
        else
                while(1);
        if (date == 0x0A)
                date = dm9000_read (0x2A);
        else
                while(1);
        if (date == 0x00)
                date = dm9000_read (0x2B);
        else
                while (1);
        if (date == 0x90)
           {
            PORTB=0x00;
                while(1);
       }
        else
                while (1);
                       
}

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

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

出0入0汤圆

 楼主| 发表于 2012-11-19 10:53:58 | 显示全部楼层
感觉可能是读写时序上的问题,可是不知道怎么改,有哪位知道吗?

出0入0汤圆

发表于 2012-11-19 10:59:06 | 显示全部楼层
找找DM9000c datasheet 先好好研读一下

出0入0汤圆

 楼主| 发表于 2012-11-19 11:01:37 | 显示全部楼层
有看过了!上面读写时序是ns级的,不知道有11.05926兆的晶振是否可以。

出0入0汤圆

发表于 2012-11-19 11:23:50 | 显示全部楼层
那一条指令的时间都超过80ns了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 07:23

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

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