회원가입 ID/PW 찾기

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

콘텐츠 수 49

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%를 돌려드립니다.
49 계측기 & 시험장비 오실로스코프 사용방법 [3] 무료 티이거 2016-04-24 0 516
48 계측기 & 시험장비 오실로스코프나 DMM을 대여할수 있는곳이있나요? [7] 무료 새우키마 2015-04-19 0 546
47 계측기 & 시험장비 회로시험기 ppt [11] 무료 의야~♡ 2010-07-28 0 3616
46 계측기 & 시험장비 Tektronix 자료 배포한 오실로스코프 모든것입니다. [10] 무료 풩님 2010-07-20 0 2552
45 계측기 & 시험장비 열화상 카메라를 이용하여 발열부위 체크 [7] 무료 MATY 2010-05-31 0 2172
44 계측기 & 시험장비 오실로스코프 TD5200 설명서 입니다. [4] 무료 LAZEX 2010-05-26 0 2026
43 계측기 & 시험장비 AC-DC 컨버터 개발 시 필요한 측정 장비들은 어떤것들이 있을까요? [2] 무료 dogsoccer 2010-04-17 0 2063
42 계측기 & 시험장비 아날로그오실로스코프 [16] 무료 쩡이V 2010-04-02 0 4284
41 계측기 & 시험장비 함수발생기 [14] 무료 쩡이V 2010-04-02 0 2375
40 계측기 & 시험장비 오실로스코프 사용법(PDF) [11] 무료 MC雲 2010-03-12 0 4314
39 계측기 & 시험장비 무선인두기의 실체 해부 [10] 무료 하늘노랑 2010-03-02 0 2704
38 계측기 & 시험장비 전자부품 가이드 북 [7] 무료 meri5 2010-02-04 0 2563
37 계측기 & 시험장비 Sodering 관련 자료 [6] 무료 khy0858 2010-01-12 0 2189
36 계측기 & 시험장비 테스터(DVM) 메뉴얼 [10] 무료 잠재력 2009-10-01 0 4264
35 계측기 & 시험장비 함수발생기 사용법 [20] 무료 틱톡 2008-09-02 0 6903
34 계측기 & 시험장비 pspice 기초와 사용방법 [15] 무료 박병장 2008-06-06 0 3132
33 계측기 & 시험장비 오실로스코프란??? [28] 무료 뺘쑝 2008-01-24 0 3043
32 계측기 & 시험장비 인두기와 납땜제거 [23] 무료 라이언상병 2008-01-22 0 7592
31 계측기 & 시험장비 오실로스코프 프로브 선택법 [17] 무료 뺘쑝 2008-01-22 0 3339
30 계측기 & 시험장비 C언어로 매뉴얼 코당하는 것과 VHLL(very high level language)인 매틀랩/시뮬링크 사용상의 차이점 [3] 무료 아크마 2007-10-31 0 2613
  • 약속을 지키는 최선의 방법은 약속을 하지 않는 것이다.
    - 나폴레옹
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.