회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
732 마이크로프로세서 HOTUSART_Receive interrpt과 USART_string interrpt차이점.. 에류시온 1674 2010.10.01
731 마이크로프로세서 HOTinput capture mode 사용시 질문.1 김성진 1739 2010.09.30
730 마이크로프로세서 HOT초음파센서 srf-02에 대한 질문. 짱동만 1481 2010.09.30
729 마이크로프로세서 HOTPWM 제어3 makanoja 1683 2010.09.28
728 마이크로프로세서 HOT모터구동관련1 샤방 1406 2010.09.28
727 마이크로프로세서 HOT그냥 끄적끄적;; lvwlsehd1 1336 2010.09.27
726 마이크로프로세서 HOTcan 통신을 공부하는데 필요한 책으로 어떤게 잇을까요.. Raphael 1968 2010.09.27
725 마이크로프로세서 HOTAVR은..?3 전기공도도 1164 2010.09.27
724 마이크로프로세서 HOT소스좀 봐주세여4 dkkkkk 1375 2010.09.24
723 마이크로프로세서 HOTatmega128 mp3플레이어3 안녕하세삼 1582 2010.09.24
722 마이크로프로세서 HOTatmega128로 ccd영상제어?? 쿨리 1895 2010.09.21
721 마이크로프로세서 HOT초보자가 atmega16으로 프로젝트를 하려는데1 나는빅토리아 1368 2010.09.18
720 마이크로프로세서 HOTatmega128 twi문의1 김성진 1541 2010.09.17
719 마이크로프로세서 HOT왜 strcpy가 에러가 나죠?4 이슬비00 2246 2010.09.17
718 마이크로프로세서 HOT짧은 예제 하나만 알려주세요2 이슬비00 1656 2010.09.16
717 마이크로프로세서 HOT인터럽트좀 알려주세요..3 이슬비00 4675 2010.09.15
716 마이크로프로세서 HOTavr으로 만들수잇는것5 마검량 1333 2010.09.14
715 마이크로프로세서 HOT리눅스(우분투)에서 사용가능한 프로그램있나요?1 하늘저아래 1477 2010.09.12
714 마이크로프로세서 HOTSD카드에 데이터기록 가능한 모듈입니다.2 남자는강 2977 2010.09.12
713 마이크로프로세서 HOT[질문] PIC SPI모드로 SD카드 제어해 보신분 계신가요? 남자는강 4115 2010.09.12
Prev 1 ... 17 18 19 20 21 22 23 24 25 26 ... 58 Next
  • 작가는 자기가 하고 있는 일이 이 세상에서 가장 중요한 일이라는 것을 믿지 않으면 안된다.
    - 스타인백
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.