Day1 — 前言:为什麽是 AVR?

或许看到本系列文章会产生的第一个疑问大概就是:「为什麽是 AVR?」。的确,现在潮潮都用 x86,不然就是 ARM,怎麽有人会想要讲老掉牙的 AVR?

以下是笔者想要从 AVR 学习的原因:

1. Arduino 生态圈

AVR 的一大优势在於 Arduino 的生态圈多数脱离不了 AVR,Arduino 提供了非常好的抽象,简化了繁琐的设定、编译、上传程序码等步骤,透过 IDE 操作初学者也可以轻易将程序码上传。

尽管如此,背後运作的仍然是 AVR(这里不讨论以 ARM chip 的 Arduino 开发板),更棒的是 Arduino 是开源的,任何一个人都可以上 GitHub 查看原始码。比起刚开始就直接挑战 Linux 原始码,从 AVR 开始除了程序码规模较小之外,有任何问题都可以直接使用 Arduino 实机测试。

2. 架构简单

比起 intel 或是 ARM 指令集,AVR 的指令集相对少很多,打开 Attiny85 的 datasheet 也就 120 个指令,在学习上也就相对好上手。以 Attiny85 的 datasheet 为例,整个 datasheet 也才 234 页,还算是相对好消化的范围。

3. 方便取得、操作

除了可以直接用 Arduino 来学习 AVR 之外,对於比较进阶的学习者来说也可以直接买单颗 IC 来学习。以 Attiny85 为例,只有 8 只脚而且可以直接插面包板接线,想要测试程序码运作时相对方便许多。Attiny85 只要 50 ~ 60 台币就能入手,网路上随便都买得到,比一杯饮料还便宜,烧掉也不会太心疼。

另外 AVR chip 常见的储存机制都是内建在晶片当中,只要有电源,不用外接任何设备就可以直接运作

  • flash memory
  • EEPROM
  • SRAM
  • 内部时脉

学这个有用吗?

学这个又没有实际用途,为什麽还要大费周章学?

的确,学习整个作业系统是完全不同的概念,尽管你把 AVR 的指令跟概念搞熟也不代表明天就能写 linux kernel(请右转 jserv),但这无关於有没有实际用途,而是对於事物本质运作的好奇。

因此我认为有这个想法时心态就已经完全不正确了。如同本系列的说明文一样,这是一段感谢电、感谢电晶体、感谢现代计算机组织发展的历程。

回头想想计算机的历史,发现电的存在、电晶体、积体电路、CPU 架构、半导体产业,简直就是奇蹟。能够在 21 世纪学习人类最伟大的智慧结晶,这件事情本身就已经够迷人了。

质数的存在,最刚开始也只局限在数论而已,但多年以後质数成为了密码学的重要基础,我们仰赖的加密传输,就是以质数的性质构筑而成的。这应该是那些着迷於质数的数学家们从来也没想过的吧。

因此如果真要给答案的话,本系列文章对你的职涯、写程序的功力、薪水没有任何帮助

本系列文规划

要在 30 天内讲完 AVR 的所有知识是非常困难的挑战,因此可能省略部份概念或以较为精简的文字带过,也有可能无法达成连续 30 天发文。文章有必要时会贴出参考资源,有兴趣的读者可以另外参考。

  1. 前导:电是如何产生的
  2. 前导:电晶体如何组成逻辑闸
  3. 前导:计算机当中的重要电路(暂存器、记忆体、全加器)
  4. 前导:中断
  5. 前导:准备工具
  6. 第一部份:AVR 介绍
  7. 第二部份:重要功能介绍
    1. timer/counter
    2. GPIO port
    3. ADC
  8. 第三部份:进阶功能介绍
    1. watchdog
    2. interrupt
    3. UART
    4. sleep
    5. EEPROM
  9. 第四部份:PCB 制作(如果时间许可)
    1. 电源管理模组
    2. 如何使用 KiCad
    3. 如何制作电路
    4. 如何下单并制作 PCB

<<:  unRaid安装+基本设置

>>:  Day2-D3基础介绍

Android Studio初学笔记-Day11-Checkbox

Checkbox(可复选按钮) Checkbox是可复选按钮,不同於前一章的RadioButton,...

30天学会 Python: Day 6- 你的加法不是你的加法

Python 中的字串和串列有很多相似的性质,可以想成字串是元只能是字元的串列 所以可以用索引和 S...

Day25 建立角色功能

首先建立装载角色资料的 ViewModel,因为接下来的权限会以角色判断,ASP.NET Core ...

【Day 15】- 汇率什麽的。爬! (实战汇率爬虫 on chrome)

前情提要 前一篇带各位实作了爬取 Ubuntu ISO 映像档的爬虫,并存在 JSON 档。 开始之...

[第20天]理财达人Mx. Ada-Telegram Bot-echo测试

前言 本文说明使用Python建立Telegram Bot-echo测试 。 程序实作 from t...