ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
4089
Max_Fly (12.01.2004 17:47, просмотров: 8792)
Господа - я тупой, направьте на путь истинный (+) ATMEGA64 таймер1 прерывание по переполнению. исходник: // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 14.400 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // OC1C output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xFF; TCNT1L=0xF0; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; буквально сгенерировано визардом // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; ETIMSK=0x00; // Global enable interrupts #asm("sei") что тоже правильно на первый взгляд. interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here PORTB=0x10; TCNT1H=0xFF; TCNT1L=0xF0; } сама собственно суть DDRB=0xFF - направленность на выход - в самом начале программы. если комада PORTB=0x10; - стоит после определания прерываний - лампочка горит - если в прерывани - молчит как убиенная. Ну что я делаю не так??? В студии под симулятором работает!!! ассемблерный код правильный. ну что ж я делаю не так-то а? бред какой-то. оно ж работало у меня раньше...