반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | // 외부 인터럽트 0 void INT0_vect(void); ISR(INT0_vect) { unsigned char Temp = 0; if(Int_Edge_Flag == 0) { Int_Edge_Flag = 1; EICRA = 0x03; // INT0 상승엣지 11, 하강엣지 10 // ext_int_edge(0, L_TO_H); // 상승엣지 } else { Int_Edge_Flag = 0; EICRA = 0x02; // INT0 하강엣지 11, 하강엣지 10 // ext_int_edge(0, H_TO_L); // 하강엣지 } Time_Backup = Timer_2_Count; // Time_Backup = get_timer1(); Timer_2_Count = 0; Timer_Start = 1; // set_timer1((unsigned int16) 0); // SMPTE 타임조절 if((Time_Backup >= 15) && (Time_Backup < 30)) Temp = 0,SMPTE_FLAG = 2; else if((Time_Backup > 5) && (Time_Backup < 15)) { SMPTE_FLAG++; if(SMPTE_FLAG >= 2) Temp = 1, SMPTE_FLAG = 2; } if(SMPTE_FLAG == 2) { SMPTE_FLAG = 0; if((SMPTE_SYNC_FLAG == 0)||(SMPTE_SYNC_FLAG == 1)||(SMPTE_SYNC_FLAG == 3)) { if(Temp == 0) SMPTE_BUFF = ((SMPTE_BUFF >> 1) & 0x7F); // 0 else if(Temp == 1) SMPTE_BUFF = ((SMPTE_BUFF >> 1) | 0x80); // 1 if((SMPTE_BUFF == 0xFC) && (SMPTE_SYNC_FLAG == 0)) { SMPTE_SYNC_FLAG = 1; SMPTE_DATA[8] = SMPTE_BUFF; } else if((SMPTE_BUFF == 0xBF) && (SMPTE_SYNC_FLAG == 1)) //마지막 { SMPTE_SYNC_FLAG = 2; Queue_Top = 0; Put_BitCount = 0; SMPTE_DATA[9] = SMPTE_BUFF; } } else if(SMPTE_SYNC_FLAG == 2) { if(Temp == 0) SMPTE_BUFF1 = ((SMPTE_BUFF1 >> 1) & 0x7f); // 0 else if(Temp == 1) SMPTE_BUFF1 = ((SMPTE_BUFF1 >> 1) | 0x80); // 1 Put_BitCount++; if(Put_BitCount == 8) { Put_BitCount = 0; SMPTE_DATA[Queue_Top] = SMPTE_BUFF1; Queue_Top++; if(Queue_Top == 8) { Queue_Top = 0, SMPTE_SYNC_FLAG = 3; } } } } } | cs |
반응형
'개발모듈 > 펌웨어 모듈' 카테고리의 다른 글
- Key Control 6 (0) | 2020.05.19 |
---|---|
- 소프트 시리얼 송신 (9600 Baud) (0) | 2020.05.09 |
- AVR Eeprom 읽고 쓰기 (0) | 2020.02.24 |
- Smpte Out (16Mhz 200us 타이머사용) (0) | 2019.12.16 |
- Delay 함수 어셈블리어 16Mhz (0) | 2019.12.16 |