close
  • 홈
  • :
  • 위치로그
  • :
  • 태그
  • :
  • 방명록
  • :
  • 관리자
  • :
  • 새글쓰기
블로그 이미지

이슬나라 [isulnara.com]
프로그램 관련 문의...
전체 (184)
자작 프로그램 (23)
EzIP (3)
IEPageSetup (3)
iSysInfoX (2)
메신저 알림이 (1)
ezSVC (1)
WebFTP (2)
iDebugX (1)
기타 (9)
버그 신고 (1)
이것저것.. (55)
WebFTP 게시판 (0)
팁 모음 (72)
linux (17)
프로그래밍 (35)
윈도우 (5)
네크워크 (7)
기타 (7)
윈도우 숨은.. (4)
터미널 서비스.. (1)
공개 웹하드 (1)
관리자 (0)
PC 원격제어.. (1)
NAS (25)
«   2010/09   »
일 월 화 수 목 금 토
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
웹디스크 네임서버 nProtect max_allowed_packet 아이피 나스 vnc pid sms Points splash svn 류종택 surveillance JDBC 디버깅 location.href 시놀로지 동영상 분할 및 병합 홈 네트워크 plug-in utf-8 VMWare SSH ezlink MyEclipse htpc 안드로이드 Peak Detection 330
[NAS] Synology DS101...
[안드로이드] 스플래...
[android] android_wi...
이전 달의 파일을 특...
Synology FileStation...
각 모듈이 서로 통신하기...
isul / 09/01
위의 프로그램을 통해서...
직비초짜 / 08/29
동일한 문제로 고생하시...
isul / 08/26
cwRsync가 업데이트 되면...
isul / 08/26
관리자만 볼 수 있는 댓...
/ 08/25
일반 어플리케이션을 서...
ㅇㅇ/ / 2009
사이코웨어 : nProtect,...
√ MIRiyA's AstraLog / 2008
웹페이지에서 인쇄시 머...
醉生夢死™ / 2006
웹페이지에서 MAC Addres...
날자~!! 날어~!! / 2005
 최근글 목록
 2010/09 [1]
 2010/08 [4]
 2010/07 [1]
 2010/06 [2]
 2010/05 [1]
넷하드
무료 원격제어 프로그램
바이러스제로
솔라리스 테크넷
스티브 맥코넬
파워해커
하얀나무's Story
Total of
330201 visitors
Today 295
Yesterday 305
 
방명록
컴센스 수정/삭제 답변하기
2010/07/15 07:42
네이트온 알리미 서버를 제가 따로 구성해서 사용하고 싶은데..
소스공개는 안해주시는건가요??
rice2842@nate.com으로 답변좀.부탁드려요
이슬님이 서버 중지하면 사용 못하기때문에....
부탁드려요
어떤 언어로 개발하신건가요?
서버는??
BlogIcon isul 수정/삭제
2010/07/15 09:16
예.. 소스 공개는 할 생각이 없습니다.
프로토콜과 자바로 된 소스가 인터넷 상에 공개되어 있으니 참고하시기 바랍니다.
파스칼(Free Pascal)로 개발했으며 현재 PowerPC 기반의 NAS에서 구동하고 있습니다.
acezoro 수정/삭제 답변하기
2010/05/27 17:56
정이 많으실 분 같습니다.^^
답변도 잘 달아주시고, 복 받으시길 바랍니다~
많이 배우고 갑니다~~
BlogIcon isul 수정/삭제
2010/05/28 12:52
답변은 되도록 빨리 달려고 노력하고 있어요..
고맙습니다^^
acezoro님도 복 많이 받으시길 바라겠습니다..
강연욱 수정/삭제 답변하기
2010/05/17 22:40
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.6 Evaluation
Automatic Program Generator
?Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 2010-05-13
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:


Chip type : ATmega128
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 1024
*****************************************************/

#include <mega128.h>

#include <stdio.h>
#include <delay.h>



/* 1Byte Receive*/
unsigned char getch1(void){
unsigned char data;
data = UDR0;
return data;
}


