Korbofos » 19 окт 2011, 01:50
зло крылось в
Код: Выделить всё • Развернуть #define OCR3C (*(unsigned int *) 0x82)В кодевижене нет 16 битной переменной OCR3C, есть OCR3CH, OCR3CL. Хотя в винавр есть есть 16 битная переменная OCR3C...
Вот так всё пошло)))
Код:
Код: Выделить всё • Развернуть interrupt [TIM3_COMPC] void timer3_compc_isr(void) { static unsigned char current_servo=0; static unsigned int ocr=2000; static unsigned int pause = 18432; if (current_servo==9) { current_servo=0; ocr += pause; OCR3CH=(unsigned char)(ocr>>8); OCR3CL=(unsigned char)ocr; pause = 18432; } else { ocr+=servo_position[current_servo]; OCR3CH=(unsigned char)(ocr>>8); OCR3CL=(unsigned char)ocr; pause -= servo_position[current_servo]; current_servo++; } TCCR3C|=(1<<FOC3C); } Добавлено спустя 3 минуты 54 секунды: avr123.nm.ru писал(а): По методу отладки программы через UART в задаче 4 курса по AVR -
http://www.proavr.narod.ru/z4.htm вы можете вставить после этой строки вывод этого регистра в UART
псевдокод:
UDR = регистр;
пауза (1 секунда например);
и на терминале на ПК посмотреть что в регистре в реальном AVR получается.
Avr123 спасибо вам большое! Благодаря этому нащёл проблему.
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.