1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tài liệu Vi điều Khiển PSoC chọn lọc

62 231 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 62
Dung lượng 1,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

II.Sleep Timer Sleep timer là một timer luôn luôn chạy ngay cả khi CPU ở trạng thái Sleep vì thế nó có tên là SLEEP_TIMER, sử dụng nguồn clock 32.768Kh internal or External Có thể chọn

Trang 1

+Tạo 1 xung kích (ngắt) cho macro M8C Sleep làm việc giúp tiết kiệm năng lượng cho PsoC

Chúng ta có thể kích hoạt cho chế độ Sleep của PSoc bằng cách thiết lập các thông số ngay trong Global với các thiết lập :

32K_Select chon internal nếu dùng clock nội hoặc external (nếu dùng clock ngoài)

Sleep_timer : 1Hz tương ứng với 1s tạo ngắt một lần-chúng ta áp dụng điều này để làm RTC

}

void SleepISR(void){

}

… //Lam gi trong day cung duoc

Trang 2

I2Cm(firmware) hoặc I2CHW(Hardware) để giao tiếp Về phần cứng không có gì, chỉ cần thêm điện trở Pullup vào đường SDA và SCL

Thời gian đặt trong tx, bắt đầu bằng 00, sau đó là giây, phút, giờ, ngày trong tuần, ngày trong tháng, tháng, năm,byte cuối cùng 0x93 là byte ghi vào thanh ghi điều khiển của RTC

#include <m8c.h> // part specific constants and macros

#include "PSoCAPI.h" // PSoC API definitions for all User Modules

DS1307 giao tiếp theo chuẩn I2C

Sơ đồ nối rất đơn giản như mã lệnh quy định các chân SDA, SCL, lưu ý cần có trở kéo lên ở các chân SDA và SCL!

Một số lưu ý về thạch anh:

- Nên đặt TA càng gần chân X1, X2 của DS1307 càng tốt

- Nếu được thì lấy một vòng kim loại vòng xung quanh TA rồi hàn xuống mass sẽ tăng độ ổn định

- Đường mạch nối chân TA với X1, X2 càng ngắn càng tốt và nên phủ mát

Trang 3

- Mạch bắt buộc phải có PIN backup cho DS1307 nếu không sẽ ko bao giờ ổn định được!

II.Sleep Timer

Sleep timer là một timer luôn luôn chạy ngay cả khi CPU ở trạng thái Sleep (vì thế nó có tên là SLEEP_TIMER), sử dụng nguồn clock 32.768Kh (internal or External)

Có thể chọn tần số cho nó trong phần Global resource: ví dụ chọn 1Hz thì nó ngắt 1s/lần, 512Hz thì 1/512s 1 lần Cái này đặt ở phần Editor/Global resource hoặc đặt trong chương trình bằng cách tác động vào thanh ghi OCS_CR0, 2bit 4:3

Vecto ngắt của nó nằm ở địa chỉ cuối cùng , vào phần boot.asm (boot.tpl) đặt thêm dòng lệnh: ljmp _sleep_timer_isr vào địa chỉ vecto ngắt cua nó

code trong chương trình

//CPU goes to sleep

//Wakes up on sleep timer interrupt

//Toggles LED2, counts down and returns

Trang 4

khả năng đánh thức CPU dậy, còn nếu không nó chỉ hoạt động như một timer bình thường, khác với các Timer khác là 15bit UP_COUNTER Timer, dùng nguồn 32Khz, luôn được Enable

CPU khi ở trạng thái SLEEP sẽ chỉ được đánh thức khi có sự kiện ngắt xảy ra (ngắt ở đây bao gồm cả WatchDog Reset, POR, XRESET ) Khi thoát khỏi trạng thái SLEEP,lệnh đầu tiên nó sẽ thực hiện lệnh sẽ là lệnh tiếp theo sau lệnh M8C_Sleep()

do lệnh này được Pre_Fetch trước khi lệnh M8C_Sleep() được thực hiện xong, sau đó mới đến chương trình phục vụ ngắt Đúng là nó chỉ vào trạng thái SLEEP khi gặp lệnh sleep

Vấn đề 2:

WDT (WatchDog TImer) của PSoC dùng để Reset CPU theo một khoảng thời gian nhất đinh, ở đây thời gian này bằng 3 lần chu kì của Sleep_Timer Mặc định, sau khi khởi động WatchDog được Disable Nếu ta enable thì sau khi Sleep_timer đếm tràn 3 lần, ở xung clock tiếp theo sau sự kiện này sẽ có tín hiệu Reset ở đầu ra

Terminal Count của WDT, CPU sẽ bị reset và nó được đánh thức chứ không

giốngnhư bác nói về PIC, nó chỉ thoát khỏi trạng thái Sleep mà kô bị RESET

Vấn đề 3:

Mục tiêu của việc thực hiện Sleep là giảm thiểu công suất trung bình của nguồn tới mức có thể (tiết kiệm năng lượng) Psoc có 1 chế độ Sleep và có thể được khởi tạo bằng phần mềm (firmware) Trong trạng thái này, CPU ngừng hoạt động tại

1 câu lệnh biên và các bộ dao động 24/48 MHz, module bộ nhớ Flash và dải điện áp tham chiều bị tắt nguồn (không hoạt động), chỉ còn bộ dao động 32 Khz (trong hoặc ngoài), các khối Psoc lấy xung nhịp từ bộ dao động 32 Khz này và mạch giám sát nguồn là hoạt động

Đối với các khối Psoc tương tự được thiết lập việc tắt nguồn sử dụng phần mềm thì hoàn toàn độc lập trong chế độ này Các khối tương tự ACB có thể vẫn hoạt động vì chúng không yêu cầu nguồn xung nhịp Tuy nhiên, các khối ASC, ASD sẽ không hoạt động vì nguồn xung nhịp nội bộ cấp cho chúng bị ngừng hoạt động

