Mục lục:

Bắt đầu với Bascom AVR: 5 bước
Bắt đầu với Bascom AVR: 5 bước

Video: Bắt đầu với Bascom AVR: 5 bước

Video: Bắt đầu với Bascom AVR: 5 bước
Video: Bắt đầu với R5F11W68 (Renesas RL78) 2024, Tháng bảy
Anonim
Bắt đầu với Bascom AVR
Bắt đầu với Bascom AVR

Đây là phần mở đầu của loạt bài hướng dẫn bạn lập trình vi điều khiển AVR của mình với Bascom AVR.

Tại sao tôi làm điều này.

Hầu hết các mẫu chương trình trong loạt bài này bạn có thể thực hiện bằng Arduino.

Một số dễ hơn và một số khó hơn, nhưng cuối cùng cả hai sẽ chạy trên cùng một bộ điều khiển.

Nhưng cách lập trình là khác nhau trong mọi môi trường phát triển. Arduino cần một thư viện cho mọi thứ ngoại trừ các chức năng cơ bản. Bascom cũng làm việc với các thư viện, nhưng tôi hiếm khi phải bao gồm một thư viện. Với Arduino, tất cả các cài đặt dành riêng cho phần cứng đều được thực hiện thông qua các thư viện. bạn có rất ít ảnh hưởng đến sức mạnh thực tế của bộ vi điều khiển. Bắt đầu với bộ hẹn giờ mà bộ điều khiển có. với arduino, bạn cần một thư viện nữa. nếu bạn có bộ đếm thời gian cho đến khi nó hoạt động, nó có thể là một thư viện khác va chạm với cài đặt của bạn. Tại bascom, bạn có quyền truy cập miễn phí vào phần cứng hoàn chỉnh bao gồm cả khu vực khởi động được chiếm bởi arduino. ví dụ, một số thư viện tại bascom hỏi bạn muốn sử dụng bộ đếm thời gian nào. mặt khác, vì arduino giúp bạn dễ dàng tự tạo một thư viện, nên nó tự nhiên làm cho nó trở thành một nền tảng mà phần cứng và cảm biến mới thường có một thư viện trực tiếp. những gì thường liên quan đến rất nhiều nghiên cứu tại bascom và các chức năng mà một thư viện thường đảm nhận sau đó phải được kết hợp cẩn thận vào mã chương trình. nhưng tin tốt là cộng đồng bascom cũng rất lớn, đó là lý do tại sao luôn có giải pháp cho mọi ý tưởng.

Vì vậy, nó phụ thuộc một phần vào dự án những gì được sử dụng cho một môi trường phát triển và một phần vào bí quyết của người lập trình.

nhưng tại sao tôi lại làm loạt bài này. một mặt nó tiết kiệm được nhiều tiền. Tôi không cần phải mua một bảng arduino cho mọi dự án. Ví dụ: Một Arduino noname có giá khoảng 12 €, bộ điều khiển trên đó chỉ có giá 2,5 € với mạch tối thiểu cần thiết cho một chức năng ổn định, nó có giá khoảng 4 €. mặt khác, bạn có toàn bộ lựa chọn chip avr được hỗ trợ sẵn có. atmegas 8 đến 256 và attiny 8 đến 2313 và nhiều loại xmega mà tôi không có kinh nghiệm. Ví dụ: nếu bạn chỉ muốn sử dụng một servo và cảm biến siêu âm có thể nhận dạng bàn tay, sau đó mở nắp thùng rác, bạn có thể sử dụng chip nhỏ nhất có thể. Vì vậy, có rất nhiều lý do để học ngôn ngữ thứ hai.

Vậy hãy bắt đầu

Quân nhu

Đây là danh sách các bộ phận cần thiết tối thiểu để chip hoạt động ổn định và lập trình.

Breadboard để thử nghiệm

Atmega 8-16PU (tốt hơn bạn nên mua 2 hoặc 3 nếu bạn giết chúng do nhầm lẫn)

Bộ điều chỉnh điện áp 5V 7805

Điện trở 10Kohm

Tụ phim 100nF

Tụ điện 10µF

Tụ điện 100µF

một số dây cho breadboard

Windows PC 7/8 / 8.1 / 10

Lập trình viên ISP (tôi sẽ sử dụng USBasp ở đây, bạn có thể mua nó ở amazon với giá ít tiền)

Bascom AVR (bạn có thể tải xuống tại đây một DEMO. Tất cả các funktions đều được mở khóa, nhưng bạn chỉ có thể viết mã cho đến khi kích thước 4Kb đủ cho nhiều mã).

Phần tùy chọn:

LED có điện trở

công tắc đẩy

các bộ phận cụ thể của dự án

Bước 1: Cài đặt Bascom và thiết lập

Cài đặt Bascom và thiết lập
Cài đặt Bascom và thiết lập
Cài đặt Bascom và thiết lập
Cài đặt Bascom và thiết lập
Cài đặt Bascom và thiết lập
Cài đặt Bascom và thiết lập

