搜索
bottom↓
回复: 10

AVR扩展外部RAM,如果只扩展256字节,ICC选项里应该怎样选?【恢复】

[复制链接]

出0入0汤圆

发表于 2009-1-13 16:50:29 | 显示全部楼层 |阅读模式
我现在用AT64,外部只扩展256字节用于控制外部芯片

在用ICC编程过程中,compiler potions中只能选择external 32k sram,或64k

不完全扩展外部ram,所以释放端口c所有引脚,设置为

 XMCRB = 0x07; 

我想问compiler potions中应该怎样设置,设为external 32k sram,或64k

会不会对程序有影响?

请马老师帮我看看,谢谢啦!

出0入0汤圆

发表于 2009-1-21 14:39:09 | 显示全部楼层
这个项目是你做,不是我做,我不知道你的系统到底要实现什么功能。



你问的东西我很难回答。别人也可能采用别的设计思路,如用I/O模拟并行扩展,这是硬件设计能力的体现。



学AVR、单片机不仅仅是程序设计,硬件设计能力非常重要,不能缺少,同软件相辅相成。

出0入0汤圆

 楼主| 发表于 2009-1-21 11:16:48 | 显示全部楼层
好惭愧啊!硬件别人的设计



“在缺省条件下,使能外部存储器之后所有的端口C 引脚都被用作高位地址。如果系统不

需要全部的60KB 外部存储器地址空间,端口C 的某些引脚可以释放,用作普通的I/O,”



不完全扩展外部ram,所以释放端口c所有引脚,设置为  

 XMCRB = 0x07; 



那就是高八位都不用,那么这个时候应该怎样访问外部地址呢?



释放端口c所有引脚,那端口c所有引脚就可以用作他用吗?

疑问?麻烦请教马老师

出0入0汤圆

发表于 2009-1-20 14:48:20 | 显示全部楼层
要看你外部扩展接的片子接口类型,支持什么方式访问。



由于AVR的并行扩展方式是通常标准的并行扩展,A口地址数据复用,因此还需要573芯片等。高位PC为地址线,当然需要使用了。



你好象硬件基础没有。

出0入0汤圆

 楼主| 发表于 2009-1-16 09:21:51 | 显示全部楼层
谢谢马老师!

我还有一个问题,我现在使用AT64控制winbond 的w9968cf芯片(图像压缩编码),它在datasheet中有这样的描述

The W9968CF internal registers occupy 256-byte microcontroller address space. A special base

address (BA) setup mechanism, described as followed, is designed for the microcontroller to configure

base address for the W9968CF internal register access:

1 assert hardware reset.

2 write the key, "!" "!" "W" "9" "9" "6" "7" "!" in ASCII code, to the port xx00H.

3 the port address, xx00H, then will be used as Base Address (BA) for the microcontroller

access.

我想问下第2点是什么意思,to the port xx00H.是向xx00H.这个地址连续写key吗?

因为我总线扩展的区域是0x1100-0x11FF ,我把xx00H设置为0x1100,我向0x1100H连续写了"!" "!" "W" "9" "9" "6" "7" "!",但是还是访问不到W9968CF internal registers

麻烦马老师帮我看下,谢谢了!

出0入0汤圆

 楼主| 发表于 2009-1-20 09:38:32 | 显示全部楼层
马老师,我还有个问题

前面先引用下



我现在用AT64,外部只扩展256字节用于控制外部芯片 

在用ICC编程过程中,内部ram

不完全扩展外部ram,所以释放端口c所有引脚,设置为 

 XMCRB = 0x07;



那么,外部的0x1100-0x11FF 空间我该怎么访问呢?

我现在的设置是

#define CR1        (*(volatile unsigned char *)0x1100) 

但是我外扩的数据位只有8位,pcn高8位没用,硬件上没有连接,那么我能直接给CR1赋值吗?(我现在仿真是不行的)

是不是应该换个方式设置外部扩展的地址呢?

麻烦马老师看下

出0入0汤圆

发表于 2009-1-16 10:42:29 | 显示全部楼层
你的理解是对的,但不能访问我也没有办法,先要肯定硬件正确,AVR能写出数据。

出0入0汤圆

发表于 2009-1-15 13:18:28 | 显示全部楼层
自己写汇编当然可以。用C要注意,因为你如果定义的变量和数组大的话,编译器会使用外部RAM(因为你设置了外部RAM)。



建议你在ICC中不要设置使用外扩,这样编译器不会使用外部RAM空间。但注意:你自己代码的初始化时,要正确设置MCU寄存器,使用外部并行扩展。

出0入0汤圆

 楼主| 发表于 2009-1-15 08:58:42 | 显示全部楼层
哦 

我是映射在32k区域

扩展的地址是0x1100-0x11FF

能不能把这个区域为专用的变量使用,不让其他变量访问

我现在的设置是

#define CR1        (*(volatile unsigned char *)0x1100)

.

.

.

#define CRn        (*(volatile unsigned char *)0x11FF)

请问马老师这样可以让CRn这些变量独享这些地址吗?(其他变量不会使用这些地址。)

出0入0汤圆

发表于 2009-1-14 12:33:24 | 显示全部楼层
看你的256个地址影射在RAM空间的那段区域了。在32K之内的,就使用32K,在32K之外的,应该使用64K

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-9 04:39

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

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