历史上的今天
今天是:2024年10月20日(星期日)
2021年10月20日 | ATmega8 内核介绍
2021-10-20 来源:eefocus

为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总 线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条 指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在 线编程的Flash 。
快速访问寄存器文件包括32 个8 位通用工作寄存器,访问时间为一个时钟周期。从而实 现了单时钟周期的ALU 操作。在典型的ALU 操作中,两个位于寄存器文件中的操作数同 时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。
寄存器文件里有6 个寄存器可以用作3 个16 位的间接寻址寄存器指针以寻址数据空间, 实现高效的地址运算。其中一个指针还可以作程序存储器查询表的地址指针。这些附加 的功能寄存器即为16 位的X、Y、Z 寄存器。
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器 操作。运算完成之后状态寄存器的内容得到更新以反映操作结果。
程序流程通过有/ 无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大 多数指令长度为16 位,亦即每个程序存储器地址都包含一条16 位或32 位的指令。
程序存储器空间分为两个区:引导程序区(Boot 区) 和应用程序区。这两个区都有专门的 锁定位以实现读和读/ 写保护。用于写应用程序区的SPM 指令必须位于引导程序区。
在中断和调用子程序时返回地址的程序计数器(PC) 保存于堆栈之中。堆栈位于通用数据 SRAM,因此其深度仅受限于SRAM 的大小。在复位例程里用户首先要初始化堆栈指针 SP。这个指针位于I/O 空间,可以进行读写访问。数据SRAM 可以通过5 种不同的寻址模 式进行访问。
AVR 存储器空间为线性的平面结构。
AVR有一个灵活的中断模块。控制寄存器位于I/O空间。状态寄存器里有全局中断使能位。 每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的 位置有关,中断向量地址越低,优先级越高。
I/O 存储器空间包含64 个可以直接寻址的地址,作为CPU 外设的控制寄存器、SPI,以及 其他I/O 功能。映射到数据空间即为寄存器文件之后的地址 0x20 - 0x5F。
上一篇:ATmega48 I/O存储器
下一篇:ATmega8 引脚功能
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:00 编辑 电子竞赛人应该具备的经验 1.许多人死在第一天上午,却毫无知觉. 第一天上午是一个选题的日子.一般每个组都有一个能力比较强的担任组长.往往由于缺乏经验,在方案选定上走上歧路. 到底 ...… 查看全部问答> |
|
在ceshell下的SHBindToParent函数有人能解释下如何用吗?请用中文解释,到msdn上抄袭没有意义。 在ceshell下的SHBindToParent函数有人能解释下如何用吗?请用中文解释,到msdn上抄袭没有意义。 … 查看全部问答> |
|
PPC6.1中的phonesetting中把属性页中某个原来的应用替换为我的应用,com接口是什么? PPC6.1中的phonesetting中把属性页中某个原来的应用替换为我的应用,com接口是什么? 在线等,谢谢!… 查看全部问答> |
|
QT版 finder -- 类似库文件的finder 能够查找 硬件IP 上次问过 如何查找 硬件设备的IP地址 非常感谢academic大侠的回复 今天晚上终于有时间可以来玩玩看了 硬件平台非8962板 但是 一样 的 跑lwip 于是 就将locator.c 移植到工程中区 并参考finder下的文件 用QT写了个简单小DEMO 可以辅助我的调 ...… 查看全部问答> |
|
芯片是LM4F231, ARM M4的内核,开发环境是IAR 6.3。 遇到的问题,当定义局部变量时比如 float f=1.1; 时在IAR下察看local 局部变量值时发现f变量值为 也没有分配变量地址。 对于这一问题研究了很久, ...… 查看全部问答> |
|
Senior R&D mgr recruitment 诚招研发经理 研发经理(电子工程师、软硬件研发) 因项目发展,需招研发经理一名,要求: 1、十年以上汽车电子制造行业经验(EDS/EMS); 2、英语熟练;   ...… 查看全部问答> |




