회원가입 ID/PW 찾기

1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.

콘텐츠 수 739

C 언어

펌웨어 & 코딩언어 구매수 0 2010.08.12 14:02:41
판매자 연희야 판매 납포인트 무료 평점 0점 / 총 0명 참여

at90can128 공부하는 초보입니다 ㅜㅜ
아래 소스는 CAN 통신으로 온도값 수신하여 TEXT lcd에 출력하는 프로그램입니다.
질문들은 빨강색 으로 나타 냈고요
고수님들 꼭 좀  도와주세요 ㅜㅜ
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include "avr_lib.h"
#include "lcd.h"
#include "can.h"

// 1)
volatile unsigned char CAN_TX = 0;
unsigned char timer0Cnt=0;
unsigned int tmp;
Msg_object Rmsg, Tmsg, Imsg;
TCan_fifo Can_fifo;

void printf_temp(u16 sense_temp);


int main(void)
{
// 2)
 can_initialize(b1M);
 init_can_fifo(&Can_fifo);  // initialize CAN FIFO
 can_RXmsg_set(1, STD, 0x00, 0x00);

 CANGIE |= 0x80;
 CANGIE |= 0x20;  // RXOK
 CANEN1 = 0xFF;
 CANEN2 = 0xFF;

// 3)
 TCCR0A = 0x05;
 TCNT0 =0xff - 156;
 TIMSK0 |= 1 << TOIE0;                  //이 라인에서 1<<TOIE0 가 이해 안갑니다 ㅜㅜ  TIMSK0 |= 1 먼저 수행하고
                                                            //   <<TOIE0를 수행하는 건가요?    
                                                           // 그리고 TOIE0<<1 와 차이점은 뭔가요?    1>>TOIE0 이런게 존재하나요?? 
 TIFR0 |= 1 << TOV0;   

// 4)
 lcdInit();
 lcdGotoXY(2,0);
 lcdPrintData("CAN Module 1",12);
 lcdGotoXY(2,1);
 lcdPrintData("Temp : ",7);

 sei();

 while(1) {
// 5)
   // CAN 메시지가 수신된 경우 이를 읽어서 처리한다
   if( read_can_fifo(&Can_fifo, &Rmsg) ) {
     tmp = (((u16)Rmsg.data[4])<<8) | (u16)Rmsg.data[5];
  lcdGotoXY(9,1);
     printf_temp(tmp); // 온도값을 TEXT LCD에 출력
   }
// 6)
   if(CAN_TX == 1) {  // Delay 1 sec
     CAN_TX = 0;
     Tmsg.ide = STD;  // Standard
     Tmsg.id = 0x01;  // Module 1 의 ID
     Tmsg.length = 8;  // 데이터 길이
     Tmsg.data[0] = 0xff; // 센서값 달라는 명령
     can_transmit(5, &Tmsg);// CAN 송신
     CANCDMOB |= 0x80;  // 수신모드

   }
 
 }
    
}

// 7)
void printf_temp(u16 sense_temp) {    // temp값 출력 함수
 u08 s100,s10,s1;

 s100 = sense_temp/100;       // 100의 자리 값 저장, 100단위까지의 값을 100로 나눈 몫
 
 if(s100> 0) lcdDataWrite(s100+'0');   // 100의 자리 값이 0 이상이면 출력
 else lcdPrintData(" ",1);      // 100의 자리 값이 0 이하이면 빈칸 출력

 sense_temp = sense_temp%100;     // 100으로 나눈 나머지, 10단위까지의 값 저장

 s10 = sense_temp/10;       // 10의 자리 값 저장, 10단위까지의 값을 10으로 나눈 몫
 s1 = sense_temp%10;       // 1의 자리 값 저장, 10단위까지의 값을 10으로 나눈 나머지
 if(s10> 0) lcdDataWrite(s10+'0');    // 10의 자리 값이 0 이상이면 출력
 else {           // 10의 자리 값이 0 이하일때
  if(s100> 0 ) lcdDataWrite('0');    // 100단위 숫자가 출력되었으면 0으로 출력
  else lcdPrintData(" ",1);     // 100단위 숫자가 출력되지 않았으면 빈칸 출력
 }
 lcdDataWrite('.');        // 소수점
 lcdDataWrite(s1+'0');       // 1의 자리 값 출력
 
}

