Цитата(Skaf @ Jun 6 2009, 20:34)

МК мега16. Совсем не работает это значит не мигает светодиод, который висит на PD7 и мигает за счет PORTD = ~PORTD;
Вот реальные байты принятые из ком порта ПК. Должен быть натуральный ряд.
FE 03 04 FF 06 FF 08 1F FE 0B FE F8 0E F8 10 1F FF F3 F4 F1 FF 18 1F 1E 1B 1C 1F 1E FF 20 E1 FE 23 24 3F
А часом это самое мигание PORTD = ~PORTD не убивает данные которые шлет UART? UART тоже висит на PORTD. (банально КЗ между PD2 и PD1 например)
Если взять во внимание что данные по UART передаются в обратном порядке, например 04h передается как "0 - 0010 0000 - 1", то получить FF после передачи 04 можно если частота передатчика завышена относительно частоты приемника, и последний "0" воспринимается как старт бит следующего символа.
08 09 0A
- 0 0001 0000 1 - 0 1001 0000 1 - 0 0101 0000 1 -
превратилось в
08 1F FE
- 0 0001 0000 x - 0 1111 1000 x - 0 0111 1111 1 -
Обилие "1111" тут тоже символ начал приниматься раньше чем нужно (в момент передачи СТОП бита / межсимвольной паузы). Что в свою очередь говорит, что частота передатчика м.б. завышена относительно приемника.
Цитата
Осциллографа нет у меня ( Максимум что могу сделать- понизить скорость передачи и посмотреть на осциллографе на базе звуковой карты ) Вечерком это тоже сделаю.
Проверте на какой частоте работает МК.
Запрограммируйте TIMER1 на тик раз в 500 тактов, в прерывании таймера меняйте какой-нибудь пин любого порта. Измерьте частоту с этого пина низкочастотным частотомером (в китайских тестерах есть частотомер со шкалой 0..20kHz). Потом домножите показания на 1000 и получите частоту МК в Hz, или разделите показания еще на 1000 и будет частота в Mhz.