void main(void)
{

PORTC=0x00;
DDRC=0x87;
DDRE=0xFE; //// rx tx 설정 //

// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: Off
// USART0 Mode: Asynchronous
// USART0 Baud Rate: 9600
UCSR0A=0x00;
UCSR0B=0b10011000;
UCSR0C=0x86;
UBRR0H=0x00;
UBRR0L=0x67;

SREG = 0x80;



while (1)
{
PORTC=0X80;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
PORTC=0X00;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}
}

interrupt [USART0_RXC] void usart0_rxc(void)
{
unsigned char i, buffer[10]={0};

//SREG = 0x00;





for(i=0;i<10;i++)
{
buffer[i] = getch1();
}

PORTC=0X01;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);


if(buffer[7] == 0x77)
{

PORTC=0x02;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);



}
else if(buffer[0] == 0xAA)
{
PORTC=0x06;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}

else if(UDR0==0X00)
{
PORTC=0x07;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}








PORTC=0X04;
}



















지그비 통신을 알려주신대로해서 인터럽트가 걸리면 led가 불이 들어오게 하는건 성공했는데요.



버퍼 7번에 value 가 있어서 0x77을 보냈는데 버퍼 7 == 0x77 일때 하는 동작이 성공이 안되네요 .



책을 찾아봐도 10바이트 받는방식은 없어서 zigbee로 10바이트가 오게 되는데



UDR0는 1바이트잖아요 . 포문으로 저렇게 그냥 받아서 문제가 되는건지... 10바이를 스트링으로 받을때 어떻게 받아야 할지 도움좀 주세요.


지그비 통신자체는 되는거 같습니다. 이제. 그리고 혹시 zbs200.exe 파일 코드가 있으면 도움이 될거 같은데 c언어라면 좀 올려주실수 있으신지.
BlogIcon isul 수정/삭제
2010/05/19 18:50
ATmega128은 사용안해봐서 모르겠습니다.
인터럽트가 언제 걸리나요?
1byte 데이터가 수신될 때마다 인터럽트가 걸리는 것인가요?
만약 그렇다면 남겨주신 코드는 문제가 있을 거 같습니다.
인터럽트 내부에서 for 루프로 버퍼에 받는 중에 또 다시 인터럽트가 걸리면 원하는 대로 동작하지 않을 거 같습니다. 인터럽트 중 인터럽트가 수신되지 않는지는 모르겠네요.
ATmega128의 인터럽트에 대해서 몰라서 정확히 답변 드릴 수가 없네요.
2가지 정도 테스트 해보세요.

1. getch1() 함수 수정
현재 아래와 같은데요
/* 1Byte Receive*/
unsigned char getch1(void){
unsigned char data;
data = UDR0;
return data;
}

아래와 같이 수정해보세요.

unsigned char getch1(void)
{
while((UCSR0A&0x80) == 0x00);
return UDR0;
}

버퍼에 수신된 데이터가 있을 경우에만 데이터를 읽도록 한 것입니다.
작성하신 코드는 버퍼에 수신된 데이터가 없는 경우에도 레지스터에서 값을 가져오게 되어 있어서 문제가 있는 거 같습니다.


2. 인터럽트 사용하지 않고 해보는 건 어떤가요?
main()의 while() 루프 안에서 데이터 수신이 될 때까지 기다리다가 10bytes를 모두 수신하면 될거 같은데요.


zbs-200.exe는 델파이로 개발했습니다.
그냥 10bytes를 배열에 넣어서 시리얼포트로 전송합니다.
강연욱 수정/삭제 답변하기
2010/05/13 20:05
저코드에 있는 MCU가 하나있고 이걸 RX로 설정해놓았습니다. 하이퍼 터미널로 보니깐 1234 FFFF 머 이런식으로 아이디가 2로 설정해놓았고요 .