Tải xuống tệp và cài đặt Bascom AVR. Cài đặt tất cả các phần của nó bao gồm cả hộp kiểm cuối cùng sau khi cài đặt.

Sau đó khởi động lại PC của bạn nếu không bascom sẽ không khởi động.

Sau khi khởi động lại bắt đầu bascom.

Đi tới Tùy chọn -> Lập trình viên và chọn USBasp từ danh sách, lưu cài đặt và đóng Bascom.

Sử dụng Chương trình này để cài đặt usbasp. Sau đó, khởi động lại PC của bạn một lần nữa. Bây giờ kết nối USBasp với PC của bạn và khởi động trình quản lý thiết bị. USBasp sẽ xuất hiện trên các thiết bị libusb.

Stat Bascom một lần nữa và tạo một tệp mới. Lưu nó vào máy tính của bạn và nhấn nút F7 trên bàn phím của bạn.

Trình biên dịch khởi động và biên dịch chương trình trống. Bây giờ bạn có thể kiểm tra chức năng của lập trình viên.

Nhấn nút F4 trên bàn phím của bạn để bắt đầu cửa sổ lập trình. Bây giờ vào chip -> nhận dạng để bắt đầu tương tác. Đèn LED từ USBasp bây giờ sẽ nhấp nháy ngắn. Bạn sẽ nhận được một thông báo như chip Id FFFFFF không thể đọc thiết bị. Đó là một dấu hiệu tốt là Lập trình viên đang làm việc nhưng nó không tìm thấy chip.

Bây giờ chúng ta có thể bắt đầu xây dựng mạch đầu tiên.

Bước 2: Hãy xem xét kỹ hơn con chip

Hãy xem xét kỹ hơn về con chip
Hãy xem xét kỹ hơn về con chip

Nếu bạn nhìn vào sơ đồ chân của con chip, có vẻ như con chip này không giống với bo mạch arduino. Chắc chắn, chúng tôi sử dụng Atmega8 và trên Arduino không có Atmega328. Nhưng Pinout gần giống nhau nhưng chip của anh ấy của board Arduino Uno có nhiều chức năng hơn. Đây là tên của các ghim. VCC và GND là các chân để cấp nguồn.

AREF và AVCC là chân cho điện áp tham chiếu và nguồn cung cấp cho bộ chuyển đổi tương tự sang kỹ thuật số.

PB 0-7 PC 0-6 PD 0-7 là các chân đầu ra đầu vào mục đích chung với nhiều người.

đặt lại pin là những gì tên nói. Để khởi động lại chip. Dòng phía trên tên đặt lại có nghĩa là phủ định. Điều đó có nghĩa là, để thiết lập lại chip, bạn phải kéo nó xuống 0V.

Đối với các chân sau, các lệnh riêng biệt sẽ sớm xuất hiện.

RXD TXD là các chân phần cứng cho giao tiếp nối tiếp UART.

INT0 INT1 là các chân ngắt phần cứng

XCK / T0 UART Nguồn đồng hồ / Bộ định thời / Bộ đếm 0 Nguồn đồng hồ

Chân XTAL / TOSC dành cho tinh thể bên ngoài lên đến 16MHz (các kiểu khác nhau lên đến 20MHz) / Chân pha lê cho RTC bên trong

T1 tương tự như T0

Các chân AIN dành cho bộ so sánh tương tự

ICP1 tương tự như T0 / T1

OC1A là chân đầu ra phần cứng cho bộ định thời pwm1 kênh A

Chân chọn chip SS / OC2 cho SPI / như OC1B nhưng kênh B

MOSI MISO SCK / OC2 là các chân SPI phần cứng và các chân để lập trình / bộ định thời đầu ra PWM2

ADC0 đến ADC5 là các đầu vào tương tự

SDA SCL là các Chân cho I2C phần cứng

Chip thông thường có thể hoạt động từ 4, 5V đến 5, 5V thì Atmega 8L có thể hoạt động với Điện áp thấp hơn nhiều.

Bạn thấy thậm chí con chip này có thể làm được nhiều hơn một Arduino Uno dường như không thể làm được. Nhưng Arduino cũng có thể làm được điều đó, bạn chỉ phải lập trình nó.

Bước 3: Mạch đầu tiên

Mạch đầu tiên
Mạch đầu tiên
Mạch đầu tiên
Mạch đầu tiên

Bây giờ đã đến lúc xây dựng mạch đầu tiên của bạn.

Thông thường mạch đầu tiên là gì? Bên phải! Hãy nhấp nháy đèn LED.

Đèn LED được kết nối với PB0. Điện trở bên cạnh chip có 10k Ohms.

Điện trở bên cạnh đèn LED có 470 Ohms.

Bây giờ bạn có thể kết nối USBasp với Atmega như trong hình.

Nhưng trước khi bạn bật nguồn, hãy để chúng tôi viết chương trình.

Bước 4: Viết chương trình đầu tiên