CPU của Psoc có thể tỉnh dậy (wake up) khi xuất hiện ngắt hoặc sự kiện reset xảy ra Bộ định thời Sleep (Sleep Timer) có thể cung cấp các ngắt tuần tự để cho phép

hệ thống thức dậy, thăm dò ngoại vi hay thực hiện chức năng thời gian thực và sau đó lại nhảy vào trạng thái Sleep Các ngắt GPIO, ngắt giám sát nguồn, ngắt của các cột tương tự và ngắt của các bộ định thời lấy xung nhịp từ nguồn 32Khz là các ví vụ về ngắt không đồng bộ có thể cũng được sử dụng để đánh thức hệ thống

WDT and EEPROM write requires caution Just prior to using the EEPROM

write function, clear the WDT If the WDT is set to to anything other than

8Hz then you must also change the sleep timer to 8Hz The reason is that the EEPROM write is time critical and requires that the interrupts are disabled, it also takes around 10mS to execute This means the WDT won't be refreshed for 10ms or so After the EEPROM write perform

another WDT clear The second is not always required but ensures the WDT refresh cycle will be met After the write is performed the sleep timer can be reset to refresh the WDT at the nominal rate you require.

III.PWM

Ở PSoC chúng ta có thể dùng Timer/Counter/PWM để tạo xung đầu ra có duty

cycle thay đổi được

Với PWM chẳng hạn, nó có 2 đầu ra là Count và TC (Terminal Count) TC chỉ là đầu

ra phụ, nó sẽ được kích lên mức High khi thanh ghi đếm đếm đến 0 và kéo dài trong 1 chu kì clock Để điều chế độ rộng xung chỉ cần đầu ra Count là đủ Nạp vào thanh ghi compare giá trị PulseWidth, sau mỗi sườn lên của xung clock giá trị trong thanh ghi đếm sẽ bị giảm đi 1 và PWM sẽ tiến hành so sánh giá trị trong thanh ghi đếm với giá

Trang 5

trị trong thanh ghi compare (theo luật less than hoặc less than or equal), khi nào điều kiện so sánh chưa xảy ra thì xung ở chân COUNT còn ở mức thấp, khi nào điều kiện

so sánh xảy ra thì nó sẽ được đưa lên mức cao.Thay đổi giá trị này ta được xung có độ rộng xung khác nhau (cùng chu kì)

Trong một chu kì có thể thay đổi thanh ghi compare (pulsewidth) bất kì lúc nào  xung có hình dạng khác nhau

Trang 6

Ví dụ : Để tạo xung vuông có thể cho M=99,N=49 khi đó (N+1)/M+1=1/2 xung

#pragma interrupt_handler PSoC_GPIO_ISR

void Delay_e(unsigned int t);

Trang 8

PRTxIC1 = 0; PRTxIC0 = 1; -> FallingEdge

PRTxIC1 = 1; PRTxIC0 = 0; -> RisingEdge

PRTxIC1 = 1; PRTxIC0 = 1; -> ChangeFomRead

Trang 9

Giới thiệu về PsoC

Giới thiệu

1 Tổng quan hệ thống

2 CPU

3 Khối tạo dao động

4 Công suất tiêu thụ của vi điều khiển

5 Reset

6 Các chân vào/ra số

7 Các chân vào/ra tương tự

8 Truy nhập vào các khối chức năng số lập trình được

9 Các khối có chức năng số lập trình được

10.Các khối có chức năng tương tự lập trình được

11.Khối tạo điện áp tham chiếu

12.Chế độ kích

13.Bộ nhân cộng MAC

14.Bộ suy giảm tần số lấy mẫu - Decimator

15.Khối điều khiển I2C (Intel IC Bus)

16.Khối điều khiển ngắt

17.Không gian địa chỉ

Giới thiệu

Khi phát triển các ứng dụng phức tạp, chúng ta thường cần thêm các khối ngoại

vi như bộ khuếch đại thuật toán, các bộ lọc, các bộ định thừoi, mạch logic số, các khối chuyển đổi AD-DA v.v… Việc thiết lập thêm các khối ngoại vi là một việc khó khăn, các thành phần mới sẽ chiếm thêm diện tích, yêu cầu phải được xem xét cẩn thận trong quá trình thiết kế bản mạch in (PCB), tăng công suất tiêu thụ … Tất cả các yếu tố này ảnh hưởng đáng kể đến giá thành và thời gian phát triển một dự án

Sự xuất hiện của PsoC đã giúp cho giấc mơ của các nhà thiết kế trở thành hiện thực, thiết lập các dự án chỉ trên 1 chip

PSoC: Programmable System on Chip

PSoC (Programmable System on Chip) giới thiệu một khái niệm hoàn toàn mới cho các ứng dụng vi điều khiển So với các vi điều khiển 8-bít tiêu chuẩn, các chip PsoC có thêm các khối tương tự và số lập trình có khả năng lập trình được, chúng cho phép việc thiết lập một số lượng lớn các ngoại vi

Các khối số chứa một số các khối số nhỏ hơn có khả năng lập trình được có thể được cấu hình cho các ứng dụng khác nhau Các khối analog được sử dụng cho việc phát triển các thành phần analog như các bộ lọc tương tự, các bộ so sánh Các bộ chuyển đổi AD-DA

Có một số các họ PsoC khác nhau cho phép bạn lựa chọn phụ thuộc vào yêu cầu của dự án Sự khác nhau giữa các họ PsoC là số lượng các khối A/D có thể lập trình được và số lượng các chân vào ra Phụ thuộc vào các họ vi điều khiển, PsoC

có thể có từ 4 đến 16 khối số và từ 3 đến 12 khối tương tự có khả năng lập trình được

Các đặc điểm của PSoC microcontrollers

Trang 10

Các khối lập trình cho phép bạn thiết lập :

- Bộ nhớ 16K bytes lập trình được

