Heron AVR 20100124 Lessons Learned

From ITRS
Jump to: navigation, search

C 語言中 bit 處理

以下 R 為一暫存器

  • 判斷第七位bit的值

R &= (1<<7)

  • 只消去第七位bit的值

R &= ~(1<<7)

  • 讓第七位bit的值保持為真

R |= (1<<7)

USART相關暫存器

程式上所需的資料傳出單位為byte, 因此,晶片必須等待湊齊8個bits後方可用byte為單位存取 UDR0。

RXC的意義表示 1byte的資料接收完成(complete), 此時RXC0 flag 架起, 若Glogal interrupt(cli(), sei())和 RXCIEn (UCSR0B |= _BV(RXCIE0)) 都為enable, 則將會執行USART_RX_vect處的程式, 再返回。

RXC0 : 硬體設,軟體必須清

How to use the RPC module

要在AVR端新開功能給電腦端呼叫需要新增method:

  • AVR端(rpc.c)
  1. 在enum中加入新的方法(method) ex.METHOD_LED_SET
  2. 在rpc_handler() 新增 case
    case METHOD_LED_SET:
        led_set(RPC_MESSAGE[1]);
        putchar(PROTOCOL_RPC_RETURN);
        break;
  • 電腦端 (itrsrpc/rpc.py)
  1. 新定義同於AVR程式中的方法(method),注意range數量
  2. 定義新的函式
def led_set(self, b):
        self._call(METHOD_LED_SET, [ b ])
$ ipython control
In [1]: d.led_toggle()

Comments

blog comments powered by Disqus