Viết chương trình đầu tiên
Viết chương trình đầu tiên

Tạo một tệp mới trong Bascom và nhập văn bản sau.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output do portb.0 = 1 đợi 1 portb.0 = 0 đợi 1 vòng lặp

sau đó biên dịch nó bằng cách nhấn F7 trên bàn phím của bạn.

Bây giờ chúng ta có thể lập trình chip bằng cách nhấn F4. Cửa sổ lập trình viên xuất hiện. Bây giờ đã đến lúc bật nguồn từ breadboard. Bạn nên áp dụng một cái gì đó từ 6 đến 12 Volts.

Bây giờ vào chip -> autoprogram. Nếu cửa sổ lập trình viên tự động đóng lại thì chương trình đã thành công.

Đèn LED sẽ nhấp nháy trong tần số một giây.

Bây giờ hãy xem kỹ chương trình để hiểu cú pháp.

$ regfile "m8def.dat"

$ pha lê = 1000000

với $ regfile, chúng tôi cho trình biên dịch biết loại chip được sử dụng, tên của chip Arduino sẽ là "m328pdef.dat"

với $ crystal, chúng tôi cho anh ta biết tốc độ cpu khoảng 1MHz.

config portb.0 = Đầu ra

điều đó có nghĩa là PB0 sẽ hoạt động như một đầu ra.

Nhân tiện, từ viết tắt PB0 có nghĩa là cổng B bit 0. Chip được chia thành nhiều cổng. Mỗi cổng được cấp một chữ cái để xác định rõ ràng. và mỗi portpin một bit từ 0 đến 7. Ví dụ, tôi có thể ghi một byte hoàn chỉnh vào thanh ghi đầu ra cổng, thanh ghi này sẽ được xuất thông qua các chân cổng riêng lẻ.

làm

vòng

Đây là ý nghĩa của câu lệnh void loop trong Arduino. Tất cả giữa hai lệnh đó sẽ lặp lại mãi mãi. (với một số ngoại lệ nhưng sau đó nhiều hơn về điều đó)

Cổngb.0 = 1

đợi 1 portb.0 = 0 đợi 1

Ở đây chúng tôi tạo ra sự nhấp nháy của đèn led.

Portb.0 = 1 cho chip chuyển đầu ra PB0 thành 5V

lệnh chờ 1 để chip đợi trong một giây. Nếu bạn muốn chuyển đổi đèn led nhanh hơn, bạn phải thay thế lệnh chờ bằng các lệnh chờ, bây giờ bạn có thể nhập thời gian bây giờ tính bằng mili giây, ví dụ: waitms 500. (waitus có nghĩa là đợi trong nano giây)

Portb.0 = 0 báo cho chip chuyển đầu ra PB0 thành 0V.

Bước 5: Thêm nút để sử dụng đầu vào

Thêm một nút để sử dụng đầu vào
Thêm một nút để sử dụng đầu vào

Bây giờ chúng ta thêm một nút để làm sáng đèn led nếu nút đó được nhấn.

Chèn nút như trong hình.

bây giờ gõ vào chương trình sau.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 do if pind.7 = 0 then portb.0 = 1 else portb.0 = 0 vòng lặp

Nếu bạn tải chương trình đó lên chip, đèn led chỉ sáng khi nhấn nút. Nhưng tại sao?

chương trình bắt đầu giống hệt như chương trình cuối cùng cho đến khi

cấu hình portd.7 = đầu vào. Điều đó có nghĩa là chân PD7 được kết nối với nút đóng vai trò như một đầu vào.

Portd.7 = 1 không chuyển chân lên mức cao, nhưng nó kích hoạt điện trở kéo lên bên trong của Atmega.

Nếu trạng thái if trông hơi buồn nếu bạn đã quen với arduino.

nếu bạn sử dụng câu lệnh if, bạn phải sử dụng câu lệnh "then". Trong mẫu này, câu lệnh if được sử dụng cho các hoạt động lệnh đơn lẻ. Nếu bạn muốn sử dụng nhiều lệnh hơn, bạn phải viết nó như thế này.

nếu pind.7 = 0 thì

portb.0 = 1 một số mã một số mã một số mã khác portb.0 = 0 kết thúc nếu

để sử dụng câu lệnh if này, bạn phải sử dụng câu lệnh "end if" ở cuối.

điều gì vẫn quan trọng. Có thể bạn đã thấy nó. các đầu vào không được truy vấn với portx.x, nhưng với pinx.x. Bạn có thể dễ dàng nhớ điều đó. Đầu ra có "o" (cổng) trong từ và đầu vào có "i" (pin).

Bây giờ đến lượt bạn chơi một chút.

Hướng dẫn tiếp theo của tôi sẽ sớm ra mắt (các câu lệnh chuẩn như while, select case, for và các biến.)

Nếu bạn thích hướng dẫn của tôi và muốn biết thêm thông tin cho tôi trong các ý kiến.

Đề xuất: