Arduino, Pure C programming


http://wp.me/ph3BR-1On

 

工具 :

ARDUINO MEGA2560, 用的是 AVR MCU ATmega2560

ARDUINO IDE 1.6.11

ATmega2560_PB7_LED_pin_blink
ATmega2560_PB7_LED_pin_blink

 

 

 

 

目標:

純粹 C 語言實驗, 閃亮 LED, 效果類似 ARDUINO IDE 提供的 BLINK SKETCH, 不過編碼效率和執行效率好非常多, 以前有涉獵少許這個範疇 例如這個(https://goo.gl/XFRU8Q).

其實需要用到別的 C library, 不要重新整合或者大量重寫碼, 這個方法應該是不錯的許選擇.

 

找出 ARDUINO MEGA2560 D13, 連結一個 LED, 名稱是 L.

對應 AVR ATmega2560 MUC 的 PIN 名稱是 PB7

 

ATmega2560_PB7_LED_pin
ATmega2560_PB7_LED_pin

 

抄人家的原碼來修修改改, 他的設計是用在 UNO (MCU 是 ATmega328p), LED, D13 對應的PIN 是 PB5, 將會用 ATmega2560, 所以要改成 PB7, 然後再加點油甜點錯, 改改讓自己滿意.


// Blink the LED of Arduino Mega2560 LED, pure C programming, complie with Arduino IDE 1.6.11
// xiaolaba, 2016-NOV-05

// ref  : https://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/
// Programming Arduino Uno in pure C

#include <avr/io.h>
#include <util/delay.h>

#define BLINK_SLOW_DELAY_MS 1000
#define BLINK_FAST_DELAY_MS 200
#define LED_pin 7 // LED pin# = Atmege2560 pin PB7 = Arduino Mega2560 D13

int main (void)
{
DDRB |= _BV(LED_pin); /* set LED_pin of PORTB for output*/

while(1) {
blink_fast();
blink_fast();
blink_fast();
blink_slow();
}
}

void blink_slow ()
{
PORTB |= _BV(LED_pin);    /* set LED_pin high to turn led on */
_delay_ms(BLINK_SLOW_DELAY_MS);

PORTB &= ~_BV(LED_pin);    /* set LED_pin low to turn led off */
_delay_ms(BLINK_SLOW_DELAY_MS);
}

void blink_fast ()
{
PORTB |= _BV(LED_pin);    /* set LED_pin high to turn led on */
_delay_ms(BLINK_FAST_DELAY_MS);

PORTB &= ~_BV(LED_pin);    /* set LED_pin low to turn led off */
_delay_ms(BLINK_FAST_DELAY_MS);
}

//END of program

 

 

 

最後這用 ARDUINO IDE 編譯, 上傳到板子, 就看到快閃3次慢閃一次, 重複.

 

 

 

 

參考:

http://www.atmel.com/tools/atmelstudio.aspx

https://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/

http://yourduino.com/docs/MegaPinOut.png"

https://arduino-info.wikispaces.com/file/view/arduino-mega2560-schematic-F.jpg/346627792/arduino-mega2560-schematic-F.jpg

Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s