|
Экспериментирую.
Хочу присобачить DS1621 к AT90S2313 и выдать результат измерения в PC по RS232. Использую CVAVR.
"Все просто" - скажете Вы.
Да, когда знаешь...
Взял демку CVAVR на LM75 и AT90S8515. Заменил LM75 на DS1621.
Слепил модель в Proteus VSM (спасибо ТЕНИ за модель DS1621!). Все работает как часы.
Заменил AT90S8515 на AT90S2313. Все работает как часы.
Перехожу к железу.
Кварц только 4МГц (на схеме 3.6864 МГц) Меняю UBRR=23 на UBRR=25.
Модель работает как часы.
Собираю макет. Терминал включаю CVAVRовский. В терминале - мусор. Вообще терминал получает сигнал только если отключен TxD (3pin в 9-ти пиновом разъеме). Если его подключить - прием останавливается.
Подскажите, плиз, что у меня не так?
Погрешность из-за кварца?
Несовместимость уровней TTL<->RS232?
Идеология?
И еще.
Printf вывода температуры работает как-то странно.
// printf("t=%i.%u\xf8C\r\n",temp/10,abs(temp%10));
printf("t=");
printf("%i.%u\xf8C\r\n",temp/10,abs(temp%10));
Если использовать закомментированную строку, то выводится модуль значения температуры (отрицательные и положительные температуры отображаются одинаково, как положительные без знака).
А если использовать раскомментированные строки - то появляется знак "-" на отрицательных температурах.
Кто может объяснить почему?
Вообще я хотел проверить это же интересное поведение Printf не только на модели, но и на железе, но вот железо меня подвело. Или я его подвел...
Заранее спасибо!
E-mail: info@telesys.ru