哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ATmega芯片以及I/O引腳的簡單說明

454398 ? 來源:工程師吳畏 ? 2019-07-31 09:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原理圖

ATmega芯片以及I/O引腳的簡單說明

AVR Core

大多數(shù)ATmega設(shè)備的核心是AVR CPU,它被描述為RISC型CPU。然而,盡管是RISC CPU,AVR內(nèi)核可以說非常強大,并且與競爭器件(例如Microchip PIC系列)相比具有許多優(yōu)勢。

例如,AVR內(nèi)核包含通用的8位寄存器可以配對為內(nèi)存位置創(chuàng)建16位指針。此外,AVR內(nèi)核有超過130條指令,其中許多是單周期的(由于一級管道),并且沒有方案。

然而,AVR設(shè)備特別容易發(fā)生磚塊化用戶開始使用保險絲(特定芯片選項),這就是為什么強烈建議您手頭有多個AVR設(shè)備。 AVR器件的另一個問題是如果沒有購買官方編程器,他們很難進行芯片編程(例如與PICKIT3相比)。

盡管如此,AVR已成為最流行的微控制器之一,謝謝Arduino的發(fā)明,其核心包含ATmega。事實上,Arduino只是一個AVR微控制器,帶有一些特殊的啟動加載代碼和一個USB轉(zhuǎn)串口轉(zhuǎn)換器

以下是典型ATmega器件的內(nèi)部架構(gòu)(在我們的例子中,ATmega168) 。

I/O端口

了解微控制器的內(nèi)部工作情況很好,但知道如何讓芯片與外界交流是很好的。大多數(shù)微控制器(如果不是全部)都包含引腳,允許器件讀取和寫入外部電路的數(shù)字值。例如,LED可以連接到I/O(帶有串聯(lián)電阻),這將允許微控制器打開和關(guān)閉LED。另一個例子是一個開關(guān),它可以連接在引腳和電源之間,微控制器可以在檢測到開關(guān)被按下時執(zhí)行動作。

當然,微控制器可以連接到幾乎任何電路,并以您可能想象的任何方式與它進行交互。但要做到這一點,我們需要了解I/O端口如何在AVR設(shè)備上工作以及如何正確使用它們!

I/O端口包含三個寄存器:

DDRx - 端口x的數(shù)據(jù)方向寄存器

PINx - 從端口x讀取

PORTx - 寫入端口x

數(shù)據(jù)方向寄存器

數(shù)據(jù)方向寄存器(DDR)很可能是您配置的第一個寄存器,因為DDR寄存器確定特定端口上的引腳是輸入還是輸出。 DDR寄存器長8位,每個位對應(yīng)I/O端口的引腳。

例如,DDRB的第一位(位0)將決定PB0是輸入還是輸出,最后一位(第7位)將確定PB7是輸入還是輸出。

在PIC器件中,值1用于輸入,值0用于輸出,但對于AVR器件則反之亦然; 1表示輸出,0表示輸入。因此,假設(shè)我們想要將PORT B上的所有引腳配置為輸出,我們只需使用以下代碼:

DDRB = 0xFF;

DDRB = 0b11111111;

第一個示例使用十六進制,而第二個示例使用二進制。雖然通常的做法是使用十六進制,但二進制版本可以更清楚地將端口中的哪些位用作輸入或輸出。如果我們想將PORT B上的所有引腳轉(zhuǎn)換為輸入引腳,那么我們可以使用。。.。。.

DDRB = 0x00;

DDRB = 0b00000000;

更復(fù)雜的事情怎么樣?假設(shè)您希望前兩個引腳為輸出(PB0和PB1),其余引腳為輸入。以下代碼可以解決這個問題:

DDRB = 0x03;

DDRB = 0b00000011;

PINx寄存器

我們的DDR寄存器排序out,是時候?qū)W習(xí)如何從現(xiàn)實世界中將數(shù)字值讀入微控制器。這是使用寄存器PINx完成的,其中x是要讀取的寄存器。從端口讀取相當容易,如下面的代碼示例所示:

dataValue = PINB;

執(zhí)行此操作時,PORT B上的所有引腳都被讀入dataValue,并且dataValue中的每個位現(xiàn)在將對應(yīng)于讀取時每個引腳上的數(shù)字電平。雖然這可能很有用,但我們有時可能希望同時測試單個位而不是所有位。在PIC中,.bits成員可用于訪問各個位,但AVR設(shè)備不是這種情況。相反,訪問單個位涉及一些操作(原諒雙關(guān)語),包括使用邏輯AND,OR和XOR。

要測試一個位是否打開(邏輯1),以下兩個可以使用語句。這些函數(shù)對PIN寄存器和位執(zhí)行邏輯AND(表示為8位數(shù))。如果結(jié)果為零,則不會執(zhí)行if語句,因為if語句僅在條件為非零時執(zhí)行。第一個語句使用二進制值來表示要測試的位,而第二個語句使用邏輯移位指令來創(chuàng)建位掩碼,該掩碼表示要測試的位。邏輯移位版本可以說更具可讀性,因此更容易理解。但是,執(zhí)行該指令可能需要比第一次更長的時間(取決于優(yōu)化)。