- 256 bytes RAM

- Chuyển đổi ADC độ phân giả tối đa 14 bít

- Chuyển đổi DAC độ phân giải tối đa 9 bít

- Khuếch đại điện áp lập trình được

- Các bộ lọc và so sánh lập trình được

- Các bộ đình thời và bộ đếm 8-16-32 bít

- Khối tạo mã CRC và mã giả ngẫu nhiên

- Hai khối UART song công

- Các thiết bị SPI

- Lựa chọn các kết nối cho tất cả các chân đầu ra

- Lựa chọn việc kết hợp các khối chức năng

- Lựa chọn cho việc lập trình trên vùng bộ nhớ xác định và ghi có bảo vệ

- Các chân I/O đều có các chế độ Pull up, Pull down, High Z, Strong, hoặc Open pin state

- I2C Slaver hoặc Master và Multi-Master có tốc độ lên tới 400KHz

Khối CPU : là trung tâm của vi điều khiển có chức năng thực hiện lệnh và điều

khiển chu trình hoạt động (workflow) của các khối chức năng khác

Khối tạo tần số dao động : tạo ra các tần số thích hợp cung cấp cho CPU hoạt

động cũng như cung cấp một tập hợp các tần số khác nhau cho các khối có chức

Trang 11

năng lập trình được Các tần số được tạo ra dựa trên tần số tham chiếu bên trong PsoC hoặc được cung cấp từ bên ngoài PsoC

Khối điều khiển Reset : kích hoạt cho vi điều khiển hoạt động cũng như giúp

hồi phục trạng thái hoạt động bình thường của VDK khi xảy ra lỗi

Bộ định thời Watch-Dog : được sử dụng để phát hiện ra các vòng lặp vô hạn

trong chương trình

Bộ định thời Sleep : có thể kích hoạt vi điều khiển theo chu kì để thoát ra khỏi

chế độ tiết kiệm công suất Nó cũng có thể được sử dụng như một bộ định thời thông thường

Các chân vào/ra : giúp cho việc giao tiếp giữa CPU và các khối chức năng

số/tương tự lập trình được cũng như giao tiếp với ngoại vi

Khối chức năng số : có khả năng lập trình được cho phép người sử dụng tự cấu

hình nên các thành phần số tùy biến

Khối chức năng tương tự : có khả năng lập trình được cho phép người sử dụng

tự cấu hình nên các thành phần tương tự như các bộ chuyển đổi dữ liệu AD/DA, các bộ lọc, bộ thu nhận mã đa tần rời rạc DTMF, bộ đảo, các bộ khuếch đại thuật toán OA

Khối điều khiển ngắt : có chức năng xử lý các yêu cầu ngắt trong trường hợp

cần thiết

Khối điều khiển I2C : giúp cho PsoC giao tiếp với các phần cứng khác theo

chuyẩn I2C

Khối tạo điện áp tham chiếu : cần thiết cho các thành phần analog và nằm bên

trong các khối tương tự có khả năng lập trình được

Bộ nhân tổng MAC : thực hiện các phép nhân có dấu 8 bít

Hệ thống SMP : có thể được sử dụng như 1 phần của bộ chuyển dổi điện áp Ví

dụ, nó có thể cung cấp công suất cho 1 VDK hoạt động chỉ bằng 1 pin 1.5V duy nhất

2 CPU

Trong suốt quá trình thực hiện CT, các lệnh được nap trong bộ nhớ chương trình (bộ nhớ nhanh dạng flash) giống như các VDK thông thường CPU tìm nạp 1 lệnh tại 1 thời điểm từ bộ nhớ CT, giải mã lệnh và thực hiện các chức năng tương ứng CPU có 5 thanh ghi trong là PC (Program Counter- Thanh ghi đếm CT) , SP(Stack Pointer- Thanh ghi con trỏ stack), A(Accumulator-Thanh ghi tích lũy), X(Index- Thanh ghi chỉ số), và F(Flag-Thanh ghi cờ trạng thái) được sử dụng bởi ALU và khối giải mã lệnh, chúng cũng được sử dụng kết hợp trong quá trình thực hiện lệnh

Trang 12

Các thanh ghi trong của CPU

Thanh ghi đếm CT - Program counter (PC) : đuợc dùng như 1 con trỏ lưu trữ

địa chỉ của lệnh sẽ được thực hiên tiếp theo Với mỗi một câu lệnh mới, giá trị của

PC sẽ trỏ vào địa chỉ của lệnh tiếp theo trong bộ nhớ CT, lệnh này sẽ được giải

mã và thực thi

Thanh ghi con trỏ stack - Stack pointer (SP) : lưu trữ địa chỉ của bộ nhớ

RAM, là nơi mà dữ liệu được ghi vào hoặc đọc ra nhờ các lệnh PUSH và POP tương ứng Khi những lệnh này được thực hiện, giá trị của SP sẽ tự động tăng hoặc giảm tương ứng

Thanh ghi tích lũy - Accumulator register (A) : là thanh ghi chính được dùng

trong các thuật toán, các phép toán logic hoặc trao đổi dữ liệu

Thanh ghi chỉ số - Index register (X) : có thể được sử dụng như thanh ghi tích

lũy trong một số lớn các lệnh Thanh ghi chỉ số X cũng được sử dụng để lưu trữ chỉ số địa chỉ (chỉ số trong các vòng lặp)

Thanh ghi cờ trạng thái - Flag register (F) : Các bít của thanh ghi này mô tả

các kết quả sau khi một lệnh được thực hiện Nó có 1 vai trò trong việc lựa chọn 1 trang(page) bộ nhớ RAM khi vi điều khiển PsoC có nhiều hơn 256 byte RAM Bít trạng thái Zero(Z) chỉ ra thanh ghi tích lũy lưu giữ giá trị 0, trong khi bít nhớ Carry(C) chỉ ra rằng các phép toán logic hoặc các thuật toán được thực hiện có nhớ dữ liệu