그래서 피시랑 지그비만을 지그비 인터보드를 통하여 연결하여 올려놓으신 프로그램으로 아이디 2번에 0X77을 전송했는데 전송이 안되는군요 .. 메뉴얼 보니깐 TX모드는 RXD1, TXD1 사용하라고 되어있고 RX 모드는 RXD0 , TXD0를 쓰라되있는데 인터보드는 알아서 RX 모드인지 TX 모드인지 아는건가요 ..;; 전송하니깐 누른그대로 수신창에 뜨기만 하고 인터럽트가 안걸리는거 같네요 .ㅠ
BlogIcon isul 수정/삭제
2010/05/13 23:34
가만히 생각해 보니 인터보드는 TxD0, TxD1에 관계없이 모두 인식했던 거 같아요..
그래야지만.. Rx 모드를 다시 Tx 모드로 변경하는 게 가능하겠죠..

인터보드가 1개 더 있으면 개발하기가 편한데요...
1개만 있으면.. 쉽지가 않죠..
저도 인터보드 1개만 구입해서 처음에 고생 좀 했습니다.
Rx 모듈 부분의 회로도 이상이 없었는데..
납땜한 거 다시 한 번 더 붙여주고 하다보니 되더군요..
강연욱 수정/삭제 답변하기
2010/05/13 19:58
메뉴얼 보면 RX TX 에 따라 TXD1 나 TXD0 을 하라고 되어있는데 피시에 인터보드를 이용해서 연결시 TX 기능이 수행될수 있나요 ??? 휴 피시에서 아무리 전송해도 원거리에 있는 모듈이 제어가 안되네요. 전송버튼을 누르면 월래 수신부 창에 글이 뜨나요 ?
BlogIcon isul 수정/삭제
2010/05/13 23:27
인터보드가 TxD0, TxD1에 관계없이 다 되는 것인지는 기억이 안나네요..
되었던 거 같은데.. 확실하지가 않습니다.
제조사에 문의하시는 게 정확하겠죠..

데이터 전송 시 수신부 쪽에 아래와 같이 전송한 내용이 표시됩니다.
<- AA 06 12 34 01 00 45 00 8F 55
<-는 전송을 의미합니다.

Rx 모듈로부터 수신된 데이터가 있을 경우에는
-> 로 표시됩니다.
강연욱 수정/삭제 답변하기
2010/05/13 19:01
아 정말감사합니다. 마지막으로 드릴질문이 rx 모듈에서 tx모듈로도 id에 tx모듈값만 넣고 똑같이 하면 전송이 가능한가요 ?

rx , tx 는 그냥 이름뿐인건가요 양방향 통신이 다된다면..

그리고 led 제어하기위해 command 나 value 중 아무거나 사용해도 된다는게 무슨말이죠 ?? 커맨드가 45이여야지만 value 값이 날아가는게 아닌가요 ??? 10바이트중 손댈수 있는건 1바이트 뿐이겠죠 ?
BlogIcon isul 수정/삭제
2010/05/13 21:59
아래에서 답변 드린 것처럼 1바이트만 사용할 수 있으며, rx에서 tx로도 보낼 수 있습니다.
rx에서 rx로도 보낼 수 있는지는 테스트하지 못해서 모르겠습니다.
강연욱 수정/삭제 답변하기
2010/05/13 19:01
아 정말감사합니다. 마지막으로 드릴질문이 rx 모듈에서 tx모듈로도 id에 tx모듈값만 넣고 똑같이 하면 전송이 가능한가요 ?

rx , tx 는 그냥 이름뿐인건가요 양방향 통신이 다된다면..

그리고 led 제어하기위해 command 나 value 중 아무거나 사용해도 된다는게 무슨말이죠 ?? 커맨드가 45이여야지만 value 값이 날아가는게 아닌가요 ??? 10바이트중 손댈수 있는건 1바이트 뿐이겠죠 ?
BlogIcon isul 수정/삭제
2010/05/13 21:58
예.. 맞네요..
커맨드는 0x45만 보낼 수 있네요.. 사용한지가 오래되어서^^
매뉴얼 다시 보니 그렇네요.
1바이트만 사용할 수 있습니다.

그리고, rx에서도 tx로 전송할 수 있습니다.
강연욱 수정/삭제 답변하기
2010/05/13 17:09
올려주신 프로그램에 밸류 자리에 77을 넣거나 88을 넣어서 led의 동작상태를 바꿔보고자 만들었습니다.

