2015年2月12日 星期四

[Chai's AVR 學習筆記]燒錄步驟說明-使用Progisp

燒錄步驟說明
一、寫好後build完產生.hex檔案

二、開啟progisp v1.72

三、選擇ATmega16A














四、點選Auto旁邊的”…”來設定熔絲













五、Load Flash選擇.hex檔案,再點選Auto即可燒錄完成


*備註:

1.PORTB 記得空接,因為ISP會用到其中的線路

2.若晶片鎖死,產生chip enable program error,使用訊號產生器產生clock訊號(我是使用10Mhz方波,振福5Vpp)接到XTAL1,然後共接地,同時接上ISP燒錄器,即可重新解鎖重燒fuse和程式

3.不使用內部1Mhz clk,改用外部晶振的fuse設定!!



[Chai's AVR 學習筆記] 02 LED基本控制

一、實驗介紹

因為這系列教學文主要是自己作為實驗筆記,所以理論的部分就不會太多說明,大家可以自己看書
(參考[Chai's AVR 學習筆記] 01)、看datasheet

其實搞懂常用的AVR Assembly指令,還有register的操作,就可以開始實驗了


二、硬體連接
首先是這個開發板將AVR晶片的PORT重新排了一下

原本(From Datasheet):



















(轉接板)



















轉接上去後,左右PORT排列好,晶振的腳位(XTAL1XTAL2)接到開發板的12.0Mhz上,然後Analog Reference5VJTAG的腳位也引出來,供debug或燒錄使用。



三、開發板LED模塊

















我們使用JP1 插座上的8LED 接到PORTB 上面 (PB0~PB7)

由於LED為共陰極,因此AVRpinOUTPUT模式下,輸出0sink電流進去,LED燈亮,輸出1(5V)則和Vcc電位同,LED燈暗

*AVR 控制IO 概念說明
ATmega 16 共有4PORT,每個PORT 8Pin
每個PORT38-Bits Register控制


PORTB
Register
功能
Set(=1)
Clear(=0)
DDRB
Data Direction Register
控制為Input Output
輸出模式
輸入模式
PORTB
Output下輸出的值
輸出High
輸出Low
PINB
Input下讀取的值
讀到High
讀到Low
接下來會有範例示範如何存取這些register



四、程式雜記

/*
 * LED1.asm
 *
 *  Created: 2015/2/11  10:35:12
 *   Author: Stanley Chai
 */ 
 .include "m16def.inc"
 //Initial Stack for subroutine
 ldi r16,HIGH(RAMEND)
 out SPH,r16
 ldi r16,LOW(RAMEND)
 out SPL,r16

 ldi r16,0xff
 out DDRB,r16
START:
  ldi r16,0b01010101
  out PORTB,r16
  call Delay_500ms
  ldi r16,0b10101010
  out PORTB,r16
  rcall Delay_500ms
  rjmp START

 Delay_500ms:  
 //for crystal oscillator freq=12Mhz  1 clock=0.083us =>need 6*10^6 clock cycle
 // 6*10^6=255*245*96
     ldi r17,255
    LOOP0:  ldi r18,161
    LOOP1:  ldi r19,48
    LOOP2:  dec r19      //1
      brne LOOP2   //2 / 1
   //143
   dec r18      //1
   brne LOOP1   //2 / 1
   //23505
   dec r17      //1
   brne LOOP0   //2 / 1
   //5994539
  ret          //4
//brne 成立(Z!=0)時為2 clk cycle, Z=0時為1 clk cycle

2015年2月11日 星期三

[Chai's AVR 學習筆記] 01 基本環境設定

一、安裝Atmel Studio 6

http://www.atmel.com/tools/atmelstudio.aspx
(安裝檔建議放在英文路徑下再安裝)
我是選擇Atmel Studio 6.2 sp2 (build 1548) Installer – with .NET

之前安裝過的記得移除時要再額外移除
Visual Studio 2010 Shell(Isolated)、Atmel Software Framework 然后才能重新安装

否則會出現 cannot find one or more components,please reinstall 的錯誤


二、準備好開發板或相關硬體

柴哥我是使用淘寶上的開板,AVR+8051+ARM平台都可以通用的
淘寶連結



價格約新台幣一千多元,台灣露天也可以找,有類似的的板子。

這系列筆記使用Atmega 16/32L 作為主要的範例晶片

三、Atmega 16 介紹&參考資料



我之所以會選用AVR來研究,主要是玩了一年的Arduino後,想要再深一層鑽研其中的道理
而學校裡也沒有開設AVR相關的課程(目前都是和8051相關的),所以就想說自己來研究一下吧!!

其中,主要的參考資料是 

AVR Microcontroller and Embedded Systems: Using Assembly and C

我是找電子書...恩...Google一下就知道了!!
這本書寫得非常棒,雖然其中有些部分的code有小錯誤,但大致上概念相當完整
比對岸很多"教程"清楚,有點像是帶你看datasheet的感覺,加上實際的code,初學者(ex我)建議datasheet搭配著看

補充:不錯的AVR Assembly 網站 Beginner's introduction to AVR assembly language

四、Atmel Studio 6 建立專案
安裝好後,點擊圖標開啟Atmel Studio
File-> New->Project
選擇AVR Assembler Project















選擇ATmega16 (或根據自己使用的晶片選擇)
點選OK,建立專案

















在此就完成建立專案的設定了









2014年7月7日 星期一

有興趣讀電機相關科系的高中生可以先了解的一些資訊

以下是Stanley我從高三到大一間接觸到的一些網站和資訊,希望有興趣讀電機相關科系的同學們有空可以看看這些網站。


TED 演講 推薦(也可以當練習聽英文)
許多名人都會到TED分享心路歷程,聽演講的同時也能練習英文聽力喔!!
http://www.ted.com/
https://www.youtube.com/playlist?list=PL6661FF1871FDD4CB
http://tedxtaipei.com/2012/09/10-tedtalk/


Arduino 開源的硬體板子
這是Maker界最火紅的板子,看看他有那些應用吧
介紹:http://techorange.com/2014/02/14/what-is-arduino/
教學http://coopermaa2nd.blogspot.tw/2011/05/arduino.html
官方網站:http://www.arduino.cc/


3D printer 介紹
http://ironism.pixnet.net/blog/post/94283572-3d%E5%8D%B0%E8%A1%A8%E6%A9%9F%E4%BB%8B%E7%B4%B9%EF%BC%9A3d-%E5%8D%B0%E8%A1%A8%E6%A9%9F%E3%80%813d-printer%E3%80%81%E5%BF%AB%E9%80%9F%E6%88%90%E5%9E%8B

DIY 3D printer
http://www.mobile01.com/topicdetail.php?f=368&t=3593470

開源的3D printer
http://zh.wikipedia.org/wiki/RepRap
http://reprap.org/wiki/RepRap


Kickstarter 群眾募資
最酷最新的科技商品都在這!!
我覺得是一個吸收別人ideas的好去處
https://www.kickstarter.com/discover/categories/technology?ref=category
另一個類似的
https://www.indiegogo.com/explore?filter_category=Technology


App Inventor 用瀏覽器直接寫Android App
https://sites.google.com/a/stu.nknush.kh.edu.tw/appinventor/home
http://learningorz.blogspot.com/2012/05/google-mit-app-inventor.html
http://appinventor.mit.edu/explore/


Instructables 教你動手做各種酷炫的東西
http://www.instructables.com/tag/type-id/category-technology/


Raspberry Pi 信用卡大小的迷你電腦
介紹&官網:http://www.raspberrypi.org/help/what-is-a-raspberry-pi/
教學:https://sites.google.com/site/raspberrypidiy/home/new


Codecademy 線上教你一步步學習程式語言
介紹:
http://www.techbang.com/posts/8212-codecademy-makes-you-a-year-to-learn-about-programming
http://careher.net/?p=3894
官網:http://www.codecademy.com/


好書推薦: 獲利世代:自己動手,畫出你的商業模式
http://www.books.com.tw/products/0010567254
可以讓我們思考要如何在這個世代闖出自己的一片天
這本書也設計得很好,文圖並茂,蠻有趣的!