회원가입 ID/PW 찾기

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

콘텐츠 수 15

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%를 돌려드립니다.
15 전력전자 DC-DC Switching Converter IC Design 이론 자료 입니다. [8] 무료 또지 2018-03-03 0 440
14 전력전자 벅 컨버터 설계자료 [31] 무료 칸장군 2012-02-10 0 3755
13 전력전자 buck converter LC filter 설계 [3] 무료 파월 2010-09-09 0 6343
12 전력전자 high efficiency optimization of llc resonant converter for wide road range [4] 무료 파월 2010-09-09 0 3032
11 전력전자 Forward 컨버터 설계 관련 팁입니다. [4] 무료 여비04 2010-08-02 0 3168
10 전력전자 3상 전원회로의 기본~! [5] 무료 열정의도가니 2010-07-27 0 4039
9 전력전자 DC-DC 강의 PPT자료 입니다. [26] 무료 풩님 2010-07-20 0 5244
8 전력전자 SMPS 기초입니다. [32] 무료 에드문도 2010-07-12 0 3027
7 전력전자 watt 계산표 [13] 무료 연거리 2010-04-21 0 2649
6 전력전자 SMPS개요2 [5] 무료 키스님 2009-12-15 0 2803
5 전력전자 SMPS개요 [8] 무료 키스님 2009-12-15 0 2852
4 전력전자 정전압 회로 [9] 무료 DJh 2009-12-03 0 4663
3 전력전자 3레벨 컨버터를 이용한 철도차량용 주 전력변환장치 [1] 무료 나입니다. 2009-11-08 0 2255
2 전력전자 전원회로 설계 핸드북 [28] 무료 치프 2009-11-02 0 5564
1 전력전자 DC-DC 컨버터 두개 병렬연결 가능한가요?? [17] 무료 날뽕녀 2008-11-14 0 4396
  • 물이 너무 맑으면 물고기가 없고, 사람이 너무 살피면 친구가 없다.
    - 명심보감
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.