포문을 통하여 10바이트를 배열로 하나씩 저장했는데 ;; 지그비에서 10바이트를 동시에 보낸다면 저코드가 무용지물이겠지요 ;; 어떤식으로 해야될지 모르겠습니다. 도움주시면 정말 감사하겠습니다.

1바이트씩 온다면 가능할텐데..ㅠ
BlogIcon isul 수정/삭제
2010/05/13 17:32
시리얼 통신에서는 10바이트를 1바이트씩 나누어서 보내거나, 한 번에 전체를 보내거나 받는 쪽에서는 크게 신경쓰지 않아도 됩니다.
어차피 수신된 데이터는 버퍼에 쌓이게 되고, 프로그램에서는 그 버퍼에 쌓인 데이터를 읽어서 처리하게 되니까요..

AVR은 사용 안해봐서 잘 모르겠습니다만...
아래 코드는 별 문제 없는 거 같습니다..
다만 while()에서 LED를 제어하고 있는 중 시리얼로 데이터가 수신되면 LED가 제어되는데 이것을 구분하기가 어려울 거 같습니다.

패킷의 start, checksum, end 정도는 검사하는 것이 좋겠죠.
실제 사용해보니 데이터가 깨어져서 전송되는 경우가 많더군요..

그리고, 참고로 LED제어하기 위해서 command, value 중 아무꺼나 사용해도 됩니다.
강연욱 수정/삭제 답변하기
2010/05/13 17:07
제가 짠 짧은 소스입니다. ㅠ
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.6 Evaluation
Automatic Program Generator
?Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 2010-05-13
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:


Chip type : ATmega128
Program type : Application
AVR Core Clock frequency: 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 1024
*****************************************************/

#include <mega128.h>

#include <stdio.h>
#include <delay.h>



/* 1Byte Receive*/
unsigned char getch1(void){
unsigned char data;
data = UDR0;
return data;
}


void main(void)
{

PORTC=0x00;
DDRC=0x80;


// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: Off
// USART0 Mode: Asynchronous
// USART0 Baud Rate: 9600
UCSR0A=0x00;
UCSR0B=0b10011000;
UCSR0C=0x86;
UBRR0H=0x00;
UBRR0L=0x67;

SREG = 0x80;



while (1)
{
PORTC=0X80;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
PORTC=0X00;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
}
}

interrupt [USART0_RXC] void usart0_rxc(void)
{
unsigned char i, buffer[10]={0};
for(i=0;i<10;i++)
{
buffer[i] = getch1();
}

if(buffer[7] == 0x77)
{

PORTC=0x00;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);




}
else if(buffer[7] == 0x88)
{
PORTC=0x80;
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);
delay_ms(100);

}


}
강연욱 수정/삭제 답변하기
2010/05/13 17:07
안녕하세요 zbs-200으로 프로젝트를 하고 있는 대학교 학생입니다. 올려놓으신 zbs 200설정프로그램을 사용하여
기초단계로 멀리있는 mcu+zbs-200 을 결합한 보드에 있는 led를 켜보려 합니다.

그런데 아이디 설정단계가 헤깔리는데요 .rx tx 를 설정하고 각각 id로 설정하는데
명령어를 사용할때 id 쓰는칸에 쓰는 id번호는 제번호를 쓰는건가요 아니면 목적지 id를 쓰는건가요. sub id는 뭐하는건지도 궁금하고요.

그리고 rx tx 를 설정하는데 tx에서 메세지를 보내면 모든 rx에 다 전달이 되는건가요 ?
BlogIcon isul 수정/삭제
2010/05/13 17:20
먼저 모듈을 tx 모드인지 rx 모드인지는 설정 하셨죠?
제가 만든 프로그램에서 id와 sub-id는 모두 수신할 모듈의 id입니다.
보통 sub-id는 사용 안해도 됩니다. 자세한 사항은 메뉴얼을 참고하시기 바랍니다.
rx 모듈 2개의 id를 동일하게 설정하면 tx 모듈에서 해당 id로 명령을 전송하면 2개의 rx 모듈이 동시에 명령을 수신합니다.
  1 2 3 4 5 ... 45