Программирование микроконтроллеров AVR, PIC, ARM. Разработка и изготовление печатных плат для модулей.
Korbofos » 09 окт 2011, 19:06
Что с такое с кодевиженом? Засунул этот код в avr studio! Всё идеально
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Korbofos
Сообщения: 317Зарегистрирован: 15 янв 2011, 11:27Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Реклама
Korbofos » 11 окт 2011, 15:23
Как заставить работать эту программу в кодевижене? Есть у кого какие нибудь мысли???
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Korbofos
Сообщения: 317Зарегистрирован: 15 янв 2011, 11:27Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Korbofos » 18 окт 2011, 16:31
Код: Выделить всё • Развернуть interrupt [TIM3_COMPC] void timer3_compc_isr(void) { static unsigned char current_servo=0; static unsigned int OCR33=2000; ocr+=servo_position; OCR3C=OCR33; if (current_servo==8) { current_servo=0; TCCR3C|=(1<<FOC3C); TCCR3C|=(1<<FOC3C); } else { current_servo++; } TCCR3C|=(1<<FOC3C); }
Нашёл косяк в переменной OCR33 досчитав до 64250. В седующих прерываниях её значение остаются прежним.
Что придумать?
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Korbofos
Сообщения: 317Зарегистрирован: 15 янв 2011, 11:27Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
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 спасибо вам большое! Благодаря этому нащёл проблему.
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Korbofos
Сообщения: 317Зарегистрирован: 15 янв 2011, 11:27Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Вернуться в Микроконтроллеры
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23