Đơn vị toán học và logic - Arithmetic logic unit (ALU) : Là thành phần chuẩn

hóa của CPU, được sử dụng để thực hiện các phép toán +, -, dịch trái/phải cũng như các phép toán logic Dữ liệu xử lý bởi các lệnh này có thể được lưu trong các thanh ghi trong A , X hoăck bộ nhớ RAM trong

Lưu ý : PSoC chỉ có 5 thanh ghi nhưng rất linh hoạt khi lập trình do PSoC

có RAM nội thời gian truy xuất nhanh cho nên khi thực hiện trao đổi dữ liệu có thể thực hiện lưu trữ/hoặc truy xuất trực tiếp vào RAM nội theo các mode truy xuất địa chỉ mà vẫn đạt được hiệu suất mong muốn

3 Khối tạo tần số dao động

Khối tạo tần số dao động là cần thiết cho sự hoạt động cỷa CPU cũng như các khối có chức năng lập trình được Mỗi một thành phần lập trình được yêu cầu một tần số hoạt động riêng biệt.PSoC có một hệ thống dùng để tạo ra các tần số dao động khác nhau, bằng cách lựa chọn các tham số tương ứng Sơ đồ dưới đây thể hiện hai hệ thống độc lập dùng để tạo ra hai tín hiệu SYSCLK và CLK32 (32Khz)

Trang 13

+ SYSCLK là dao động nội chủ chốt với tốc độ 24MHz, được sử dụng làm tần số

tham chiếu cho phần lớn các tín hiệu khác

+ SYSCLKx2 = 2x SYSCLK = 48Mhz

+ 24V1 = SYSCLK/N1 với N1 là tham số lựa chọn trong khoảng từ 1 đến 16

Do vậy 24V1 nằm trong khoảng từ 1.5MHz (N1=16) tới 24MHz (N1=1)

+ 24V2 = SYSCLK/(N1xN2) với (N1xN2) là tham số lựa chọn trong khoảng từ 1

Do vậy 24V1 nằm trong khoảng từ 93.75kHz (N1xN2=16) tới 24MHz (N1xN2=1)

+ 24V3 = (24V2, 24V1, SYSCLK hoặc SYSCLKx2)/N với N từ 1 đến 256

+ CPU_CLK cung cấp tần số dao động cho CPU ảnh hưởng trực tiếp đến tốc độ

thực hiện lệnh CPU_CLK được lựa chọn là một trong 8 tần số trong khoảng từ 93.75MHz cho tới 24MHz

Các tần số 24V1, 24V2, 24V3 và CPUCLK có thể được thiết lập một cách dễ dàng thông qua việc thiết lập các tham số tương ứng trong Device Editor hoặc trong suốt quá trình thực hiện chương trình bằng cách thay đổi 3 bí thấp nhất trong thanh ghi OSCCR0

CLK32 là tín hiệu tần số thấp được sử dụng cho các khối có chức năng lập trình được sử dụng cho hoạt động "wake-up" của bộ định thời Sleep trong trường hợp các tín hiệu SYSCLK khác là không tích cực

Tín hiệu SYSCLK có thể được tạo ra nhờ một bộ dao động chủ bên trong internal main oscillator trong khi CLK32 có thể được tạo ra nhờ dao động cục bộ bên trong ILO- internal local

IMO-Sai số giới hạn đối với bộ tạo dao động trong là 2.5% Do vậy đối với các ứng dụng yêu cầu chính xác về thời gian ,tín hiệu SYSCLK nên được cung cấp từ một

Trang 14

4 Microcontroller power consumption

PSoC thực hiện lệnh với tốc độ xấp xỉ gấp hai lần tần số được cung cấp trực tiếp bởi CPUCLK.Mặc dù vậy việc cung cấp tần số hoạt động cao hơn không phải là luôn luôn cần thiết và có ý nghĩa sẽ đạt hiệu suất tổng thể tốt hơn

Nhược điểm chính của việc tăng tần số hoạt động chính là hiện tượng tăng công suất tiêu thụ, đây là vấn đề chính ảnh hưởng tới việc cung cấp nguồn hoạt động Một nhược điểm khác của việc tăng tần số hoạt động chính là sự gia tăng của nhiễu điện từ, gây ảnh hưởng tới các thiết bị xung quanh Do vậy chúng ta cần sử dụng 1 tần số thấp nhất nhưng vẫn đáp ứng đủ yêu cầu về tốc độ cho ứng dụng của chúng ta

Tần số mặc định cho VDK của PSoC là 3MHz đây là một giá trị thích hợp đối với yêu cầu tốc độ cũng như công suất tiêu thụ Để duy trì lâu nhất thời gian hoạt động nhằm tiết kiệm công suất tiêu thụ do phần lớn các VDK chỉ hoạt động theo chu kì, việc tiết kiệm công suất tiêu thụ là cần thiết và có thể đạt được nhờ việc bắt "VDK" rơi vào chế độ "ngủ đông" (Sleep mode) mỗi khi VDK không giữ vai trò quan trọng (ví dụ : khi VDK không xử lý dữ liệu, trao đổi với bộ nhớ dùng DMA .)

Việc tiết kiệm công suất tiêu thụ có thể được áp dụng cho mọi tần số khi CPU ngừng thực hiện lệnh, đồng thời CPU32 và SLEEP là không tích cực Vi điều khiển được "đánh thức" (wake-up) khỏi chế Sleep bằng cách Resset hoặc bằng 1 ngắt được tạo ra bởi bộ định thời Sleep hoặc 1 khối số có sử dụng tần số CPU32K Các chân GPIO (General Purpose In/Out) cũng có thể được sử dụng để đánh thức CPU Bộ định thời Sleep biểu hiện 1 bộ nhớ đặc biệt có vai trò chủ đạo trong việc tạo ra một ngắt có chu kì có khả năng "đánh thức" CPU ra khỏi chế độ tiết kiệm công suất Tần số của ngắt tạo bởi bộ định thời Sleep nằm trong khoảng từ 1 tới

