AVR扩展外部RAM,如果只扩展256字节,ICC选项里应该怎样选?【恢复】
我现在用AT64,外部只扩展256字节用于控制外部芯片在用ICC编程过程中,compiler potions中只能选择external 32k sram,或64k
不完全扩展外部ram,所以释放端口c所有引脚,设置为
XMCRB = 0x07;
我想问compiler potions中应该怎样设置,设为external 32k sram,或64k
会不会对程序有影响?
请马老师帮我看看,谢谢啦! 这个项目是你做,不是我做,我不知道你的系统到底要实现什么功能。
你问的东西我很难回答。别人也可能采用别的设计思路,如用I/O模拟并行扩展,这是硬件设计能力的体现。
学AVR、单片机不仅仅是程序设计,硬件设计能力非常重要,不能缺少,同软件相辅相成。 好惭愧啊!硬件别人的设计
“在缺省条件下,使能外部存储器之后所有的端口C 引脚都被用作高位地址。如果系统不
需要全部的60KB 外部存储器地址空间,端口C 的某些引脚可以释放,用作普通的I/O,”
不完全扩展外部ram,所以释放端口c所有引脚,设置为
XMCRB = 0x07;
那就是高八位都不用,那么这个时候应该怎样访问外部地址呢?
释放端口c所有引脚,那端口c所有引脚就可以用作他用吗?
疑问?麻烦请教马老师 要看你外部扩展接的片子接口类型,支持什么方式访问。
由于AVR的并行扩展方式是通常标准的并行扩展,A口地址数据复用,因此还需要573芯片等。高位PC为地址线,当然需要使用了。
你好象硬件基础没有。 谢谢马老师!
我还有一个问题,我现在使用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
麻烦马老师帮我看下,谢谢了! 马老师,我还有个问题
前面先引用下
我现在用AT64,外部只扩展256字节用于控制外部芯片
在用ICC编程过程中,内部ram
不完全扩展外部ram,所以释放端口c所有引脚,设置为
XMCRB = 0x07;
那么,外部的0x1100-0x11FF 空间我该怎么访问呢?
我现在的设置是
#define CR1 (*(volatile unsigned char *)0x1100)
但是我外扩的数据位只有8位,pcn高8位没用,硬件上没有连接,那么我能直接给CR1赋值吗?(我现在仿真是不行的)
是不是应该换个方式设置外部扩展的地址呢?
麻烦马老师看下 你的理解是对的,但不能访问我也没有办法,先要肯定硬件正确,AVR能写出数据。 自己写汇编当然可以。用C要注意,因为你如果定义的变量和数组大的话,编译器会使用外部RAM(因为你设置了外部RAM)。
建议你在ICC中不要设置使用外扩,这样编译器不会使用外部RAM空间。但注意:你自己代码的初始化时,要正确设置MCU寄存器,使用外部并行扩展。 哦
我是映射在32k区域
扩展的地址是0x1100-0x11FF
能不能把这个区域为专用的变量使用,不让其他变量访问
我现在的设置是
#define CR1 (*(volatile unsigned char *)0x1100)
.
.
.
#define CRn (*(volatile unsigned char *)0x11FF)
请问马老师这样可以让CRn这些变量独享这些地址吗?(其他变量不会使用这些地址。) 看你的256个地址影射在RAM空间的那段区域了。在32K之内的,就使用32K,在32K之外的,应该使用64K mark
页:
[1]