Bài đăng

Đang hiển thị bài đăng từ Tháng 8, 2018

Bài 4: giao tiếp IC ghi dịch 74HC595

IC 74hc595 giúp mở rộng chân cho VĐK, thường được dùng để quét led 7 thanh, led matrix, sau đây là code tham khảo sử dụng ic 74hc595 để quét led 7 thanh catot chung: #include <p33fj32mc202.h> // Select Internal FRC at POR _FOSCSEL(FNOSC_FRC);   //su dung tan so noi 7.37MHz // Enable Clock Switching and Configure _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF); #define clk   _LATB0 #define din   _LATB1 #define lat   _LATB2     // khai bao chan xuat cho ic 74hc595 #define led1  _LATB3 #define led2  _LATB4 #define led3  _LATB5 #define led4  _LATB6        // khai báo chan dk led unsigned char count_led = 0; char number[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  // ma led cattoth chung char led[4]; unsigned char i,Q; void display(); //void readADC(); void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)  // ngat timer1 { /* Interrupt S...

Bài 3: Ngắt ngoài (interrupt external)

Hình ảnh
Trong dspic33fj32mc202 hỗ trợ 3 kênh ngắt ngoài: INT0, INT1 và INT2. Với INT0, Chip hỗ trợ ngắt trên chân INT0 là chân số 16. Với INT1 và INT2, chip hỗ trợ ngắt ngoài trên bất kì chân nào từ RP0 đến RP15, được cấu hình bởi bit INT1R và INT2R trong các thanh ghi RPINR0 và RPINR1. Ta xét ví dụ để sử dụng 3 ngắt ngoài: Dùng 3 ngắt ngoài để đổi trạng thái 3 led đơn. Ta thực hiện mô phỏng như sau: Ban đầu, ta phải cấu hình tần số dao động cho chip: _FOSCSEL(FNOSC_FRC);      // sử dụng dao động nội FRC 7.37MHz _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF);   // tắt WDT     ở trong hàm main ta phải thực hiện các lệnh chờ để kích hoạt dao động: __builtin_write_OSCCONH(0x01); __builtin_write_OSCCONL(0x01); Tiếp theo, ta cấu hình vào ra cho các chân sử dụng, với các chân nối với led được cấu hình output, các chân sử dụng ngắt cấu hình input:   _TRISB7 = 1;   _TRISB11 = 1;   _TRISB14 = 1;   _TRISB0 = 0;   _TRISB1 = 0; ...

Bài 2: I/O PORT

Chúng ta có thể cài đặt I/O cho các chân digital của Dspic bằng các thanh ghi sau: TRISx = 0bxxxxxx; để lựa chọn các chân của PORTx là input hay output, với 1 là input, 0 là output vd:   TRISB = 0x02;    // 0x01 = 0b10; tức là chân RB0 là chân output, chân RB1 là input; hoặc chúng ta set bit trực tiếp lên địa chỉ chân: _TRISB0 = 0; _TRISB1 = 1; Các địa chỉ này đã được định nghĩa sẵn trong thư viện của mplab. Hai thanh ghi PORTx là LATx dùng để đọc và ghi giá trị lên chân I/O. Tuy nhiên khi người dùng cố tình chuyển đổi chức năng I/O cho 1 chân bất kì thì giá trị PORTx có thể bị sai lệch đọc giá trị trên chân:  vd:  if (_LATB0 == 0)      led = ~led;  if (_PORTB1 == 1)      led1= ~led1; Ngoài ra, các chân I/O trên dspic còn tích hợp các chức năng đặc biệt khác, mà khi muốn sử dụng chức năng nào, chúng  ta phải cấu hình lại chân đó.. chúng ta sẽ tìm hiểu ở các bài tiếp theo

Bài 1: Cấu hình dao động

Hình ảnh
 DSPic 33 / PIC24 có 4 tùy chọn cấu hình dao động nội và ngoại Sử dụng bộ nhân PLL để nâng cao giá trị tần số  Bộ dao động hệ thống có các tùy chọn: Bộ dao động chính Posc trên các chân OSC1 và OSC2 Bộ dao động phụ Sosc trên các chân SOSC1 và SOSC0. Bộ dao động nhanh nội bộ RC với bộ chia tần số: FRC Bộ dao động nội tần số thấp LPRC Bộ dạo động chính với bộ nhân PLL Bộ dao động nội với bộ nhân PLL Các thanh ghi điều khiển FOSCSEL: Thanh Ghi đang kí cấu hình ban đầu bit 15 - 8 : mặc định là 1. bit 7: IESO :  1 : Khởi động thiết bị với bộ dao động nội FRC, sau đó người dùng có thể chuyển sang  bộ dao động do người dùng chọn khi đã sẵn sàng. 0: Khởi động thiết bị với bộ dao động do người dùng chọn bit 6-3: mặc định là 1 bit 2-0: FNOSC: bit lựa chọn nguồn dao động ban đầu:    111: dạo động RC nhanh với bộ chia Divide by  N    110: dao động RC nhanh với bộ chia 16    101: dao động công suất thấp...