"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." Как-то мне так сразу и расхотелось.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Сходу ошибок не вижу, но приметил, что вы исходите из предположения, что МК у вас затактирован частотой 16мгц. Это может быть так и не так. После включения у МК частота клока 2мгц. Если вы в остальной части программы этого не меняете, то 2 мгц и будет. Дальше вы ее делите прескалером на 9. Цифра 8 в регистре прескалера означает деление на 9, а не на 8. 2мгц / 9 = 222,222кгц. Дальше вы это дело "делите" на 20 тыс, что в итоге дает частоту следования импульсов на выходе PC4 в 11,(1) герц.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Добавил перед настройкой таймера функцию настройки юарта - 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
Рейтинг сообщений: 170
Зарегистрирован: Вс дек 02, 2012 16:58:33 Сообщений: 827 Откуда: Уже не город Белых гор
Рейтинг сообщения:1
Попробуй в конце так: TIM1->CR1 |= TIM1_CR1_CEN; // разрешить таймер TIM1->EGR |= TIM1_EGR_UG; // обновить установки И проверь в отладчике результаты записи в регистры таймера
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения: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. Как правильно копировать переменную на которую указывает указатель
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения