Да, понял. Спасибо.
С IAR плотно работал несколько лет тому назад. Забывается блин...
После запуска ОСи возникла другая проблема - объектное программирование.
Оно еще в PHP мне не нравилось. Наверное потому, что толком его не понимал.
Поскольку все же решил сделать задачу на scmRTOS придется почитать немного буквари...
Сделал так:
Код
void USART_Init( unsigned int baudrate, bool usart_number)
{
if(!usart_number)
{
// установка частоты бод
UBRR0H = (unsigned char) (baudrate>>8);
UBRR0L = (unsigned char) baudrate;
// Разрешить передачу
UCSR0B = ( 1 << TXEN0 );
// Установка формата фреймов: 8 data 1stop
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
}
else
{
// установка частоты бод
UBRR1H = (unsigned char) (baudrate>>8);
UBRR1L = (unsigned char) baudrate;
// Разрешить прием и передачу
UCSR1B = ( ( 1 << RXEN1 ) | ( 1 << TXEN1 ) );
// Установка формата фреймов: 7 data 2stop
UCSR1C = (1<<USBS1)|(1<<UCSZ11);
}
}
Поставил перед main.
Задача - обмен по Modbus по USART0, приведение в нужный вид полученых данных и передача в PC по USART1.
Обмен по Modbus с периодом 400 мс. Передача в PC с периодом 100 мс (100мс выглядят глупо, но это для иденчности со старым модулем).
Наверное можно сделать так:
По прерываниям T1 переходить в поцесс1 делать полный обмен по Modbus и сохранять полученные данные в глобальн. массиве.
В процессе 2 проспав нужное количество тиков системного таймера преобразовать в нужный вид данные из гл. массива и передать все в PC
Приоритетным в этом случае сделать процесс1 - пока идет обмен по модбас в PC ничего не передавать.
Первое, что пришло в голову. Может глупость...
Прошу прокомментировать.