衡阳派盒市场营销有限公司

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

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

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

使用Arduino和AVR-gcc進行AVR編程

454398 ? 來源:網(wǎng)絡整理 ? 作者:佚名 ? 2019-11-08 16:54 ? 次閱讀

步驟1:什么是AVR,為什么要使用IC是?

AVR是一個微控制器,可用于使用軟件控制電流。它可用于切換設備,使用脈沖寬度調(diào)制控制它們,從傳感器讀取值以及處理數(shù)據(jù)以與其環(huán)境交互。

此外,AVR芯片非常小。它是控制Arduino的芯片。

例如,ATMega328的尺寸不到1平方厘米,但包含23個IO引腳。它也僅需要1.8-5.5V即可運行。

這可以幫助您縮小Arduino項目,以創(chuàng)建可穿戴技術(shù)或更小巧,更美觀的機器人。

步驟2:編程器硬件

使用Arduino和AVR-gcc進行AVR編程

AVR芯片可以使用多種硬件進行編程,從簡單的串行電纜到專用的AVR編程器和開發(fā)站。

雖然每種方法都有其自身的優(yōu)勢缺點和缺點,我將重點介紹使用Arduino。

Arduino是一個大型的微控制器原型開發(fā)平臺。 Arduino Uno的IO引腳已斷開,并連接了插頭。它完全包含運行板載微控制器所需的所有部件,例如晶體和電源調(diào)節(jié)。它還具有自己的IDE和與C十分相似的編程語言。使用該程序,可以將新軟件刷新到AVR芯片上。

IDE包含一個名為ArduinoISP的程序,該程序應該做到這一點。不幸的是,它非常挑剔,很少與Arduino的某些型號一起使用。在該位置可以找到Adafruit制作的程序的變體,其工作更加一致。

如果您使用的是Arduino Uno,那么我建議使用后者,因為我對官方程序有很多麻煩。/p》

第3步:編程

可以用各種不同的方式對AVR芯片進行編程。

安裝Arduino Bootloader使用IDE和語言

使用程序集。盡管這可能很難讀取和寫入,但它可能非常有效。

使用Atmel的官方IDE Atmel Studio,但僅適用于Windows,不適用于Linux或Mac

在您喜歡的C或文本編輯器中創(chuàng)建程序,然后使用avr-gcc進行編譯和刷新和avrdude。

這在可讀性和效率之間以及所有平臺上都實現(xiàn)了很好的折衷。

我將詳細介紹第四個也是最后一個選項。

許多編輯器都將為此工作,因為您只需編寫C程序即可:Eclipse,notepad ++,vi以及更多其他程序

下載附件中的led_flash.c文件和makefile。

我為此項目使用了ATTiny 85。

我將首先解釋代碼。

第一行代碼是:

#include

這會將與您的AVR芯片有關(guān)的常數(shù)導入程序。編譯程序時,必須指定要使用的AVR芯片的類型。

下一次導入:

#include

這包括

下一步是一些定義:

#define shift_light_up(port) port 《《 1 #define shift_light_down(port) port 》》 1

定義宏以在鏈上上下移動光。

#define register_set_output(register) register = 0b11111111

#define enable_first_light(port) port = 0b00000001

定義宏以設置要輸出的整個寄存器并啟用第一盞燈。

這些定義實質(zhì)上是創(chuàng)建宏,因此我們不需要稍后再使用代碼??梢允勾a比以前更具可讀性。

將寄存器設置為二進制全1會導致所有引腳成為輸出而不是輸入。

然后,端口設置引腳的值是高還是低。

端口《《1將使能的引腳移位1位。端口》》 1沿相反方向移動它。

boolean is_last_pin(uint8_t *port){

if((*port & 0b00010000) 》 0)

return true;

else return false;

}

boolean is_first_pin(uint8_t *port){

if((*port & 0b00000001) 》 0)

return true;

else return true;

}

兩個功能可以輕松測試當前燈是否使用第一個或最后一個引腳。

int main (void){

register_set_output(DDRB); // Set it all to output

enable_first_light(PORTB); // Set the first light to on

boolean up = true;

while(true){

_delay_ms(100); // Dependent on the chip‘s clock speed, speed must be set

if(is_first_pin(&PORTB) == true) //check if it is at the start

up = true;

else if(is_last_pin(&PORTB) == true) // check if it is at the end

up = false;

if(up == true)

PORTB = shift_light_up(PORTB); // Shift our light up

else

PORTB = shift_light_down(PORTB); // Shift our light down

}

}

這是我們函數(shù)的主要部分。芯片啟動時會調(diào)用int main(void)函數(shù)。我們首先使寄存器B為所有輸出。然后,我們打開第一個指示燈,并聲明一個布爾值,該布爾值記住要走的方向。每個循環(huán)首先延遲0.2秒,然后檢查方向是否需要更改。最終,它會沿給定的方向移動光并重復循環(huán)。

