2014年12月29日

LCD應用控制 8051 assembly

;------------------------------------------
;     ==================================
;     ==        LCD應用控制         ==
;     ==          2014/12/29          ==
;     ==        蘇偉諺 4A037052       ==
;     ==================================
;------------------------------------------
;於LCD顯示第二列顯示'THIS IS 2ND LINE'並閃爍三次,然後由左而右依序清除

七段與MINIKEY應用控制 8051 assembly

;------------------------------------------
;     ===================================
;     ==     七段與MINIKEY應用控制     ==
;     ==          2014/12/29           ==
;     ==        蘇偉諺 4A037052        ==
;     ===================================
;------------------------------------------
; 以MINIKEY的4個按鍵來控制七段顯示器的動作,按S1、S2、S3、S4分別顯示“┌” 、 “┐” 、“└” 、“┘”。;-----------------------------------------------------------------------------

喇叭與MINIKEY應用控制 8051 assembly

;------------------------------------------
;     ===================================
;     ==     喇叭與MINIKEY應用控制     ==
;     ==          2014/12/29           ==
;     ==        蘇偉諺 4A037052        ==
;     ===================================
;以MINIKEY的4個按鍵來控制喇叭,按S1、S2、S3、S4分別讓喇叭發出1kHz、2kHz、4kHz、8kHz聲響。

七段應用控制 8051 assembly

;------------------------------------------
;     ===================================
;     ==         七段應用控制          ==
;     ==          2014/12/29               ==
;     ==        蘇偉諺 4A037052     ==
;     ===================================
;------------------------------------------
;依序點亮七段顯示器的燈管a、燈管b、燈管c…燈管g;點亮的同時依序閃爍1次、2次、3次…7次。

2014年12月26日

2014/12/26進階微控制器應用

需下載
FreeRTOS  v7.6.0程式源碼
在source資料夾
list.c
task.c
在source/portable/SDCC/Cygnal/資料夾=>for 8051

2014年12月21日

Embedded System UDOO

Embedded UDOO VS. Raspberry Pi

Linux Distribution Debian VS. Ubuntu

2014年12月19日

Debian WPA Wireless how to use

# vi /etc/network/interfaces
auto eth1
iface eth1 inet dhcp
wpa-ssid [EESID]
wpa-psk [passowd key]
# ifup eth1

root@Lenovo-B480:/home/clementyan# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=46 time=11.7 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=46 time=12.8 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=46 time=12.5 ms

2014/12/19 進階微控制器應用

http://static.grumpycoder.net/pixel/uC-sdk-doc/index.html

在freeRTOS中每一個工作均以一個TCB來代表,所以建立一個新的工作,實際就是建立一個新的TCB資料。

新的TCB均需加入工作就緒列表(pxReadyTaskLists),如果是第一個工作,則就需被執行,否則需等待排程。

建立一個新的TCB主要是初化TCB堆疊區,回顧TCB之資料結構

2014年12月16日

Debian 64位元作業系統 裝 32位元套件 安裝 skype

# dpkg --add-architecture i386
# apt-get update;apt-get upgrade
# apt-get install ia32-libs
此行只限於wheezy squeeze,jessie不用裝--2015/06/08
# dpkg -i skype-debian_4.3.0.37-1_i386.deb
# apt-get install -f
# dpkg -i skype-debian_4.3.0.37-1_i386.deb


# apt-get install pulseaudio

$ skype &

若還是不行試試下面的指令
$ LD_PRELOAD=/usr/lib/mesa-diverted/i386-linux-gnu/libGL.so.1 skype &
2016/05/27

2014年12月12日

2014/12/12 進階微控制器應用

主要記憶體有二

  1. stack堆疊-儲存區域變數、全域變數=>managed(受管理的),無記憶體洩漏(編譯時已知道的變數)
  2. heap記憶堆-儲存動態變數(大量)使用malloc(配置),free(釋放),使用過後需要把他free釋放,否則造成記憶體洩漏(編譯時不知道的變數)
freeRTOS有三種記憶體堆
  1. keap_1只配置不釋放(適合當你的應用程式是固定的動態記憶體,或者已經知道最多所需使用的動態記憶體微多少)
  2. keep_2可配置可釋放,使用簡易方法執行配置、釋放,可能會造成記憶體碎斷(fragmentation):假設第一筆資料100bytes,第二筆50bytes,第三筆30bytes,若第二筆被釋放,則要在新增大於50bytes的資料,則會無法放入,只能放置在第三筆之後,稱記憶體碎斷,使記憶體存取速度下降,則需使用記憶體重整。
  3. keep_3完整之配置釋放,並且會記憶體重整,較常用較耗時

2014年12月5日

2014/12/05 進階微控制器應用

critical section(緊要區):當程式進入緊要區時有兩種可能(該區程式不可太長),目的:希望緊要區內的程式不被其他程式打斷

  1. 所有中斷被除能(disable)
  2. 部份中斷被除能(需包含系統滴答中斷的除能,則不會文本切換),保留部份硬體中斷仍可致能,被致能之中斷需能被控制到不切割緊要區之程式,程式進入緊要區後,執行緊要區程式後,要離開緊要區時,需重新致能被除能之中斷

2014年11月28日

2014/11/28 進階微控制器應用

Counting Semaphore 計數信號 (為具有長度大於一之佇列,ㄧ次可以傳好幾個)
Binary Semaphore 二元信號(是長度為一之佇列,且ㄧ次只能傳一個資料,而資料內容不care)

為什麼要用到計數信號?

2014年11月11日

Speed up flash games chrome

1. Please download Cheat Engine version 6.2, don't download the latest version, because the latest version may be unstable.

  • CheatEngine62.exe is malicious, and Chrome has blocked it.

2014年10月31日

2014年10月24日

2014/10/24進階微控制器應用

vTaskDelay(延遲時間)從他呼叫開始計時
vTaskUntil(上次Task開始時間,延遲時間)從上次Task開始時間計時

Task2(void *ptr) {
    .//假設中間程式碼需50Ticks
    .
    vTaskDelay(100);
}

Task1(void *ptr) {
    取得執行開始時間
    .
    .//假設中間程式碼需50Ticks
    vTaskUntil(開始執行時間,100);
}

時序圖如下:

2014年10月17日

2014/10/17進階微控制器應用

範例
task1,task2具相同優先權時,其時序圖如下:

2014年10月3日

2014/10/03 進階微控制器應用


  1. 至MY數位學習下載Posix_GCC_Simulator_6.0.4.zip
  2. cd micro,在~/micro 下解壓縮
  3. unzip ~/下載/Posix_GCC_Simulator_6.0.4.zip
  4. 在~/micro 下 cd Posix_GCC_Simulator/FreeRTOS_Posix/Release/
  5. 在~/micro/Posix_GCC_Simulator/FreeRTOS_Posix/Release/  執行make

2014年9月26日

2014/09/26進階微控制器應用

--------------------------------------------------------------
第一節
RTOS即時作業系統

以Task(工作)為主
每個Task(工作)基本上為一無窮執行的函數(副程式)

為了要使進入無窮迴圈能在跳出來,故我們要使用Context(文本)
每種微控制器之文本可能有些微之差異,但基本必具有:

2014年9月19日

2014/09/19進階微控制器應用

課程進度:
2014/09/19:介紹課程、FreeRTOS簡介、建立開發環境
09/26~10/3:FreeRTOS架構、工作(Task)、
10/10:放假
10/17~10/24:FreeRTOS 通訊Communication
10/31:FreeRTOS Porting(移植) (目標微控制器為8051)
11/7:期中考
11/14:期中考(補)
11/21~11/28:FreeRTOS應用在8051上
12/5~12/12:FreeRTOS移植到Windows DOS 並型應用程式
12/19~12/26:FreeRTOS移植到Linux上並執行
1/2:放假
1/9:期末考
1/16:期末考(補)
重點:如何移植、熟練、記好步驟

2014年7月8日

HOLTEK HT-IDE3000 無法進入for迴圈 delay副程式撰寫 延遲問題

HT-IDE3000 V3版有做部分修正,其中把V2版用於延遲循環的程式碼優化,使其程式碼不會進入延遲循環程式。

解決方式:

2014年5月17日

RF傳輸模組要點

傳輸以字元為佳,避免因空白、TAB等因素造成資料誤判。
傳輸資料後須延遲至少1ms的時間。
Arduino有接Tx/Rx時無法燒入,因Arduino透過Tx/Rx來燒入程式。
RF模組可將接收端裝設天線,並須以焊接方式連接,發射端無須。
傳輸boud rate因做適當調整,不可過高。
傳輸資料至少要一次重複傳三次以上。
天線長短與材質會影響傳輸效果。

2014年3月14日

Java

抽象類別不一定有抽象方法,抽象類別用來做規範,遊子類別來實做

介面內之變數預設為常數,且其介面預設為static
介面繼承可以多重繼承,類別只能繼承一個

2014年3月13日

DSP 17ABC1893A x 3 運算

.include "vector.def" ;Interrupt Vector define file
.include "register.def" ;Special Purpose Register define file
.include "eSLMacro.def" ;Macro define file
.GLOBAL POWERON
.CODE
.include "interruptvector.def" ;Define all interrupt labels

2014年3月12日

Java

Overriding(覆寫):先決條件要先繼承,兒子繼承使用父親方法不夠用時,則改寫其方法內容,稱之,並在子類別做,可以覆寫好幾代的父親功能

兒Overloading可在子類別與父類別做

2014年3月11日

Virtuoso 基本操作


Step 1.執行 virtuoso 的前置作業


     a. 進入/opt/PROCESS 的目錄,指令為: cd /opt/PROCESS
     b. 在複製CIC0181P6M目錄到家目錄,指令為:cp -a CIC0181P6M /home/clementyan/

2014年3月6日

簡易控制LED

功能:LED由pin0至pin5,依序發亮間隔0.5s,再由pin5腳至pin0腳依序滅

2014年3月5日

JAVA

long L1=1;(1沒加是int,但會隱含轉型為long)
float f3=L1;//只要整數型態(int,long)皆可轉型成float或double

byte myVar1; //myVar1=1; //  1 整數 預設型別是32bit(int)--先隱含轉型 再assign
myVar1=1;//1會轉成byte的大小

//short (16bit)
short myShort1=12345; //12345預設為32bit隱含轉型看看
//兩個變數同類型定義
short s1=1,s2=2,s3;
byte b1=1,b2=1,b3;
b3=(byte)(b1+b2); //進行保守原則的編譯 直接晉升為int
//short or byte之間運算隱含直接晉升為int
int i1=b1+b2;

private封裝不會封裝同一個類別,只會對其他類別封裝

static具有共用特性 共用global記憶體,使用static不用建立物件即可呼叫

2014年3月3日

JAVA

(判斷式)? XX:YY;  判斷是成立則輸出XX
X與Y要同型別


2014年2月28日

Windows 7 使用 Windows XP 所共用的印表機 HP LaserJet P2015 Series PCL 6

以下範例之規格與作業系統:

    共享印表機的主機:Windows XP (32位元)
    預安裝印表機的主機:Windows 7 (64位元)
    印表機型號:HP LaserJet P2015 Series PCL 6
    連線方式:網路


Step 1.到HP官網查詢您的HP印表機驅動程式:http://www8.hp.com/tw/zh/drivers.html

2014年2月26日

JAVA

分類
1.從基礎的類別開始設計,從重複的地方開始設計
2.成員規則--attributes(特徵/屬性)  分類一班使用特徵來分,方法不是合作分類(除了介面:USB介面等),故央同的特徵用同一個類別,再透過繼承方式分出不同物件的類別
        --method(方法/功能)
依據attributes較多
目的:可重複使用(Reuse)

2014年2月21日

JAVA

類別建構成物件使用建構子 new~~ Scanner xxx=new Scanner(InputSteam) 建構子    參考(位址) 要看建構子()之內容要看說明書 return;//直接結束 寫程式要注意下列兩項; 例外管理 validation 為什麼Scanner要物件化 a:如果scanner同時從網路上與C>接收字串則scanner要個別物件化,否則會發生衝突,無法同時接收c>與網路上的字串流

2014年2月17日

JAVA

System.out.printf("字串"+任何型態);其 "字串"與任何型態做相加 皆會轉成字串型態輸出 布林-boolean-true,false(JAVA的boolean只能存放true 和 false,不可存放0 1 >,<,=,>=,<=,!= 字元-char 1234_5678 0XAAAA_FFFF_0109 0b1111_0101 Escape "\0" t-tab n-newline u-unicode ===================================================== 對project按右鍵-Properties-Testfile encoding-other-UTF-8(MS950) unicode萬用碼-16bit=2Bytes ASCII-8bit=1Byte 記事本-存檔-編碼的不同 按F1查操作手冊 基本型別為值型別:固定大小空間 物件為參考型別:初始空間大小不固定 類別的變數必指派物件位址 類別是一個參考型別參考物件 物件存放的是位址而不是值 String為類別 來自java.lang.String 類別class: 1.atribute 2.method 3.constructor建構子 物件狀態持久(state persistence),生命週期長 值型別生命週期短 { int s1=1; String s2="1"; } 到此區塊結束故s1變數結束生命,1值型別也結束生命 到此區塊結束故s2變數結束生命,"1"物件不一定結束生命,但s2的位址值結束生命 //String 字串並非是固定長度的 動態配置記憶體的 所有物件都是 String are constant

2014年2月12日

JAVA

J2SE 主控台 gui J2EE webapp 湯姆貓 class類別 命名 區段 成員 camel駱駝命名法 第一個英文字詞小寫,第二個英文字詞大寫 pascal命名法英文字詞首字大寫,中間不可空格,中間可以底線與數字 java關鍵字一律小寫 類別名稱再同一個package下不可重複

2014年1月3日

89C51 顯示時鐘 Assembly

;------------------------------------------
;     ==================================
;     ==     LCD 計時器控制(改良版)      ==
;     ==          2013/12/21          ==
;     ==        蘇偉諺 4A037052        ==
;     ==================================
;------------------------------------------

2014年1月1日

FPGA 重點

四位元漣波進位加法器

module  ha(a,b,s,c);
        input   a,b;
        output  s,c;