512 KHz

Sau khi "đánh thức" VDK có thể thực hiện các lệnh bình thường cho tới khi chu kì

"ngủ đông" tiếp theo và chờ một ngắt "đánh thức" khác Chỉ có 1 kiểu ngắt phù hợp cho việc đánh thức VDK khỏi chế độ "ngủ đông" Sleep

5 Reset

POR

Trong quá trình VDK hoạt động, sự thay đổi điện áp cung cấp luôn diễn ra Điều này rất nguy hiểm nếu như điện áp cung cấp thấp hơn 1 giới hạn xác định, lúc này VDK có những hoạt động không thể dự đoán được Trong những trường hợp phát hiện điến áp cung cấp nhỏ hơn giới hạn cho phép, VDK được chuyển tới Power trong chế độ Reset và giữ nguyên ở chế độ này cho tới khi điển áp ổn định nằm trên mức giới hạn, mức giới hạn này có thể được định nghĩa nhờ tham số Trip Voltage

XRES

Tín hiệu reset ngoài cho phép người sử dụng thiết lập cho VDK vào trạng thái khởi động thông qua một phím nhấn Hoạt động Reset đạt được khi tín hiệu XRES

Trang 15

mang giá trị "1" Mạch reset đơn giản có thể được thiết kế bằng các điện trở

pull-down và 1 chuyển mạch.

WDR

Tín hiệu khởi tạo lại Watch dog reset (WDR) được dùng để tránh các vòng lặp vô hạn trong phần mềm hoặc các chương trình sai sót nghiêm trọng, giúp cho hệ thống quay trở lại từ chế độ bắt đầu (start state)

Tín hiệu WDR được tạo ra từ bộ định thời Watch dog timer (WDT) được khởi động lại theo chu kì bên trong một chương trình chính, sau đó các chương trình con tương ứng được thực hiện

Trong chế độ bình thường (normal mode) sau một thời gian nhất định, WDT được khởi động lại một lần và chương trình con vẫn tiếp tục thực hiện, nhưng nếu một khối lệnh trong 1 chương trình con có sai sót WDT không thể reset, và WDR xảy

ra

6 Vào/ra số

PsoC giao tiếp với các ngoại vi thông qua các chân vào ra In/Out Cứ 8 chân hợp thành 1 group có thê được truy nhập tức thời như các thành phần của 1 cổng Mặc dù vậy, các cổng có số hiệu khác nhau tùy thuộc vào loại PsoC mà chúng ta

sử dụng

Thao tác đọc và ghi dữ liệu được thực hiện giống nhau trong mọi trường hợp Các thanh ghi truy nhập của các cổng được lưu trữ bên trong không gian địa chỉ thanh ghi với định danh là PRT0DR, PRT1DR, PRT2DR, PRT3DR, PRT4DR or PRT5DR

Trang 16

* Ghi dữ liệu qua cổng

- Giá trị cần ghi được ghi vào thanh ghi PRTxDR thông qua việc thiết lập giá trị tương ứng cho thanh ghi nhờ sử dụng một mạch khởi tạo điều khiển các trang thái cho các chân của cổng Mạch khởi tạo này có thể gửi dữ liệu trực tiếp

(strong), thông qua các điện trở pull-up hoặc pull-down hoăc kênh máng hở ở đầu

+ Strong mode : được dùng khi cần kết nối trạng thái trong các thanh ghi

PRTxDR trực tiếp tới các chân của cổng Cách này được sử dụng khi chân của cổng là đầu vào

+ Analog Hi-Z mode :được sử dụng khi kết nối với các tín hiệu analog như các đầu vào của ADC Trong trường hợp này, tất cả các liên kết trong giữa các thanh ghi PRTxDR và chân bị tách rời do vậy tránh được nhiễu

Trang 17

+ Điện trở Pull-up hoặc pull-down : được sử dụng khi kết nối với phím bấm hoặc các thiết bị khác Những điện trở này xác định giá trị trên các đầu vào khi phím bấm chưa được nhấn

7 Vào/ra tương tự

Một số chân vào/ra bên cạnh các chức năng tiêu chuẩn còn có các chức năng trao đổi dữ liệu vào ra dạng analog Các chân của cổng P0 và 4 chân nhỏ nhất của công P2 co thể được sử dụng để nhận tín hiệu analog Các đầu vào của cổng P0 được kết nối tới các khối analog thông qua các bộ ghép kênh analog trong khi 4 chân nhỏ nhất của P2 được kết nối trực tiếp tới các khối chuyển mạch tụ điện(SC- Switched Capacitor) lập trình được

Các chân P2[4] và P2[6] có thể nhận giá trị điện áp tham chiếu từ bên ngoài Các chân đầu ra từ các khối analog có thể được kết nối tới 4 bộ đệm đầu ra, chúng được kết nối tới các chân to P0[2],P0[3],P0[4], và P0[5] ( 4 chân này có chức năng In/Out trong khi P0[0],P0[1],P0[6], và P0[7] chỉ có thể là input)

1.9 Các đường tín hiệu vào dùng chung (GIL)

Global input lines (GIL) : Có chức năng kết nối các chân input với đầu vào của các Mux GIL được chia thành hai nhóm chẵn (Global input odd – GIO) và (Global input even – GIE) phụ thuộc vào chỉ số của cổng kết nối với Mux, theo nguyên tắc cùng chỉ số chân Nghĩa là đường dẫn GIO_0 có thể kết nối với chân số 0 của tất

cả các cổng có chỉ số cổng là lẻ như : P1[0], P3[0], P5[0]

Trang 18

Ghép nối với Mux

Các bộ Mux được ghép nối với GIO và GIE theo hình vẽ dưới đây

