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.cs
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");
            }
        }
    }
}
참고이 페이지.
그리고 회로는 이런 느낌입니다.

TXD와 RXD가 연결될 때 움직이는 느낌이에요.
따라서 PC에 연결하고 C# 프로그램을 시작합니다.

마이크로컴퓨터에서 신호를 받을 수 있을까요!!!!!
그게 다야.
다음 지옥 여행이 시작된다.

좋은 웹페이지 즐겨찾기