if(PINB&(0b00000001))

if(PINB&(1 《

在主要測試(?。?/p>

if(?。≒INB&(0b00000001)))

或《之前使用否定運算符可以輕松地測試邏輯0 br》 if(!(PINB&(1 《

PORTx寄存器

現(xiàn)在我們可以讀取整個端口和各個引腳,我們?nèi)绾螌懭攵丝诤蛦蝹€引腳?這是PORTx寄存器的用武之地。寫入該寄存器(其中x表示要寫入的端口)將導(dǎo)致輸出引腳打開或關(guān)閉。請記住,物理輸出引腳只有與PORTx寄存器IF對應(yīng)的數(shù)字電平,只有相應(yīng)的DDR位被設(shè)置為輸出!

將值寫入端口非常容易:

PORTB = 0xFF;

PORTB = 0b11111111;

但個別位怎么樣?這再次使用按位運算符完成,并且設(shè)置/清除位稍微復(fù)雜一些。這是因為我們需要保留PORT寄存器中其他位的值,否則它們可能會被更改,如果它們連接到外部設(shè)備(如LED,顯示器,IC等),可能會導(dǎo)致意外行為。

要打開特定位,我們可以使用OR邏輯運算符:

PORTB = PORTB | (0b00000001);打開位0

PORTB = PORTB | (1 《

要關(guān)閉特定位,我們使用AND運算符和NOT運算符(?):

PORTB = PORTB& ?(0b00000001);關(guān)閉位0

PORTB = PORTB& ?(1 《

要切換一點(以便它與以前相反)我們可以使用XOR運算符:

PORTB = PORTB ^(0b00000001);切換位0

o r

PORTB = PORTB ^(1 《

引腳名稱

使用數(shù)字來表示引腳可能會導(dǎo)致某些不可讀代碼,這就是為什么WinAVR足夠好,可以包含一些我們可以使用的定義。請參閱以下示例:

PORTB = PORTB& ?(1 《

如果(PINC&(1 《

一個簡單的例子

在我們的例子中,我們將制作一個電路當按下連接到PD1的開關(guān)時,切換連接到PD0的LED。

/*

* AVR IO.c

*

* Created: 03/01/2018 11:25:21

* Author : RobinLaptop

*/

#define F_CPU 1000000UL

#include

#include

int main(void)

{

// Configure PORT D bit 0 to an output and bit 1 to an input

DDRD = 0b00000001;

// Main program loop

while (1)

{

// Wait until the switch found on PIND1 (bit 1)

if(PIND & (1 《《 PIND1))

{

// Toggle the LED found on PIND0

PORTD = PORTD ^ (1 《《 PIND0);

// Force a delay to prevent de-bounce!

_delay_ms(100);

// Wait until the button is released

while(PIND & (1 《《 PIND1));

}

}

}

結(jié)論

現(xiàn)在我們可以控制I/O引腳了,沒有理由不能在復(fù)雜控制器可以使用的項目中開始使用AVR。使用本文中的知識,您可以創(chuàng)建一個鍵盤輸入系統(tǒng),一個復(fù)雜的7段顯示控制器,一個音樂系統(tǒng),甚至是一個基本的80年代風(fēng)格的計算機。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ATmega
    +關(guān)注

    關(guān)注

    2

    文章

    79

    瀏覽量

    44012
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    MAX11300:20端口可編程混合信號I/O芯片的深度解析

    MAX11300:20端口可編程混合信號I/O芯片的深度解析 在電子設(shè)計領(lǐng)域,混合信號I/O芯片
    的頭像 發(fā)表于 04-02 11:40 ?276次閱讀

    MAX11312:12端口可編程混合信號I/O芯片的深度解析

    MAX11312:12端口可編程混合信號I/O芯片的深度解析 在電子設(shè)計領(lǐng)域,混合信號I/O芯片
    的頭像 發(fā)表于 03-26 15:30 ?198次閱讀

    MAX11311:十二通道可配置混合信號I/O芯片的深度解析

    開關(guān)和GPIO的12端口可配置混合信號I/O芯片,為工程師們提供了強大而靈活的解決方案。本文將深入探討MAX11311的特性、功能、應(yīng)用以及使用過程中的注意事項。 文件下載: MAX1
    的頭像 發(fā)表于 03-26 15:30 ?157次閱讀

    SGM4593:低電壓16位I2C和SMBus低功耗I/O擴展器的深度解析

    )擴展器,為這類需求提供了一個簡單有效的解決方案。下面將從多個方面對其進行詳細解讀。 文件下載: SGM4593-Brief.pdf 1. 產(chǎn)品概述 SGM4593由兩個通道和8位并行I/O擴展組成
    的頭像 發(fā)表于 03-17 09:10 ?391次閱讀

    SGM4591Q:汽車低電壓16位I2C和SMBus低功耗I/O擴展器深度解析

    I2C和SMBus低功耗I/O擴展器,為工程師們提供了一個可靠且高效的解決方案。今天,我們就來深入探討一下這款芯片的特點、應(yīng)用以及設(shè)計要點。
    的頭像 發(fā)表于 03-16 17:25 ?440次閱讀

    SGM4591:低電壓16位I2C和SMBus低功耗I/O擴展器的深度解析

    一款低電壓16位I2C和SMBus低功耗I/O擴展器,為這類需求提供了一個簡單而有效的解決方案。今天我們就來深入了解一下這款芯片。 文件下載
    的頭像 發(fā)表于 03-16 17:20 ?406次閱讀

    SCH5127 Super I/O 控制器:功能特性與設(shè)計應(yīng)用解析

    的 SCH5127 Super I/O 控制器,看看它有哪些獨特的功能和特性,以及在實際設(shè)計中如何應(yīng)用。 文件下載: SCH5127-NW.pdf 一、產(chǎn)品概述 SCH5127 是一款 3.3V
    的頭像 發(fā)表于 03-05 16:40 ?504次閱讀

    TCA6408A:低電壓8位I2C和SMBus I/O擴展器的深度解析

    的需求。今天,我們就來深入探討一下德州儀器(TI)的TCA6408A低電壓8位I2C和SMBus I/O擴展器。 文件下載: tca6408a.pdf 1. 產(chǎn)品概述 TCA6408A是一款16
    的頭像 發(fā)表于 12-25 10:25 ?806次閱讀

    LM8323:一款功能強大的移動I/O伴侶芯片解析

    LM8323:一款功能強大的移動I/O伴侶芯片解析 在電子設(shè)備的設(shè)計中,一款合適的I/O伴侶芯片
    的頭像 發(fā)表于 12-24 17:25 ?1028次閱讀

    探索LM8325-1:移動I/O伴侶的卓越性能與應(yīng)用潛力

    和出色的性能,在眾多應(yīng)用場景中展現(xiàn)出了巨大的優(yōu)勢。今天,我們就來深入探討一下這款芯片的特點、功能以及應(yīng)用。 文件下載: lm8325-1.pdf 一、LM8325-1概述 LM8325-1是一款專門用于減輕主處理器負擔(dān)的芯片,它
    的頭像 發(fā)表于 12-24 09:55 ?430次閱讀

    深入解析TCA9554:8位I2C和SMBus低功耗I/O擴展器

    深入解析TCA9554:8位I2C和SMBus低功耗I/O擴展器 在電子設(shè)計領(lǐng)域,I/O擴展器是解決微控制器
    的頭像 發(fā)表于 12-23 17:35 ?920次閱讀

    atmega162芯片說明

    atmega162芯片說明
    發(fā)表于 11-19 16:30 ?0次下載

    淺談光學(xué)I/O模塊的熱挑戰(zhàn)

    服務(wù)器和機架式網(wǎng)絡(luò)基礎(chǔ)設(shè)施系統(tǒng)內(nèi)的光學(xué) I/O 模塊通常接受主動冷卻系統(tǒng)的直接冷卻,特別是來自機架式設(shè)備前面板的強制風(fēng)冷。機架式設(shè)備的散熱設(shè)計需要平衡 I/O 模塊的熱管理與處理器或
    的頭像 發(fā)表于 11-03 09:32 ?950次閱讀
    淺談光學(xué)<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊的熱挑戰(zhàn)

    TCAL9539 I2C總線I/O擴展器技術(shù)解析與應(yīng)用指南

    需要額外的I/O時,TCAL9539/TCAL9539-Q1這樣的I/O擴展器提供了一個簡單的解決方案。
    的頭像 發(fā)表于 08-08 11:49 ?1565次閱讀
    TCAL9539 <b class='flag-5'>I</b>2C總線<b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴展器技術(shù)解析與應(yīng)用指南

    MAX7325 I2C端口擴展器,提供8路推挽式I/O和8個漏極開路I/O技術(shù)手冊

    MAX7325 2線串行接口外設(shè)具有16路I/O端口。其中8路為推挽輸出,另外8路為I/O端口,帶有可選擇的內(nèi)部上拉和瞬態(tài)檢測功能。8路I/
    的頭像 發(fā)表于 05-22 15:27 ?1118次閱讀
    MAX7325 <b class='flag-5'>I</b>2C端口擴展器,提供8路推挽式<b class='flag-5'>I</b>/<b class='flag-5'>O</b>和8個漏極開路<b class='flag-5'>I</b>/<b class='flag-5'>O</b>技術(shù)手冊
    交城县| 湘潭县| 伊宁市| 内丘县| 肥乡县| 安国市| 乐东| 甘谷县| 丹巴县| 冷水江市| 桃江县| 都昌县| 西乌珠穆沁旗| 屏东市| 元阳县| 南召县| 汾西县| 尼玛县| 枝江市| 石楼县| 浦县| 黑河市| 赫章县| 宁波市| 吉隆县| 日照市| 泽普县| 台前县| 岚皋县| 广饶县| 织金县| 明星| 华容县| 东光县| 贺州市| 富川| 东明县| 宜君县| 井陉县| 淄博市| 江北区|