AVR 마이크로컴퓨터 각종 조작 ②-1 직렬 통신 1
5207 단어 ATmega328PAVRC#
마이크로컴퓨터에서 데이터를 보내다
마이크로컴퓨터에서 마이크로컴퓨터 ROM 내의 일정한 수치를 수신하다
PC 화면으로 출력합니다.
통신 설정
전송 속도: 250kbps
패리티:없음
비트: 8비트
정지 비트: 1비트
네.마이크로컴퓨터와 PC는 같은 설정을 한다.
마이크로컴퓨터에 쓰는 프로그램은 다음과 같다.
main.c#include <avr/io.h>
#include <avr/interrupt.h> //まだいらない
int main(void)
{
UCSR0B = 0b00001000;//USART送受信ENA/DIS設定
UCSR0C = 0b00000110;//USART各通信設定
UBRR0 = 4;//システムクロック20MHz、ボーレート250kbps設定
while(1)
{
while ( !(UCSR0A & (1<<5)) );//送信バッファが空くまで待機
UDR0 = 0x77;//0x77をPCに送信
}
}
각 레지스터 값의 작용은 ATmega328P를 보는 문서라고 쓰여 있다.
(귀찮아서 생략했다.)
참고로 ADC 전환 속도를 바탕으로 하는 보트율은16f_{sample} [\rm bps]
.(16: 8비트×2바이트, 10비트에 따라 ADC 해상도 결정)
ADC 최대 해상도 샘플링 주기: 15kSample/s
240kpbs가 필요합니다.바삭바삭하다.
PC는 C#로 제작됩니다.
C#로 직렬 포트 통신은 이번이 처음입니다.
잘 될까봐 걱정이에요.
Program.csusing System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnBoardTester
{
class Program
{
static void Main(string[] args)
{
//受信Only
SerialPort serialPort = new SerialPort("COM3", 250000, Parity.None, 8, StopBits.One);
serialPort.Open();
while (true)
{
System.Console.WriteLine(serialPort.ReadByte().ToString("x2")+"\n");
}
}
}
}
참고이 페이지.
그리고 회로는 이런 느낌입니다.
TXD와 RXD가 연결될 때 움직이는 느낌이에요.
따라서 PC에 연결하고 C# 프로그램을 시작합니다.
마이크로컴퓨터에서 신호를 받을 수 있을까요!!!!!
그게 다야.
다음 지옥 여행이 시작된다.
Reference
이 문제에 관하여(AVR 마이크로컴퓨터 각종 조작 ②-1 직렬 통신 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/smnhooi/items/0c9d67ad4771f81a1a8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <avr/io.h>
#include <avr/interrupt.h> //まだいらない
int main(void)
{
UCSR0B = 0b00001000;//USART送受信ENA/DIS設定
UCSR0C = 0b00000110;//USART各通信設定
UBRR0 = 4;//システムクロック20MHz、ボーレート250kbps設定
while(1)
{
while ( !(UCSR0A & (1<<5)) );//送信バッファが空くまで待機
UDR0 = 0x77;//0x77をPCに送信
}
}
16f_{sample} [\rm bps]
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnBoardTester
{
class Program
{
static void Main(string[] args)
{
//受信Only
SerialPort serialPort = new SerialPort("COM3", 250000, Parity.None, 8, StopBits.One);
serialPort.Open();
while (true)
{
System.Console.WriteLine(serialPort.ReadByte().ToString("x2")+"\n");
}
}
}
}
Reference
이 문제에 관하여(AVR 마이크로컴퓨터 각종 조작 ②-1 직렬 통신 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/smnhooi/items/0c9d67ad4771f81a1a8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)