회원가입 ID/PW 찾기
AA

Firmsys RFID Demo Kit와 atmaga128로 통신 연습중인데요

Tag에 기록된 hax값을 계속 더해서 총합을 LCD에 출력하는 시킬려구 하는데요

Tag 인식이랑은 잘 하는데 문제는 Tag 인식을 안시켰는데도 부저가 울리면서 쓰레기 값이 수신되네요...

그리고 total값이 32767 이상되면 -32767로 출력이 되는데요

데이터 타입을 바꾸어도 계속 같은 결과가 나옵니다 ㅠ.ㅠ

이 두가지 문제를 어떻게 해결해야 할지... 가르침 부탁드립니다.

 

#include <mega128.h>
#include <stdio.h>
#include <string.h>
#include <delay.h>        
#include <math.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

flash char SendData[5] = {0x05, 0x02, 0x20, 0x00, 0xff}; // Read single block 
unsigned char rfid_rx[7];

void Rs232_init(void)
{
    DDRE = 0xFE;
    UCSR0A = 0x00;
    UCSR0B = 0x18;
    UCSR0C = 0x06;     
    UBRR0H = 0;
    UBRR0L = 8;    
}

void Putch(char data)
{
   while(!(UCSR0A & 0x20));
    UDR0 = data;
}  

void USART_SendData(void) //명령어 코드를 보내는 함수
{
    int i;
    for(i=0; i<5; i++)                                    
        Putch(SendData[i]);  
}
 
char Getch(void)
{
    while(!(UCSR0A & 0x80));  
    return UDR0;
}

void LCD_port()
{
    PORTA=0xff;
    DDRA=0xFF;
    PORTB=0x00;
    DDRB=0xFF;
    PORTD=0x00;
    DDRD=0xff;
    ACSR=0x80;
}

void main(void)
{      
    int i, j;         
    unsigned int value, won, total;
    unsigned char line1[10], line2[10]; 
     
       
    Rs232_init();
    LCD_port();
    lcd_init(16);    // LCD module initialization

    while (1)
    {
        USART_SendData();  
        // Read single block 입력   

        for(i=0;i<7;i++)
        {
            rfid_rx[i]=Getch();
            if(rfid_rx[i]==0xff)
                break;     
        }              
        if(rfid_rx[0] == 7)                     // Tag Read
        {                
            for(i=2, j=6; i<6; i++, j-=2)
            {
                value = rfid_rx[i]*pow(16,j);   // Read single block을 10진화
                won += value;
            }
            total += won;
            sprintf(line1, "%d", won);
        }       
        else if(rfid_rx[0] == 5 || rfid_rx[0] == 0xff )   
        {
            won = 0;
            sprintf(line1, "%d", won);
        }
        value = 0;
                
        sprintf(line2, "%d", total);

        lcd_clear();   
        lcd_gotoxy(0,0);
        lcd_puts(line1);
        lcd_gotoxy(0,1);
        lcd_putsf("Total : ");
        lcd_gotoxy(8,1);       
        lcd_puts(line2);
        delay_ms(300); 
       
    }
}

댓글 1
  • No Profile
     for(i=0;i<7;i++)
            {
                rfid_rx[i]=Getch();
                if(rfid_rx[i]==0xff)
                    break;     
            }              


    여기서 0xff가 들어오면 데이터 받기 끝인가요?






     if(rfid_rx[0] == 7)                     // Tag Read
            {                
                for(i=2, j=6; i<6; i++, j-=2)
                {
                    value = rfid_rx[i]*pow(16,j);   // Read single block을 10진화
                    won += value;
                }
                total += won;
                sprintf(line1, "%d", won);
            }       
            else if(rfid_rx[0] == 5 || rfid_rx[0] == 0xff )   
            {
                won = 0;
                sprintf(line1, "%d", won);
            }else{

    // 쓰레기값 일때 처리
         }



    이 구문에서 else{}를 추가해서 쓰레기 값을 처리하면 될듯하네요.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
568 마이크로프로세서 HOTatmaga128 에서 uart통신을 두개 동시에 쓸수있나요?4 광주공돌이 1445 2010.07.24
567 마이크로프로세서 HOT스텝모터 연결법 좀 알려주세요10 보리리 3634 2010.07.20
566 마이크로프로세서 HOTAVR 학습 방법에 대해...9 Brad 1388 2010.07.20
565 마이크로프로세서 HOTPIC16F684 외부인터럽트 질문입니다.2 세종허리케인 3567 2010.07.15
564 마이크로프로세서 HOT안녕하세요^^ ATmega128 초보자 입니다.^^5 sk민호 1147 2010.07.15
563 마이크로프로세서 HOTPIC16F684 프로그램 로직 질문드립니다..초보에요..ㅠㅠ 세종허리케인 971 2010.07.14
562 마이크로프로세서 HOTText LCD 동작을 안해서..ㅠㅠ7 호그니 1406 2010.07.13
561 마이크로프로세서 HOTCadence SPB 16.2 설치 방법 알려주세요 ㅠ4 해녀땅파 4963 2010.07.09
560 마이크로프로세서 HOTavr128로 IO 포트로 레지스터없이 I2C통신하기1 미틴개발자 2311 2010.07.08
559 마이크로프로세서 HOT8051과 RFID를 연동할때 C언어 소스..1 president 1767 2010.07.02
558 마이크로프로세서 HOT8051 전공은 무엇을 ㅠ?7 날아라신동 1049 2010.07.01
557 마이크로프로세서 HOT8051에서 timer 와, rs232 동시에 사용하기.3 처니 2095 2010.06.29
556 마이크로프로세서 HOT온도센서 하이퍼 터미널 값이 제대로 출력이 안되요 ㅠㅠ3 꿈꾸는몽상가 3137 2010.06.29
555 마이크로프로세서 HOTatm 128 전자자물쇠 관련.2 수환 1403 2010.06.25
554 마이크로프로세서 HOT8051 막 배우기 시작햇는데 도와주세요4 츄리닝 1165 2010.06.25
마이크로프로세서 HOTFirmsys RFID Demo Kit와 atmaga128 UART통신좀 봐주세요~1 해돌이 2892 2010.06.24
552 마이크로프로세서 HOT완전초보가 당장 만들 수 있는게 뭐가 있을까요?13 dozzamon 1315 2010.06.22
551 마이크로프로세서 HOT어셈블리어 난수 생성1 croquette 2529 2010.06.21
550 마이크로프로세서 HOT4433을 atmega8로 어셈블리어 수정 부탁 드릴게요 qusgmltjd 1383 2010.06.21
549 마이크로프로세서 HOT스위치 / LED 제어관련해서 질문드립니다ㅠ1 으잌ㅠㅠ 1422 2010.06.20
Prev 1 ... 17 18 19 20 21 22 23 24 25 26 ... 50 Next
  • 인생은 선을 실행하기 위하여 만들어졌다.
    - 칸트
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.