회원가입 ID/PW 찾기

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

콘텐츠 수 149

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%를 돌려드립니다.
149 Allego & OrCAD orcad16.0 필요합니다 64비트용 무료 내마음의일식 2017-06-27 0 356
148 Allego & OrCAD orcad 16.0 설치 주소입니다. [2] 무료 Xorcad 2017-05-16 0 1330
147 Allego & OrCAD OrCAD PCB Editor 프로그램 질문드립니다. [1] 무료 kmgn0 2017-05-16 0 285
146 Allego & OrCAD OrCAD Capture "N-CH MosFET" 라이브러리 찾습니다. [3] 무료 내일의나 2017-03-07 0 226
145 Allego & OrCAD Negative Planes에 대해 질문 드립니다. [2] 무료 Astro 2017-02-14 0 161
144 Allego & OrCAD Orcad Netlist 추출 문의 [1] 무료 YEJUN 2017-02-10 0 199
143 Allego & OrCAD allegro pcb designer) 부품 배치 단계에서 bottom에 배치를 하고 싶은데 [3] 무료 호차미♡ 2017-01-20 0 269
142 Allego & OrCAD 마우스 드래그 표시 문의 드립니다. [1] 무료 미소비 2017-01-04 0 175
141 Allego & OrCAD ORCAD(Allegro) 16.6 추천 도서 부탁드립니다. [2] 무료 knightoffire 2017-01-03 0 315
140 Allego & OrCAD ORCAD PCB 설계 입문자 입니다. [1] 무료 호차미♡ 2016-11-18 0 504
139 Allego & OrCAD 질문)PCB 부품 Mirror(v16.5) [2] 무료 0808161114 2016-11-14 0 317
138 Allego & OrCAD 질문) Capture 부품 라이브러리 생성_Relay [2] 무료 0808161114 2016-10-19 0 477
137 Allego & OrCAD 시뮬레이션 하려고 하니 'cannot initialize profile'란 오류가 뜨네요.... [4] 무료 ddjde 2016-05-23 0 871
136 Allego & OrCAD win 10 호환 [9] 무료 Surium 2016-04-27 0 3318
135 Allego & OrCAD orcad 16.5 그것이 알고싶다. 무료 불멸자 2016-03-28 0 963
134 Allego & OrCAD 도와주세요~ outline 오류 [1] 무료 앙팡융 2016-03-15 0 209
133 Allego & OrCAD OrCAD16.6 설치방법 [18] 무료 빼빼로 2015-11-19 0 5141
132 Allego & OrCAD Cadence.OrCad.Allegro.SPB.16.2 가지고 계신분 무료 systec 2015-10-31 0 561
131 Allego & OrCAD 공부를시작하기전에 무료 qwe9606 2015-09-02 0 383
130 Allego & OrCAD 4층 설계하기 무료 보라색 2015-08-04 0 734
  • 작가는 자기가 하고 있는 일이 이 세상에서 가장 중요한 일이라는 것을 믿지 않으면 안된다.
    - 스타인백
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.