1.10 Các khối số lập trình được

Các khối số lập trình được có thể được cấu hình thành các bộ định thời-Timer, bộ đếm-counter, điều chế độ rộng xung – PWM, bộ tọa mã PRS (Pseudo Reed- Solomon)-CRC và các giao tiếp ngoại vi như SPI, IrDA, UART tùy theo yêu cầu và mục đích của người thiết kế

Trang 19

Chức năng của từng khối số lập trình được liệt kê theo bảng sau :

Tần số giữ nhịp (CLK) :

Tần số giữ nhịp là cần thiết cho mọi thành phần tín hiệu số, phụ thuộc vào tốc độ yêu cầu, chúng ta có một tập hợp các tần số để lựa chọn

- Các tần số dao động nội : VC1, VC2, VC3, SYSCLKx2, CPU_32

- Các dao động từ các khối liên quan : như Timer, Counter, PWM …

- Tín hiệu Broadcast (BC)

- Các chân tín hiệu vào RI và ra RO

Đầu vào của các thành phần :

Phần lớn các thành phần tín hiệu số bên cạnh tần số giữ nhịp còn có 1 hoặc hai đầu vào số Ví dụ trong trường hợp của countẻ và PWM, tín hiệu đầu vào được sử dụng để khởi tạo bộ đếm Có một vài khả năng khác nhau cho việc lựa chọn đầu vào cho các thành phần

- Các chân RI (tín hiệu ngoài)

- Các chân RO (khi các khối được kết nối liên tiếp)

Trang 20

Mạch điều khiển tín hiệu ra

Đầu ra của các mạch logic có thể được kết với 4 mạch điều khiển đầu ra, chúng được kết nối tới 1 hoặc nhiều các đường tín hiệu GOL(global output lines )

Đầu ra của các khối lập trình được cũng được đánh chỉ số, do đó nó chỉ kết nối với các chân GOO hoặc GOI cùng chỉ số hoặc có chỉ số lớn hơn 4 đơn vị so với chúng

Chapter 1: Introduction to PSoC

 1.6 Digital inputs and outputs

 1.7 Analog inputs and outputs

 1.8 Accessing programmable digital blocks

 1.9 Global input lines

 1.10 Digital programmable blocks

 1.11 Analog programmable blocks

Trang 21

 1.12 Referent voltage generators

 1.13 Switch mode pump

When developing more complex projects, there is often a need for additional

peripheral units, such as operational and instrument amplifiers, filters, timers, digital logic circuits, AD and DA convertors, etc As a general rule, implementation of the extra peripherals brings in additional difficulties: new components take space, require additional attention during production of a printed circuit board, increase power consumption All of these factors can significantly affect the price and development cycle of the project

The introduction of PSoC microcontrollers has made many engineers’ dream come true of having all their project needs covered in one chip

PSoC: Programmable System on Chip

PSoC (Programmable System on Chip) represents a whole new concept in

microcontroller development In addition to all the standard elements of 8-bit

microcontrollers, PSoC chips feature digital and analog programmable blocks, which themselves allow implementation of large number of peripherals

Digital blocks consist of smaller programmable blocks that can be configured to allow different development options Analog blocks are used for development of analog elements, such as analog filters, comparators, intrumentational (non–)inverting

amplifiers, as well as AD and DA convertors

There’s a number of different PSoC families you can base your project upon,

depending on the project requirements Basic difference between PSoC families is the number of available programmable blocks and the number of input/output pins

Number of components that can be devised is primarily a function of the available programmable blocks Depending on the microcontroller family, PSoC chips have 4–

16 digital blocks, and 3–12 analog programmable blocks

Characteristics of PSoC microcontrollers

Some of the most prominent features of PSoC microcontrollers are:

Trang 22

Programmable blocks allow you to devise:

 16K bytes of programmable memory,

 256 bytes of RAM,

 AD convertors with maximum resolution af 14 bits,

 DA convertors with maximum resolution of 9 bits,

 Programmable voltage amplifier,

 Programmable filters and comparators,

 Timers and counters of 8, 16, and 32 bits,

 Pseudorandom sequences and CRC code generators,

 Two Full-Duplex UART’s,

 Multiple SPI devices,

 Option for connection on all output pins,

 Option for block combining,

 Option for programming only the specified memory regions and write

 I²C Slave or Master and Multi-Master up to speed of 400KHz,

 Integrated Supervisory Circuit,

 Built-in precise voltage reference

Is PSoC good enough for my project?

Perhaps the best way to recognize the true value of PSoC microcontrollers is through comparison with other options

Major advantages of PSoC microcontroller include the following:

 There is no other microcontroller that has programmable voltage,

instrumentational, inverting, and non-inverting amplifiers;

 Hardware generators of pseudorandom and CRC code, as well as analog modulators, are unique to PSoC families;

 MAC (Multiply-accumulate) is an essential part of digital signal processors, which allows implementation of digital signal processing algorithms It’s worth noting that hardware accumulator multiplication is not a common feature of 8-bit microcontrollers;

 Having the advantage of changeable working voltage doesn’t really need a comment This feature is particularly important for development of new

devices as it eliminates the need for redesigning the PCB and implementing the level translator;

 Option for low voltage supply (~1V) is a tremendous advantage in battery operated systems;

 Timers, counters, and PWM units are more flexible than the usual

implementation;

 Automatic code writing for accessing all the peripherals in use;

 In case you need a larger array of components, there is an option for dynamic reconfiguration, allowing you to change peripherals during run-time In this

Trang 23

way, it’s possible to minimize the processor workload at an time, leaving the largest part of the job to the specialized hardware