就是這樣!

上一步:makefile自動執(zhí)行編譯和刷新過程

第4步: Makefile

Make用于自動生成程序。您可以設置一個makefile以使整個過程成為一個命令,即“ make program”。

使用make create宏可以輕松運行與構(gòu)建項目有關(guān)的命令集合。

第一個命令是默認調(diào)用的命令,因此首先擁有一個幫助宏可能會很有用。

help:

@echo ’Help details:‘

@echo ’hex: compile hex file‘

@echo ’flash: install hex file‘

@echo ’program: compile hex and install‘

這總是提醒您如何設置程序,而不需要

此makefile的下一部分是十六進制。

hex:

avr-gcc -Os -DF_CPU=8000000 -mmcu=attiny85 -c led_flash.c

avr-gcc -DF_CPU=8000000 -mmcu=attiny85 -o led_flash.elf led_flash.o

avr-objcopy -O ihex led_flash.elf led_flash.hex

rm led_flash.o

rm led_flash.elf

這完成了編譯芯片的整個過程。為AVR編譯程序的過程有點困難且漫長,但是這部分使您無需記住過程的每個部分。該編譯過程中要記住的最重要的部分是--mmcu = attiny85和led_flash。這些將需要根據(jù)您自己的項目進行更改。如果您使用不同的AVR芯片,只需將attiny85更改為您使用的類型。如果您的文件未命名為led_flash.c,則使用文件名更改led_flash的所有實例。

最后,DF_CPU = 8000000定義了微控制器中的時鐘速度。除非將其設置為正確的值,否則許多項目(例如延遲)將無法正常工作。如果您使用其他芯片,或以任何方式修改速度,請查閱AVR芯片的數(shù)據(jù)表。

flash:

avrdude -c arduino -p attiny85 -P /dev/tty.usbmodemfd121 -U flash:w:led_flash.hex

這會將程序安裝到AVR芯片上。請注意:

-c arduino -p attiny85 -P/dev/tty.usbmodemfd121

這將設置pro的類型

步驟5:刷新和編譯

現(xiàn)在您已經(jīng)有了makefile設置以及編程硬件設置,只需鍵入

make program

,這將編譯代碼并在AVR上安裝該程序。

恭喜!

步驟6:最終電路

最終電路使用許多電阻器和LED,但僅一步之遙,即可將芯片放入實際電路中。

只需將5V +連接到VCC引腳,將地連接到GND,然后將IO引腳連接到一排LED

將電路焊接到原型板并構(gòu)建一個一個有趣的容器,向您的朋友和同事展示您的新技能。

