회원가입 ID/PW 찾기
AA

안녕하세요

컴퓨터 keyboard를 통해 led제어 를 usart통신으로하려합니다

그런데 하이퍼터미널까지는 했는데요

제어가 되지않습니다

그냥 불만 들어옵니다..

어떤 포트에는 불이 들어오지 않지만 어떤 포트에는 불이 들어옵니다

무엇이 잘못된건지몰라서 질문 올립니다

혹시 소스보시고 아시는분은 빨리 답변좀 해주세요ㅠ

 

 

 

 

 

#include <avr/io.h>
#include <avr/interrupt.h>
#include "d:/WinAVR-20100110/avr/include/avr/iom128.h"
#include <stdio.h>

void tx0Char(char message);
void tx1Char(char message);


//int putchar(char c);
//int getchar(void);
void port_init(void);
void uart0_init(void);
void uart1_init(void);
void init_devices(void);
void delay(int n);
static int Putchar(char c, FILE *stream);

static int Putchar(char c, FILE *stream)
{
 tx0Char(c);
    tx1Char(c);
 return 0;
     
}

/*
// printf 함수에서 사용할 putchar 에 UART0와 UART1으로
// 데이터를 보내도록 하였다.
int putchar(char c)
{
    tx0Char(c);
    tx1Char(c);
 return c;
}*/

// UART0 을 이용한 출력
void tx0Char(char message)
{
 while (((UCSR0A>>UDRE0)&0x01) == 0) ;  // UDRE, data register empty       
    UDR0 = message;
}

// UART1 을 이용한 출력
void tx1Char(char message)
{
 while (((UCSR1A>>UDRE1)&0x01) == 0) ;  // UDRE, data register empty       
    UDR1 = message;
}

void USART_Transmit(unsigned char data)
{
 /*wait for empty transmit buffer*/
 while(!(UCSR0A & (1<<UDRE)));

 /*put data into buffer, sends the data*/

 UDR0 = data;

}

unsigned char USART_Receive(void)
{
int toggle=1;

 char temp;
 int shift = 0;
 /*wait for data to be received*/

 while(!(UCSR0A & (1<<RXC)));

 /*Get and return received data from buffer*/
 temp = UDR0 & 0xff;

 return temp; 

}


void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0x83;//83
 PORTB = 0x00;
 DDRB  = 0x00;
 PORTC = 0x00; //m103 output only
 DDRC  = 0x00;
 PORTD = 0x00;
 DDRD  = 0x00;
 PORTE = 0x02;
 DDRE  = 0x00;
 PORTF = 0x00;
 DDRF  = 0xff;//ff
 PORTG = 0x00;
 DDRG  = 0x03;//03
}


//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
 UCSR0B = 0x00; //disable while setting baud rate
 UCSR0A = 0x00;
 UCSR0C = 0x06;
 UBRR0L = 0x67; //set baud rate lo
 UBRR0H = 0x00; //set baud rate hi
 UCSR0B = 0x18;
}

//UART1 initialize
// desired baud rate:9600
// actual baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart1_init(void)
{
 UCSR1B = 0x00; //disable while setting baud rate
 UCSR1A = 0x00;
 UCSR1C = 0x06;
// UBRR1L = 0x2F; //set baud rate lo 7.3728 MHz
// UBRR1L = 0x47; //set baud rate lo 11.0592 Mhz
 UBRR1L = 0x67; //set baud rate lo 16Mhz
 UBRR1H = 0x00; //set baud rate hi
 UCSR1B = 0x18;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 cli(); //disable all interrupts
 XDIV  = 0x00; //xtal divider
 XMCRA = 0x00; //external memory
 port_init();
 uart0_init();              // UART 0 초기화
 uart1_init();              // UART 1 초기화
 fdevopen(Putchar,0);  

 MCUCR = 0x00;
 EICRA = 0x00; //extended ext ints
 EICRB = 0x00; //extended ext ints
 EIMSK = 0x00;
 TIMSK = 0x00; //timer interrupt sources
 ETIMSK = 0x00; //extended timer interrupt sources
 sei(); //re-enable interrupts
 //all peripherals are now initialized
}


// 시간 지연 함수
void delay(int n)
{
 volatile int i,j;

 for(i=1;i<n;i++)
 {
     for(j=1;j<600;j++);
 }
}


