회원가입 ID/PW 찾기

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

콘텐츠 수 33

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%를 돌려드립니다.
33 Software & IDEs fortran에서 수치해석 라이브러리 IMSL사용하기 [3] 무료 도시인 2014-03-04 0 215
32 Software & IDEs C# - GPS 예제 [4] 무료 달리는거북이 2010-12-03 0 3645
31 Software & IDEs 저는 학원에서 패스했습니다 ㅋ 무료 뒤집기달인y 2010-10-22 0 1993
30 Software & IDEs VS6 MFC기반에서 Rchedit 컨트롤 추가시 에러 무료 아크마 2010-10-04 0 2101
29 Software & IDEs MFC 테트리스프로그램 입니다^^ [8] 무료 초짜초짜초짜 2010-09-27 0 3104
28 Software & IDEs [Win32api/게임 ] 갤러그 [4] 무료 밍구리 2010-07-02 0 3576
27 Software & IDEs VB 에서 VC++ 처럼 메시지 이벤트 사용 [2] 무료 전자과조교 2010-05-04 0 1893
26 Software & IDEs Serial로 데이터 받아 처리하는 신체검사프로그램 [7] 무료 맑은소리 2010-04-26 0 1852
25 Software & IDEs 그리기 예제입니다 ^^ [5] 무료 전설의사나이 2010-04-10 0 1855
24 Software & IDEs MFC를 이용한 타자게임 입니다 ^^ [4] 무료 전설의사나이 2010-04-10 0 3197
23 Software & IDEs Winsock API 한글 도움말 입니다 . [6] 무료 쑤잉아 2010-04-08 0 2032
22 Software & IDEs unix network 프로그래밍 관련 자료 입니다. [2] 무료 블루미르7 2010-01-05 0 1782
21 Software & IDEs 강아지 키트를 이용하여 만들었습니다~~~ [17] 무료 kimd 2009-11-20 0 2118
20 Software & IDEs [MFC] 날짜 계산기입니다 [8] 무료 shindy 2009-10-28 0 3538
19 Software & IDEs 제어용DSP 추천합니다 [1] 무료 날아가는잡쉐 2008-09-25 0 1282
18 Software & IDEs API 시리얼통신 함수 사용방법 입니다. 참고하세요 [10] 무료 뺘쑝 2008-04-30 0 3911
17 Software & IDEs [MFC] 윈도우 크기 고정하기 [6] 무료 아크마 2008-04-28 0 3956
16 Software & IDEs 섭씨 화씨 변환 프로그램 [8] 무료 아크마 2008-04-23 0 2536
15 Software & IDEs 저.. 지금 딱 두번 글을 올려 봤는데.. 움.. 먼가 좀 바꿔야 될듯 해서..;; ㅋㅋ [1] 무료 행복하면 2007-12-03 0 1313
14 Software & IDEs c언어와 c++ 할 줄은 아는데.. 개념이 조금 부족하신분.. [14] 무료 행복하면 2007-11-29 0 1966
  • 사람은 불의한 일을 하지 않을 수 있은 연후에야 의로운 일을 할 수 있는 것이다.
    - 맹자
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.