"The N76E003 is an embedded flash type, 8-bit high performance 1T 8051-based microcontroller. The instruction set is fully compatible with the standard 80C51 and performance enhanced." Как-то мне так сразу и расхотелось.
Сходу ошибок не вижу, но приметил, что вы исходите из предположения, что МК у вас затактирован частотой 16мгц. Это может быть так и не так. После включения у МК частота клока 2мгц. Если вы в остальной части программы этого не меняете, то 2 мгц и будет. Дальше вы ее делите прескалером на 9. Цифра 8 в регистре прескалера означает деление на 9, а не на 8. 2мгц / 9 = 222,222кгц. Дальше вы это дело "делите" на 20 тыс, что в итоге дает частоту следования импульсов на выходе PC4 в 11,(1) герц.
Добавил перед настройкой таймера функцию настройки юарта - 16МГц 19200 бод, и вывод сообщений в терминал. Сообщения приходят без ошибок. Значит частота настроена верно.
Странно..У меня что лог. анализатор ни чего не показывает на PC4, что светодиод подключенный к этому выводу. Все перепроверил кучу раз.
Компилятор sdcc:
Код:
SDCC : mcs51/z80/z180/r2k/r3ka/gbz80/tlcs90/ds390/pic16/pic14/TININative/ds400/hc08/s08/stm8 3.4.0 #8981 (Jan 10 2015) (Linux) published under GNU General Public License (GPL)
TIM1->CCMR1 |= (uint8_t)0x60; //110: PWM mode 1 - In up-counting, channel 1 is active as long as TIM1_CNT < TIM1_CCR1, TIM1->CCER1 |= TIM1_CCER1_CC1E; //CH1 compare Enable TIM1->CCR1H = 0x07; TIM1->CCR1L = 0xD0; TIM1->CR1 |= TIM1_CR1_CEN; TIM1->BKR |= TIM1_BKR_MOE; // OC and OCN outputs are enabled if their respective enable bits are set (CC/E in Tim1_CCERi) }
Странно..У меня что лог. анализатор ни чего не показывает на PC4, что светодиод подключенный к этому выводу. Все перепроверил кучу раз.
Компилировал ИАР-ом, смотрел осциллографом. Частота и коэффициент заполнения соответствуют значениям регистров. Кварца у меня нет, тактировалось от внутреннего генератора. Полный текст под спойлером: Спойлер
Карма: 16
Рейтинг сообщений: 211
Зарегистрирован: Вс дек 02, 2012 16:58:33 Сообщений: 945 Откуда: от туда
Рейтинг сообщения:1
Попробуй в конце так: TIM1->CR1 |= TIM1_CR1_CEN; // разрешить таймер TIM1->EGR |= TIM1_EGR_UG; // обновить установки И проверь в отладчике результаты записи в регистры таймера
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Доброго времени суток. МК STM8S. Ковыряюсь с внешними прерываниями. У такого конттроллера они очень упрощены. И нет флага внешнего прерывания. Ну он конечно же есть, но для софта недоступный. Для теста специально брекпоинтился в обработчике и генерил внешнее событие. Попытался сбросить этот внутренний флаг запретом/разрешением внеш. прерывания на пине. Это ничего не дало. Ну наверное логично, так как прерывание для всего порта идет. Забубенил вот такой макрос
Код:
Clear_Fl_Ext_D EXTI_CR1_PDIS=0;EXTI_CR1_PDIS=0x3;
, т.е просто переключил режимы возникновения событий. Ну вроде как сбросился этот флаг. Опять же в RM написано, что их можно переключать только находясь в приоритете Level3. Специально попробовал находясь в Level2, действительно перестал работать такой сброс. Т.е. если что еще прерывания надо запрещать для такой операции.
В общем ничего лучшего я не придумал, если нужен будет такой сброс.
Добавлено after 1 hour 46 minutes 51 second: Вот что обнаружил, сразу то и не догадаешься такое прочитать. Видимо баг включенный в RM. Я про регистр D_CR1.
Цитата:
11.9.4 Port x control register 1 (Px_CR1) Address offset: 0x03 Reset value: 0x00 except for PD_CR1 which reset value is 0x02.
Добавлено after 1 minute 59 seconds: Хотя на этой ноге SWIM висит. Видимо не баг.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Всем привет! Столкнулся с проблемой при разыменовывании указателя. Пользую cosmic. Передаю в функцию адрес на массива void spisendbuf(&massiv, byte) в функции spisendbuf(*massiv,byte) пытаюсь копировать значение в переменную bufer = *massiv но вместо значения получаю в буфере значение старшего адреса указателя *massiv. Как правильно копировать переменную на которую указывает указатель
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения