顯示具有 AVR 標籤的文章。 顯示所有文章
顯示具有 AVR 標籤的文章。 顯示所有文章

2016年3月21日 星期一

Arduino bootloader hex file

Arduino bootloader hex code 就位在 arduino 安裝目錄下的 \hardware\arduino\avr\bootloaders 中
至於要選擇那一個檔案, 參考 boards.txt 裡的設定
例如 Arduino Uno:
..
uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex
...


2015年9月18日 星期五

ATMEGA328 port 的操作

原因: 使用 arduino 的 digitalWrite() 及 digitalRead() 的速度不夠快, 直接對 register 控制.
用到的 register:
   PORTD: set data output
   DDRD  : set input/output mode
   PIND    : read data input . if write 1 , the port will toggle.

方法:

-- 找出對應的 pin 腳 --
input pin:
  digital pin 6, PORTD6

output pin:
  digital pin 2, PORTD2

-- 設定 --
 output mode:
    DDRD |= (0x04);    // 1: output, 0:input
  
 input mode:
   DDRD &= (~0x40)
   PORTD |= (0x40);  // input pull-high

-- 讀值 --
   Data = PIND;     // read PORTD input data

ex: // 反向輸出
..
noInterrupts();
while(1){
    
    if(PIND & 0x04){
        PORTD &= (~0x40);
    }
    else{
        PORTD |= (0x40);
    }
}