int main (void)
{

 init_devices();

 volatile unsigned char receive = 0;
 
 //insert your functional code here...
 printf("\n\r\ntesting...\n\r");
 printf("printf 테스트 프로그램...\n\r");


  printf("1. LED_ON / OFF 제어(q,w)\n");
  printf("2. 커텐온오프(a,s)\n");
  printf("3. 보안 온오프(z,x)\n");
  printf(" : ");
 

 do
 {
  receive = USART_Receive();
  
  switch (receive)
  {
   case 'q' :
   
    PORTD = 0xff;
   
   break;

   case 'w' :    /*js :빠져서추가*/ 
    
    PORTD = 0x00;   

   break;


   case 'a' :
   
    PORTA =  PORTA  | 0x01;   // 0000 0001
   
    delay(100);
    
    PORTA = PORTA & 0xfe;
   break;

   case 's' :
    PORTA = PORTA | 0x02;    // 0000 0010

    delay(100);

    PORTA = PORTA & 0xfd;   // 1111 1101
   break;

   case 'z' :
   //  PORTA_temp = PORTA_temp | 0x04;        //   0000 0100
   PORTA = PORTA | 0x04;
   break;

   case 'x' :

   PORTA = PORTA & 0xfc;   // 1111 1011

   break;

   default : break;


  }

     }while(1);

 


 

 

 

 return 0;
}

댓글 1
  • No Profile

    이소스를 한가히 분석하고 답을 드리긴 쉽지않겠죠.. 기본적으로 PC에서 보내는 직렬신호는 들어오는지..문자는 수신이 됬는지는 확인하셨나요?

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

search
번호 분류 제목 글쓴이 조회 수 날짜
536 Analog & Mixed-Signal 설계 HOT220V를 DC5V로 하는 회로인데 동작이 제대로 안 되요.5 컴맹9506 2923 2011.08.30
535 전기전자 아무거나 HOT485통신에대한 궁금증2 카나데 2622 2011.08.20
534 Analog & Mixed-Signal 설계 HOTSIF신호 다룰수있으신분요 도와주세요..2 하늘날다 2305 2011.08.18
533 드론/로봇/라인트레이서 HOTADC 하이패스에 관하여 질문드립니다.2 mystyle_me 2209 2011.07.09
532 전기전자 아무거나 HOT로봇 청소기 반도체 소자 어떤게 들어가나여??2 다보기 1503 2011.06.30
531 Analog & Mixed-Signal 설계 HOT안녕하세요 왕초보의 피스파이스 질문입니다1 choieman 1890 2011.06.30
530 전기전자 아무거나 HOT적외선 센서1 흐기미 1782 2011.06.29
529 전기전자 아무거나 HOT그래픽 LCD 관련 질문드립니다! 랜시스 1489 2011.06.24
528 Sensor 설계 HOT콘덴서 인덕터 코일 단위와 관련한 질문입니다.1 windjick 2956 2011.06.21
527 Analog & Mixed-Signal 설계 HOT비교기 질문있습니다.5 신카레라이스 2630 2011.06.06
526 Analog & Mixed-Signal 설계 HOTpspice.,,3 약곰탱이 1696 2011.06.02
525 전기전자 아무거나 HOT윈도우 7인데요,,,pspice가,,,1 약곰탱이 2738 2011.06.02
524 전기전자 아무거나 HOT레벨메타로 전압, 데시벨 읽는 방법이 궁금 합니다. 슈팅 2401 2011.06.01
523 Analog & Mixed-Signal 설계 HOT회로도를 설계하려하는데요,,,,,5 약곰탱이 1932 2011.05.31
522 Analog & Mixed-Signal 설계 HOT디지털 인수분해기 회로도 입력에대해서 회로구함 1590 2011.05.26
521 전기전자 아무거나 HOTPspice를 이용해서1 멋진하나 1749 2011.05.26
520 Analog & Mixed-Signal 설계 HOT긴급긴급 !!!!!!!ㅜ eeffoc 2355 2011.05.25
519 Analog & Mixed-Signal 설계 HOTpspice 이용한 회로설계 eeffoc 2194 2011.05.25
518 Analog & Mixed-Signal 설계 HOT스피커 앰프 선정 방법 좀 알려주세요... 헌터 1934 2011.05.06
517 Analog & Mixed-Signal 설계 HOT차단주파수설정에 관한 질문드립니다. 유감 2501 2011.05.03
Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 39 Next
  • 사랑은 사람들을 치료한다. 사랑을 받는 사람, 사랑을 주는 사람 할것 없이.
    - 메닝거
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.