QC

Bare metal Programming

 Bare metal Programming 

Bare metal Programming : Trong lập trình nhúng Bare metal Programming gần với phần cứng nhất, Thông thường thì Mỗi dòng chip của các hãng sản xuất điều đi kèm với thư viện hay trình biên dịch complier. 

Ví dụ Arduino bạn chỉ cần ghi đoạn code digitalWrite(13,HIGH) là chân số 13 lên mức 1 niếu ta nối với led thì led sẽ sáng, hay digitalWrite(13,LOW) ; thì led số 13 tắt led.

đoạn code này là ta đang dùng thư viện của hãng Atmel arduino cung cấp.thật tế thì đoạn code trên bật led số 13 không phải dùng Bare metal Programming và đang sử dụng thư viện , bên trong hàm digitalWrite ghi gì ta cũng không biết.

Bare metal Programming : bạn cần phải cố gắng đọc tài liệu, datasheet/ Thanh ghi và cần nắm rõ nguyên lý hoạt động của 1 hành động / chức năng mà bạn khởi tạo để nó hoạt động bình thường.

VD : hãy viết chương trình  Bare metal Programming điều khiển Led 13 arduino nhấp nháy ?

Hướng dẫn 

Cách 1 : không dùng bare metal programming bạn có thể dùng hàm 

Pinmode(13,OUTPUT);

digitalWrite (13,HIGH);

delay(100);

digitalWrite (13,LOW);

delay(100);

Cách 2 : Dùng Bare metal Programming .

Bước 1 : Xác định chân 13 Arduino là PORTB.5.

dựa vào datasheet xác định địa chỉ DDRB là 0X24, địa chỉ PORTB là 0X25.

Bước 2 : Cấu hình PORTB.5 là output bạn sử dụng như sau :

  DDRB=0b00100000; // pointer chỉ đến chân số PORTB.5 =1 set output.

hoặc bạn dùng pointer như sau :


volatile int *ddrb =0x24; // trỏ con trỏ tới thanh ghi DDRB.

*ddrb=32 ; // set chân pin số 13 là output ứng với chân tại sao bằng 32 ? ta có 2 mũ 5 =32, vậy mũ 5 ấy ứng với bít thứ 5.


Đang bận viết update sau ! srr


























Error No module Onnx opencv

 Error No module Onnx opencv Lệnh :  pip install onnx==1.9 Mã lỗi PS F:\opencv_e\2.video> & C:/Users/youtb/Anaconda3/envs/virtualenv/...