// 8)
SIGNAL(SIG_OVERFLOW0)
{
 cli();
 TCNT0=0xff - 156;
 timer0Cnt++;
 
 if(timer0Cnt == 100){    // 0.01s * 100 = 1s  //1초를 얻기 위한 카운트 횟수
  CAN_TX = 1;
  timer0Cnt=0;
 }
 sei();
}


profile
컴쟁이 2012.05.25 00:04
잘보고 갑니다...
profile
om 2016.11.04 12:59

1 << TOIE0  

TOIE0 값만큼 1를 좌측으로 쉬프트시킵니다. 물론 임시버퍼에서 행합니다.

TOIE0 = 1 이라면 임시버퍼에는 0000 0010 로 됩니다.( *2 )

TOIE0 = 2 이라면 임시버퍼에는 0000 0100 로 됩니다.( *4 )

 

비트를 조작할때 유용하게 사용합니다.

실재로는 별거 아닌데,아마도 멋있게 보일려고 하는 장난?ㅎㅎㅎ

profile
시나브로69 2017.06.24 18:34
좋은 자료 감사합니다.
search
List of Articles
번호 분류 제목 평점 포인트 판매자 등록일 구매수 조회 수
공지 공공의 목적으로 공유하고자 하는 소프트웨어는 '소프트웨어 자료실'에 업로드를 요청드립니다.
공지 구매후 평점 댓글을 남겨주시면 구매포인트의 20%를 돌려드립니다.
739 마이크로프로세서 AVR RTOS template [2] 무료 아크마 2017-08-26 0 178
738 마이크로프로세서 AVR ISP 결선도(프린터 포트/LPT) [1] 무료 아크마 2017-08-26 0 246
737 마이크로프로세서 STM32 시리즈 MCU graphical configuration tool [5] 무료 코찌코찌 2013-12-11 0 408
736 마이크로프로세서 Avr Studio에 형변환 연산자가 있나요? [2] 무료 트리비 2016-11-12 0 123
735 마이크로프로세서 PIC CC-C메뉴얼 [2] 무료 크히히힝 2016-08-12 0 176
734 마이크로프로세서 PIC MCU를 처음 접해보는데.. [1] 무료 크히히힝 2016-08-04 0 189
733 마이크로프로세서 mplab ide 8.92 설치! [2] 무료 회사간공대생 2016-08-04 0 559
732 마이크로프로세서 8051 [5] 무료 크크크크크1 2016-06-08 0 126
731 마이크로프로세서 stm32f103 demo board example [2] 무료 seele 2015-09-04 0 557
730 마이크로프로세서 stm32f103자료입니다. [3] 무료 seele 2015-09-04 0 765
729 마이크로프로세서 따끈한 MPLAB X IDE 한글 메뉴얼입니다. [25] 무료 om 2015-08-10 0 2951
728 마이크로프로세서 네오스 즐겨찾기 to 텍스트 VB6 [3] 무료 네오스f91e9 2015-07-31 0 188
727 마이크로프로세서 네오스 AVR soft usart code 생성기 VB6 [1] 무료 네오스f91e9 2015-07-30 0 216
726 마이크로프로세서 네오스 GPS 시뮬레이터 VB6 [3] 무료 네오스f91e9 2015-07-30 0 240
725 마이크로프로세서 네오스 AVR ISP 케이블 짝짓기 VB6 [1] 무료 네오스f91e9 2015-07-30 0 258
724 마이크로프로세서 네오스 LRC 계산기 VB6 [3] 무료 네오스f91e9 2015-07-30 0 562
723 마이크로프로세서 네오스 사인 테이블 생성기 VB6 [2] 무료 네오스f91e9 2015-07-30 0 243
722 마이크로프로세서 네오스 스위치 코드 메이커 VB6 무료 네오스f91e9 2015-07-30 0 224
721 마이크로프로세서 네오스 주석변경 툴 A, B VB6 무료 네오스f91e9 2015-07-30 0 218
720 마이크로프로세서 네오스 계산기 VB6 [2] 무료 네오스f91e9 2015-07-30 0 249
  • 세상이 자기를 버렸다고 생각하지 마라. 세상은 날 가진적이 없다.
    - 박 종영
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.