Цитата(mr_smit @ Dec 21 2011, 20:10)

Спасибо за код.
Скажите ещё почему sizeof не работает. Выводит только первые 2 байта:
Код
void SendCommand (unsigned char *command) {
unsigned int length = 0;
length = sizeof(command);
while (length--) {
while(!(UCSRA & (1<<UDRE))); // ждем окончания передачи байта
UDR = *command++;
}
}
Вы не правы: это именно sizeof() и работает, и работает он так как надо, то есть так как Вы указали:
length = sizeof(command); = размер command, который есть тип unsigned char * - на многих 8-битных МК (например АВР), для указателя на байт хватает 2 байта. Вот у Вас два байта и шлются в порт, на 32 битных МК слалось бы, наверное 4 байта.
Совет: Укажите длину посылки как параметр функции.
Код
[code]void SendCommand (unsigned char *command, unsigned int length ) {
// (unsigned char *command, unsigned int length = 0), если нужно умолчание, хотя к чему оно здесь?
while (length--) {
while(!(UCSRA & (1<<UDRE))); // ждем окончания передачи байта
UDR = *command++;
}
}
[/code]