Цитата(Maks448 @ Feb 13 2007, 13:23)

Уважаемые форумчане, объясните, пожалуйста, "чайнику" в чем прикол (или прокол?). Программка простая, как два пальца, по идее должна вывести в порт RS232 удвоенное количество байтов от числа, находящегося в счетчике (регистр Z). Реально же выводится 4608, т.е. четвертая часть. Где я допустил ошибку? Пробовал также на Mega8 - результат тот же.
Безотносительно проблемы - декремент 16-битного счетчика красивее делать командой sbiw, а проверку на 0 - "mov temp,ZH or temp,ZL" или парой sbiw+adiw, или subi ZL,0 + sbci ZH,0
А что до логики - на первый взгляд все правильно. Надо бы глянуть терминалкой (с хексом) - а что же, собственно, реально ушло ?
Цитата(Leen @ Feb 13 2007, 14:16)

Во-первых: а как это 9216/4=4608? Калькулятор и уроки математики говорят другое.. Во-вторых, а чем Вы смотрите, сколько приходит из выхода АВР? И еще: похоже, теряется ноль.. Вы не могли скорости портор приемника и передатчика разными сделать?
Четвертая часть от ожидаемого. А ожидается удвоенное от счетчика, так что математика не возражает. И с учетом кратности, вариант с разной скоростью портов представляется малоправдоподобным - что-то уж очень подозрительно кратные (если и в самом деле так).
Цитата(Leen @ Feb 13 2007, 14:16)

Еще могу посоветовать сделать эхо: поллим приемник, затем когда приняли, тут же кидаем обратно.
И еще в таких случаях помогает вывод куда-нибудь какого-нибудь строб-сигнала, чтобы посмотреть скопом. Сразу видно и периоды, и общую длительность посылки. Если, конечно, есть скоп...
Сообщение отредактировал rx3apf - Feb 13 2007, 14:32