회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
2944 자유주제 HOT흠냐 마이컴 처음이라 어렵 0-;;3 카린 16068 2010.06.25
2943 자유주제 HOT'캡틴' 박지성, 국가대표 최고의 꿀벅지 선수 1위10 필살기 1877 2010.06.25
2942 자유주제 HOTmesi22 필살기 1749 2010.06.25
2941 자유주제 HOT정회원 하고싶어요 ..3 필살기 4580 2010.06.25
2940 전기전자 아무거나 HOTavr 인터럽트에 대해서 질문이요..2 토트 1034 2010.06.25
2939 펌웨어 & 코딩언어 HOTc언어 관련3 수환 856 2010.06.25
2938 전기전자 아무거나 HOT회로도관련4 수환 1189 2010.06.25
2937 마이크로프로세서 HOTatm 128 전자자물쇠 관련.2 수환 1403 2010.06.25
2936 마이크로프로세서 HOT8051 막 배우기 시작햇는데 도와주세요4 츄리닝 1165 2010.06.25
2935 자유주제 HOT214납..인데...재로그인할때....정회원..수정이...5 맑은하늘 8001 2010.06.25
2934 펌웨어 & 코딩언어 HOT텍트로닉스(tektronix) 오실로스코프 질문드려요~~1 파괴지왕 1168 2010.06.24
2933 전기전자 아무거나 HOT시리얼 통신 이용한 모터 PID 제어1 히알 2177 2010.06.24
2932 자유주제 HOT나도 정회원좀 해보자~~ ㅜㅜ7 히알 3991 2010.06.24
마이크로프로세서 HOTFirmsys RFID Demo Kit와 atmaga128 UART통신좀 봐주세요~1 해돌이 2892 2010.06.24
2930 PADS HOT서적 추천좀 부탁드립니다.5 레즈온 1886 2010.06.24
2929 전기전자 아무거나 HOTPADS V9.0.2관련 서적들중..1 레즈온 846 2010.06.24
2928 전기전자 아무거나 HOTdc 병렬연결에 대해 질문 드립니다!1 짱코 1353 2010.06.23
2927 자유주제 HOT납100개 얻는것 조금은 어렵군요..10 짱코 4366 2010.06.23
2926 전기전자 아무거나 HOTRTX51이란게....1 핻님 834 2010.06.23
2925 마이크로프로세서 HOT완전초보가 당장 만들 수 있는게 뭐가 있을까요?13 dozzamon 1315 2010.06.22
  • 자유에게는 의무라는 보증인이 필요하다.
    - 투르게네프
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.