회원가입 ID/PW 찾기
AA

#include <avr/io.h>
#define  F_CPU  16000000UL
#include <avr/delay.h>
#include <avr/interrupt.h>

 

void port_init(void)
{
 DDRA=0xff;
 PORTD=0xff;      // 포트D 내부 풀업 사용(스위치)
 EICRA=0x02;      // falling edge
 EIMSK=0x0f;      // INT0,1,2 Enable
}

 

 


void putch0(unsigned char data)  // TXD0 명령어 전송
{
 while(!(UCSR0A&0x20));   // Wait if a byte is being transmitted
 UDR0 = data;     // Transmit data
 
}

 

void putch1(unsigned char data)  // TXD1 명령어 전송
{  
 while(!(UCSR1A&0x20));   // Wait if a byte is being transmitted
 UDR1 = data;     // Transmit data
 
}

 


int main()   
{
 

 int i=0; 
        
 UCSR0B=0x18;     // Rx, Tx enable
 UCSR0C=0x06;     // 비동기 방식, No Parity bit, 1 Stop bit, 8 데이터 비트 설정
 UBRR0H=0; UBRR0L=0x08;      // 115200 bps 보레이트 설정
 DDRE=0xfe;   // uart0 Rx(입력 0), Tx(출력 1) 설정


   
 UCSR1B=0x18;     // Rx, Tx enable
 UCSR1C=0x06;     // 비동기 방식, No Parity bit, 1 Stop bit, 8 데이터 비트 설정
 UBRR1H=0; UBRR1L=0x08;      // 115200 bps 보레이트 설정
 DDRD=0xff;   // uart1 Rx(입력 0), Tx(출력 1) 설정


 
 /*모터 드라이브 1*/
 unsigned char speed0[]="SS1000,1000!";             // 속도 설정
 unsigned char text1[]="Ss100,100!";                   // 가/감속 구간의 시간 설정
 unsigned char text2[]="PE0001!";                       // 통신포트 설정
 unsigned char text3[]="SM0202!";                      // 위치제어 모드
 unsigned char return0[]="PA5100000,5100000!";    // 원점으로
 
 
 i=0;        
 while(speed0[i])putch0(speed0[i++]);  //명령어 전송 TXD0 으로
 _delay_ms(100); 
 i=0;
 while(text1[i])putch0(text1[i++]);
 _delay_ms(100);
 i=0;
 while(text2[i])putch0(text2[i++]);
 _delay_ms(100);
 i=0;
 while(text3[i])putch0(text3[i++]);
 _delay_ms(100);
 i=0;
 while(return0[i])putch0(return0[i++]);
 _delay_ms(100);

 

 /*모터 드라이브 2*/
 unsigned char speed00[]="SS1000,1000!";             // 속도 설정
 unsigned char text11[]="Ss100,100!";                   // 가/감속 구간의 시간 설정
 unsigned char text22[]="PE0001!";                       // 통신포트 설정
 unsigned char text33[]="SM0202!";                      // 위치제어 모드
 unsigned char return1[]="PA5100000,5100000!";    // 원점으로
 

 i=0;        
 while(speed00[i])putch1(speed00[i++]);  //명령어 전송 TXD1 으로
 _delay_ms(100); 
 while(text11[i])putch1(text11[i++]);
 _delay_ms(100);
 i=0;
 while(text22[i])putch1(text22[i++]);
 _delay_ms(100);
 i=0;
 while(text33[i])putch1(text33[i++]);
 _delay_ms(100);
 i=0;
 while(return1[i])putch1(return1[i++]);
 _delay_ms(100);
}

 

 

하이퍼 터미널로 했을 때는 각각 통신이되는데

모터드라이브로 통신을하면 충돌이 일어나는지 하나의 모터드라이브밖에 실행이되지 않습니다.

어떤 문제인가요 ?

 

 

댓글 2

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

search
번호 분류 제목 글쓴이 조회 수 날짜
3 머신러닝, AI & 알고리즘 HOT오목 게임 알고리즘3 새로운하늘 4252 2010.03.29
2 머신러닝, AI & 알고리즘 HOT지하철 최단거리 알고리즘은?2 지워나 3708 2008.06.20
1 머신러닝, AI & 알고리즘 HOT순차 프로그램에 대한 간단한 알고리즘과 재귀 알고리즘의 속도 테스트 - by 아크마7 아크마 4360 2007.08.08
  • 우리의 인내가 우리의 힘보다 더 많은 것을 성취할 것이다.
    - 버크
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.