日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用Atmega 16/16A的Arduino復(fù)制板串口通信

 新用戶5228KeDY 2021-10-10

使用Atmega 16/16A的Arduino復(fù)制板串口通信

前面我們用Atmega16/16A的“裸片”在Arduino IDE下創(chuàng)建了Arduino開(kāi)發(fā)板的復(fù)制板。從Atmega16/16A與Arduino的管腳對(duì)應(yīng)關(guān)系上看,我們將擁有31個(gè)數(shù)字引腳和7個(gè)模擬引腳,3路PWM信號(hào)引腳,這些都是傳統(tǒng)Arduino UNO所不及的——不過(guò)我們只是關(guān)心它比Arduino板省空間。

但是Atmega16/16A畢竟是復(fù)制板,它不支持Arduino常規(guī)的串口通信。我們使用的 MightyCore板卡庫(kù)似乎沒(méi)有定義Serial庫(kù),這在官方說(shuō)明里介紹過(guò)了,所以我們把目光轉(zhuǎn)向了SoftwareSerial庫(kù),即虛擬軟串口。

結(jié)果斷斷續(xù)續(xù)調(diào)試了一天,最終得到了正確的方案。要點(diǎn)如下:

  1. 使用Arduino UNO R3作為燒錄器。燒入ArduinoISP,編程器:Arduino As ISP:

接線:

Arduino UNOAtmega16
5V10(VCC)
GND11(GND)
109(RESET)
116(MOSI)
127(MISO)
138(SCK)
  1. 設(shè)置Atmega16/16A板。Internal 8MHz、Standard Pinout,使用Upload with Programmer。

代碼:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int pin=14;//注意這句
void setup() {
  mySerial.begin(115200);
  pinMode(pin, OUTPUT);
}
void loop() {
  digitalWrite(pin, HIGH); 
  mySerial.print("Milliseconds\n");
  delay(500); 
  digitalWrite(pin, LOW); 
  delay(500); 
}
  1. 接USB To TTL燒錄器。這3條線必須必須必須全要連接,這個(gè)是關(guān)鍵。
Atmega16/16AUSB To TTL
16(D10)TX
17(D11)RX
11(GND)GND
  1. 使用SSCom調(diào)試,正常。估計(jì)匹配其他波特率、給Atmega使用外部晶振完全沒(méi)有問(wèn)題。

下面說(shuō)明一下哪些做法是不成功的,避坑之法:

  1. 低于9600的軟串口波特率設(shè)置,基本都是亂碼,怎么改動(dòng)也不行。
  2. 雖為軟串口,但如果連接Atmega16/16A上的16、17腳到Arduino的D0、D1腳,能夠接收到數(shù)據(jù),但均為亂碼,上圖即是。
  3. 必須使用另一個(gè)USB To TTL連接Atmega16/16A的16、17腳,且同時(shí)連接雙方的GND,否則接收仍為亂碼。
  4. Atmega16/16A的軟串口與USB To TTL連接時(shí),用Arduino作為編程器給Atmega16/16A編程,所有連接都不用改動(dòng),不必?fù)?dān)心串口被占用的問(wèn)題,也算是提供了一個(gè)方便。

至此,使用Atmega系列芯片完全替代Arduino基本實(shí)現(xiàn),在未來(lái)的作品上把這些芯片直接焊在萬(wàn)能板上,大概也不必再心疼了。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多