On the other hand, there are certain limitations of PSoC that could influence the choice of microcontroller for your design

 In systems which require highly precise or fast measurement, problems may occur with analog device characteristics In this case, you should analyze if speed of AD convertors and offset/noise of analog amplifiers are able to satisfy the project demands

 Analog components do not have the ability to work with usual negative supply voltage For example, zero voltage for inverting amplifiers is taken to be the analog ground AGND (usually 2.5V) All voltages above AGND are taken as positive, while voltages below AGND are taken as negative

 Most PSoC microcontrollers have 256 bytes of RAM, which could prove to be insuficient for some projects

1.1 System overview

PSoC microcontrollers are based on 8-bit CISC architecture Their general structure with basic blocks is presented in the following image:

Trang 24

Frequency generator facilitates signals necessary for CPU to work, as well as an

array of frequencies that are used by programmable blocks These signals could be based on internal or external referent oscillator

Reset controller enables microcontroller start action and brings a microcontroller to

regular state in the case of irregular events

Watch Dog timer is used to detect software dead-loops

Sleep timer can periodically wake up microcontroller from power saving modes It

could be also used as a regular timer

Input-Output pins enable communication between the CPU unit, digital and analog

programmable blocks and outside world

Digital programmable blocks are used to configure digital programmable

components which are selected by user

Analog programmable blocks are used to configure analog components, like AD

and DA converters, filters, DTMF receivers, programmable, instrumental, inverting, non-inverting and operational amplifiers Interrupt controller handles necessary operations in the case of interrupts

I2C controller Enables hardware realization of an I2C communication

Voltage reference is vital for the work of analog components that reside inside of

analog programmable blocks

MAC unit is used for operations of hardware signed multiplication of 8-bit numbers

SMP is a system which can be used as a part of a voltage regulator For example, it is

possible to supply power to a PSoC microcontroller from a single 1.5V battery

1.2 CPU

During the programming, instructions are stored in program (FLASH) memory in a way which is familiar to microcontroller CPU fetches one instruction at a time from program memory, decodes it and executes appropriate operations CPU unit has internal registers PC, SP, A, X and F, as well as ALU unit and instruction decoding unit, that are associated to instruction execution process

Trang 25

Internal Registers of CPU

Program counter (PC) is used as a pointer to the next program instruction that

should be executed With each new instruction value of program counter is being set

to point on the next instruction in program memory, which is going to be decoded and executed

Stack pointer (SP) points to the address of SRAM memory where data is written to

or read from in case of PUSH and POP instructions respectively When these

instructions occur value stored in SP is internally incremented or decremented

Accumulator register (A) is the main register which handles all arithmetical, logical

or data transfer operations

Index register (X) could behave as register A in large number of instructions Also,

register X is used in the case of index addressing

Flag register (F) contains bits which describe result of a previously executed

instruction It also has a role during selection of a RAM memory page in case when PSoC microcontroller has more than 256 bytes of RAM Bit Flag Zero (Z) marks that accumulator stores a zero, while Carry (C) marks that there has been carrying during arithmetic or logic operations

Arithmetic logic unit (ALU) is a standard part of a CPU, which is used for arithmetic

operations like addition, subtracting and shifting (left or right), as well as logic

operations Data handled by instructions could be stored in internal registers A and X,

or in RAM data memory

1.3 Frequency generator

Frequency generator is vital to CPU unit functioning, as well as programmable

blocks Each of programmable components has certain demands regarding speed PSoC microcontrollers have a system for generation of different frequency signals, which is done by graphically selecting appropriate parameters Picture shows two independent systems for generating signals SYSCLK and CLK 32k

Trang 26

SYSCLK is the main internal clock signal with a speed of 24MHz It is used as a

reference clock for most of other signals

SYSCLKx2 is a clock signal with double frequency (48MHz) of SYSCLK signal

24V1 is a signal derived by dividing frequency SYSCLK with parameter N1, which

varies in range from 1 to 16 24V1 frequency equals SYSCLK/N1, with a frequency from 1.5MHz (N1=16) to 24MHz (N1=1)

24V2 is a signal derived by dividing 24MHz frequency with parameter N1, which

varies in range between 1 and 16 24V2 signal frequency equals SYSCLK/N1N2., which means that possible frequency ranges from 93.75kHz (N1,N2=16) to 24MHz (N1,N2=1)

24V3 signal is derived by dividing frequency of one of the signals 24V2, 24V1,

SYSCLK or SYSCLKx2, with number N, in the range from 1 to 256

CPU_CLK is used as a CPU unit frequency which has a direct impact on instruction

execution speed CPU_CLK can have any of eight frequencies that are in range from 93.75MHz to 24MHz

Frequency 24V1, 24V2, 24V3 and CPUCLK selection is done easily, by setting appropriate parameters in Device Editor or during program runtime by selecting three lower bits of OSCCR0 register

CLK32K is a slow signal with a frequency of 32kHz It can be used as a

programmable component input It can also be used for Sleep timer wake-up

operation in the case when other SYSCLK derived signals are inactive

Signal SYSCLK can be acquired using internal main oscillator (IMO), while

CLK32K signal is acquired through internal local oscillator (ILO)

Trang 27

Fault tolerance of 2.5% in the case of internal frequency generation, is the limit factor

in a precise timing applications In such case external SYSCLK clock reference should be used External frequency ranges from 1 to 24MHz It connects to PSoC through pin P1[4]

Similar situation is in the case of CLK32K, which also can be generated by internal local oscillator (ILO), as said before, or more precise external 32kHz oscillator In the both cases microcontroller starts with internal frequency generators, after which is necessary to satisfy appropriate procedure

1.4 Microcontroller power consumption

Processor signal frequency CPUCLK is directly connected with the instruction

execution speed of the microcontroller Doubling the frequency, program executes approximately twice faster On the other hand, higher frequency doesn’t necessary always mean better overall performances Main disadvantage in rising the frequency

is it’s unwanted effect on microcontroller power consumption, which is one of the main problems it the case of battery supply Other disadvantage of higher frequency is more intensive generation of electromagnetic interference, which may affect on surrounding devices Because of these problems general rule should be applied, which says that lowest possible satisfactory frequency should be used Default value of PSoC microcontroller signal frequency is 3MHz, which is a compromise between speed and consumption

To maintain the longest possible uninterrupted work time, it is an imperative to bring power consumption to its lowest satisfactory functional level in battery operated devices Most of microcontrollers operate only periodically, while being in the idle state for the most of their time Major power saving can be achieved by bringing microcontroller to sleep mode while microcontroller does no important role Saving is achieved because of all the frequencies, except CPU32K and SLEEP become inactive, while processor stops instruction execution Microcontroller could be woken up from sleep mode only by reset or a interrupt

Interrupt could be generated by a sleep timer or some digital block which use

CPU_32k frequency Also GPIO pin or analog column interrupts can be used for CPU waking-up Sleep timer represents a special counter whose main role is to generate periodic interrupts which enable waking microcontroller from power saving mode Sleep timer frequency interrupt ranges from 1 to 512Hz After waking microcontroller does all needed operations after which it’s being switched back to sleep mode and waits for another sleep timer interrupt There is a appropriate type of interrupt needed

to wake the microcontroller from sleep mode Because of possibility for various irregularities to occurs during the work of microcontroller there is a need to reset it in those cases, or in other words, brought to beginning state Begin state means all internal registers are initialized and program continues its execution from beginning

Trang 28

1.5 Reset

POR

During the work of microcontroller, supply voltage variations occurs It is very dangerous if voltage drops beneath certain limit, because microcontroller can make some unpredictable actions In the case of such voltage drop detection,

microcontroller is switched into Power on Reset mode in which it remains until voltage stabilizes above critical limit which is defined by Trip Voltage parameter

XRES

External reset allows user to bring microcontroller to start state by switching a button Reset is achieved when XRES pin reads logic ONE Simplest reset circuit can be made with pull-down resistor and one switch

WDR

Watch dog reset (WDR) is used for avoiding software dead-loops or other

irregularities, bringing the system in the start state Using WDR, it is watch dog timer (WDT) is periodically restarted inside of a main program, after which appropriate subprograms are executed In normal mode after certain time WDT is being restarted once again and subprogram cycle continues But, if program blocks in one of the subprograms WDT is not reset, and WDR occurs

1.6 Digital Inputs and Outputs

Connection between a PSoC microcontroller with an outside world is achieved over input-output pins Eight pin group which could be accessed simultaneously are parts

of one port Although port number differs from the type of the microcontroller, write and read operations are done in the same way in any case Port access registers are stored inside of register address space noted as PRT0DR, PRT1DR, PRT2DR,

PRT3DR, PRT4DR or PRT5DR

Trang 29

Writing to port

Writing value to PRTxDR initializes register which through init circuit drives the state

of pins Init circuit can pass the signal from PRTxDR register directly (strong), over pull-up or pull-down resistors or through open drain output Beside that, there is a possibility to isolate value of register from pin state (Hi-Z)

Reading port

Reading value from address PRTxDR digital state of voltage on pins is stored to register A In case that voltage is dictated by some external device, read value could differ from voltage on PRTxDR register

Drive Mode

Selection of the way in which init register PRTxDR is connected to pins can be set inside of Device Editor or during runtime initializing registers PRTxDM2, PRTxDM1 and PRTxDM0 There is eight methods to initialize pins in total, which enables

connection to different types of devices, with considerate smaller amount of external components Pin work modes are defined according to the following table depending

on contents of appropriate bit from registers DM2, DM1 and DM0

DM2 bit DM1 bit DM0 bit Mode Data = 0 Data = 1

0 0 0 Resistive Pull Down Resistive Strong

Trang 30

DM2 bit DM1 bit DM0 bit Mode Data = 0 Data = 1

1 0 0 Open Drain, Drives High Hi-Z Strong (Slow)

1 0 1 Slow Strong Drive Strong (Slow) Strong (Slow)

1 1 0 High Impedance Analog Hi-Z Hi-Z

1 1 1 Open Drain, Drives Low Strong (Slow) Hi-Z

Strong mode is used when it is needed to connect the state on PRTxDR register

directly to pins This way of connection is applied when pin is used as an input

Analog Hi-Z mode is used when connecting analog signals, like AD converter input

In this case, all internal connections between PRTxDR register and pin are

disconnected, so not to interfere with value of brought voltage

Pull-up or pull-down resistors are used when connecting with buttons or some other

devices which demand this type of components These resistors are defining the state

on input when button is not pushed

Open drain mode is used when it is needed to bring several devices to the same line,

when it is needed to add one external pull-up or pull-down resistor This mode is convenient for realization of a line which signals if there has been a mistake to one of the microcontrollers For example, when used pull-up resistor version when zero (error) occurs on any of output pins state of this line will be zero Pins on PSoC microcontroller allow user to generate interrupt on any pin, when signal changes, or

on signal rising or falling edge

Trang 31

1.7 Analog inputs and outputs

Some of input-output pins, beside their standard use can perform analog input or output operation Any pin of port P0 as well as lower four pins of port P2 can be used

as analog input Inputs of port P0 are connected to analog blocks over analog

multiplexers, while in case of port P2 they are connected directly to programmable SC blocks Pins P2[4] and P2[6] can serve as external referent voltage inputs Outputs from analog blocks can be connected to 4 output buffers, which are connected to P0[2],P0[3],P0[4] and P0[5] pins

1.8 Accessing programmable digital blocks

Digital components, which are stored inside of programmable blocks, aren’t

connected directly to input or output pins It is done in a way shown on following picture, which depicts group of four digital programmable blocks As it could be seen, pin connection is established using global connection lines, multiplexer and lines of programmable blocks PSoC microcontrollers can have one, two or four digital

programmable block groups like this one depending on their family

Ngày đăng: 10/04/2016, 17:55

TỪ KHÓA LIÊN QUAN

w