회원가입 ID/PW 찾기
AA
atmega128로 uart포트를 사용하여 통신할려구 합니다.

워낙 초보라서 프로그램 짜는 것 부터 쉽지않네요;;

제가 구현하고자 하는 프로그램은 대충 이런 것입니다.

LED신호가 adc에 의해 불이 들어오면 uart포트를 통해 컴퓨터 창에 1이라는 신호가 들어오게끔 만드는 것이고 그반대의

경우는 0이 뜨게끔 만드는 것입니다.

학교 조교가 adc register값을 uart register에 실어서 보내면 된다고 하셨는데 감이 안오네요;;;

프로그래밍을 해야 하는데  제발 부탁드립니다...도와주세요
댓글 3
  • No Profile

    #define FOSC 7372800  // main clock speed
    void uart1_init(unsigned long baud_data)
    {
     unsigned long UBRR_DATA;
     
     // 송수신 속도 설정
     UBRR_DATA = ((FOSC/baud_data)/8)-1;

     UBRR1L = (unsigned char)(UBRR_DATA & 0xFF);
     UBRR1H = (unsigned char)(UBRR_DATA >> 8);
     
     // Enable receiver and transmitter
     SETBIT(UCSR1A, U2X1);    // double speed
     
     SETBIT(UCSR1B, RXCIE1);    // RXC interrupt enable
     SETBIT(UCSR1B, RXEN1);    // RX enable
     SETBIT(UCSR1B, TXEN1);    // TX enable

     // Data bit 8
     SETBIT(UCSR1C, UCSZ10);  
     SETBIT(UCSR1C, UCSZ11);

     return;
    }

    // usart 1 rx interrupt
    #pragma vector = USART1_RXC_vect
    __interrupt void USART1_RXC_func(void) 
    {
        // data 받는곳
     ucRx1_Buff[ucRx1_Count++] = UDR1;
     return;
    }

    보낼땐 이렇게
    UDR1 = '1';

    제가 쓰는 함수에서 간단하게 정리해왔습니다.
    제 UART전체 소스를 드리면 아마 더 헤메실거 같아서.. 간단하게 필요한 내용만 정리 해봤습니다.

    정확한것은 Data sheet UART부분 보시면 기본 소스가 있습니다. 그것만으로도 하시고자하는걸 충분히 하실수 있다고생각합니다.

    현재 이소스는 UART 0가 아닌  UART1 을 기준으로 되어있으며, 레지스터를 바꿔 설정하시면 uart 0도 가능합니다.

    main 에서 uart1_init(9600); 이렇게 넣어주시면, 9600bps 로 설정이 됩니다.

    추리다 보니 오류 및 동작이 안될수 있으니 참고만하시고, 책과 Datasheet 보시고 프로그램 하시면 그닥 어렵지는 않을것이라 생각 됩니다.

  • No Profile
    아. 그리고 FOSC는 메인 클럭 크리스탈 스피드입니다. 현재의 예는 7.3728Mhz인 경우입니다. 16Mhz 이면
    #define FOSC 16000000 으로 고치시면 됩니다.
  • No Profile
    void tx_char(unsigned char tx_data)
    {
      //시리얼포트로 데이터 송신이 완료되고 송신버퍼가 준비되었는지 검사
      while((UCSR0A&0x20) == 0x00);
      UDR0 = tx_data; //시리얼 포트를 통하여 데이터 전송
    }

    하나 놓으시고 쓰실때는 tx_char('1'); 하면 pc로 아스키코드 1이 갑니다.

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
668 마이크로프로세서 HOTAVR 교육 프로그램 질문입니다.1 sapialdun 5232 2010.11.16
667 마이크로프로세서 HOTatmega 질문 드립니다.2 sapialdun 1188 2010.11.16
666 마이크로프로세서 HOT8051 어셈블리질문좀할게요ㅠ2 바나나보트 1591 2010.11.15
665 마이크로프로세서 HOT8051 다운카운터 질문이요 partangel 1775 2010.11.13
664 마이크로프로세서 HOTpic용으로 짜진 어셈을 8051용으로 바꿀수 잇나요?5 고장이 1360 2010.11.09
663 마이크로프로세서 HOT음성 안내 VOICE CHIP4 광대역 1777 2010.11.09
662 마이크로프로세서 HOTCSTACK 이라는게 뭔가요?1 BARK 2483 2010.11.06
661 마이크로프로세서 HOTatmega32의 핀을 연결하는 법..1 jyuder 925 2010.11.04
660 마이크로프로세서 HOTF포트 입력 문의 입니다.1 핵교 1641 2010.11.04
659 마이크로프로세서 HOT코드비전에서의 퓨즈비트 설정법좀 가르쳐주세요1 POV매니아 2371 2010.11.04
658 마이크로프로세서 HOT예전에 작품하나한다고 생각했던거 시작중인데요7 온니무 1238 2010.11.04
657 마이크로프로세서 HOT12V에서 8V 사이를 넣어주라는 것은 그속에 이미 레귤레이터가 있는 것이 아닌가요?1 바다거북 1158 2010.11.02
656 마이크로프로세서 HOTvoliate에 대한 이야기가 있어서3 바다거북 4621 2010.11.02
655 마이크로프로세서 HOTATmega128 소스문의요1 양양양111 1391 2010.11.01
마이크로프로세서 HOTuart포트 사용하여 통신3 촌철살인 1538 2010.11.01
653 마이크로프로세서 HOTKEIL Example에서 STM32_Init.c 내부의 0xFFUL에서 UL은 무슨 의미인지요?1 세상탈출 3232 2010.10.31
652 마이크로프로세서 HOTAVR-ISP error enteing proming mode8 POV매니아 7497 2010.10.30
651 마이크로프로세서 HOT질문입니다ㅜ4 lju_0415 1144 2010.10.29
650 마이크로프로세서 HOTATMEG128로 SRF04를 쓰고 싶습니다.. 리타이켄 2363 2010.10.25
649 마이크로프로세서 HOTATmega128로 LED60개를 제어해보려하는데 포트확장에 관해서 문제가있어요 ㅠㅠ5 POV매니아 3426 2010.10.24
Prev 1 ... 12 13 14 15 16 17 18 19 20 21 ... 50 Next
  • 약속을 잘하는 사람은 잊어버리기도 잘한다.
    - T.플러
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.