責任編輯:wv

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

    關(guān)注

    0

    文章

    4

    瀏覽量

    8579
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    187827
收藏 人收藏

    評論

    相關(guān)推薦

    AVR單片機的優(yōu)勢與不足

    在當今電子科技領(lǐng)域,AVR 單片機憑借諸多突出特性,在各類電子設備開發(fā)中占據(jù)了一席之地,展現(xiàn)出獨特的魅力與價值。 其一,AVR 單片機最為亮眼的當屬其卓越的性能表現(xiàn)。AVR 單片機的指令以字作為
    的頭像 發(fā)表于 02-04 17:41 ?61次閱讀

    AN4875-AVR DD系列單片機入門

    電子發(fā)燒友網(wǎng)站提供《AN4875-AVR DD系列單片機入門.pdf》資料免費下載
    發(fā)表于 01-21 14:37 ?0次下載
    AN4875-<b class='flag-5'>AVR</b> DD系列單片機入門

    用于AVR放大器的600W輸入隔離式PFC電源

    電子發(fā)燒友網(wǎng)站提供《用于AVR放大器的600W輸入隔離式PFC電源.pdf》資料免費下載
    發(fā)表于 12-20 15:21 ?0次下載
    用于<b class='flag-5'>AVR</b>放大器的600W輸入隔離式PFC電源

    MSP430 GCC用戶指南

    電子發(fā)燒友網(wǎng)站提供《MSP430 GCC用戶指南.pdf》資料免費下載
    發(fā)表于 12-05 14:51 ?0次下載
    MSP430 <b class='flag-5'>GCC</b>用戶指南

    基于Arduino的串口通信項目

    基于Arduino的串口通信項目涉及多個方面,包括硬件連接、軟件編程、串口參數(shù)配置等。 一、硬件準備 Arduino開發(fā)板 :確保你有一塊Arduino開發(fā)板,如
    的頭像 發(fā)表于 11-22 09:24 ?858次閱讀

    stm32與Arduino的比較

    高級通信接口(如CAN、以太網(wǎng))。 STM32微控制器適用于需要高性能和復雜功能的應用。 ArduinoArduino基于AVR或ARM Cort
    的頭像 發(fā)表于 11-19 15:45 ?1679次閱讀

    PGA113進行正弦信號的放大,是不是PGA113必須接到ATmega16A的SPI總線接口上?

    大家好!我初次使用PGA113進行正弦信號的放大,使用的是AVR單片機ATmega16A進行控制,我的接線方式是DIO接PB4,sclk接PB3,CS接PB1,這樣可以嗎? 那么驅(qū)動程序該怎么辦
    發(fā)表于 09-14 08:24

    常用編輯器之GCC編譯器

    GCC(GNU Compiler Collection)是由GNU開發(fā)的編程語言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫的。GCC是一個編譯器套件,包含很多軟件包,支持多種語言編譯。GCC
    發(fā)表于 08-24 11:05

    esp32用什么軟件編程

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍牙雙模微控制器,廣泛應用于物聯(lián)網(wǎng)、智能家居、智能穿戴等領(lǐng)域。要對ESP32進行編程,需要選擇合適的編程軟件和開發(fā)環(huán)境
    的頭像 發(fā)表于 08-19 17:24 ?4330次閱讀

    esp32-S3支持arduino編程嗎?

    arduino選開發(fā)板的時候沒有es32-s3, 只有s2可選。 請問: 1. esp32-S3支持arduino編程嗎 2. arduino下sample下的BLE庫能用嗎? 3.
    發(fā)表于 06-27 08:23

    DENON AVR-883-1803維修手冊

    天龍DENON AVR-883-1803維修手冊
    發(fā)表于 05-08 09:16 ?2次下載

    AVR單片機外接16M晶振和STM32F103外接8MHZ運行速度哪一個更快?

    同樣的程序進行比較: AVR單片機外接16M晶振:運行程序是矩陣按鍵掃描采用定時器中斷100ms掃描一次、還有串口接收中斷程序1S接收一次運行程序上后,串口接收中斷程序不會影響矩陣按鍵掃描,不會
    發(fā)表于 04-23 07:43

    Microchip推出AVR? DU系列USB單片機,支持增強型代碼保護和高達15W 的 功率輸出

    輕松集成到嵌入式系統(tǒng)中,Microchip Technology Inc.(微芯科技公司)推出了 AVR ? DU 系列單片機 。作為集成USB連接的下一代Microchip 8位MCU,AVR DU
    發(fā)表于 04-15 16:26 ?588次閱讀

    SEGGER通過增加Microchip的AVR Dx系列擴展Flasher在線編程的支持芯片種類

    SEGGER通過增加Microchip的AVR Dx系列,擴展了Flasher在線編程的支持芯片種類,為AVR芯片提供了增強的編程能力。
    的頭像 發(fā)表于 03-19 17:24 ?680次閱讀

    精通8位MCU模擬外設:高手的進階指南

    PIC 與 AVR MCU是目前最受歡迎的8位MCU類別,相信不少小伙伴都上過手。PIC MCU易于編程,并且易于與其他外設接口;AVR MCU則是執(zhí)行速度超快。
    發(fā)表于 02-29 14:16 ?1271次閱讀
    精通8位MCU模擬外設:高手的進階指南
    百家乐官网正负计算| 澳门顶级赌场国际| 百家乐官网棋牌游戏正式版| 百家乐赌博赌博网站| 百家乐官网买隔一数| 百家乐家居| 百家乐官网庄河闲的赌法| 百家乐官网游戏打水方法| 大赢家百家乐的玩法技巧和规则 | 百家乐有没有攻略| 探索| 龍城百家乐的玩法技巧和规则| 百家乐官网小音箱| 大发888真人游戏| 新乐园百家乐官网娱乐城| 最新皇冠网址| 百家乐赌博网址| 百家乐官网视频游戏世界| 威尼斯人娱乐场 新世纪| 欧博线上娱乐| 百家乐冯氏坐庄法| 百家乐官网软件骗人吗| 网上百家乐公司| 世嘉百家乐官网的玩法技巧和规则| 澳门赌场老板| 百家乐必胜法技巧| 百家乐官网记算| 宾利娱乐城| 金满堂百家乐的玩法技巧和规则| 百家乐官网厅| bet365国际娱乐| 百家乐的路图片| 百家乐官网五种路单规| 环球国际娱乐| 百家乐tt赌场娱乐网规则| 怎么玩百家乐官网的玩法技巧和规则| 德州扑克教程| 百家乐作弊知识| 送58百家乐官网的玩法技巧和规则 | 小孟百家乐的玩法技巧和规则| 索雷尔百家乐官网的玩法技巧和规则 |