Цитата(Sanek_spb @ Dec 1 2008, 15:58)

Как раз сейчас мучаю кортекс, Вы бы сказали что за мк, на какой частоте проц, на какой уарт и какой поток данных, может и идейку бы подкинули.
Но по любому несколько простых путей:
1. данные приходят медленно: каждый байтик обрабатываете, как придет последний, выдавай АК
2. данные приходят быстро:
2.1. буферизуете полностью (например в прерывании) и по последнему байтику обрабатываете и выдаете АК
2.2. кольцевой буфер - по приходу даных кидаете в буфер (в прерывании например), по возможности обрабатываете (в главном цикле), последний байт -> АК
2.3. настраиваете ДМА, по окончании приема приходит прерывание -> обрабатываете и выдаете АК
С МК раньше работать не доводилось, но задачу нужно решать...
Модель: STM32F103CBT6. Задача: прокачка данных с одного УАРТ на другой УАРТ (преобразование с одного протокола в другой).
Сегодня выяснил, что эта самая прокачка очень сильно глючит (потеря данных и т.д.).
УАРТ1 работает на скорости 9600, УАРТ2 на скорости 115200.
Сейчас реализовано так: находясь в прерывании УАРТ1 делается посылка данных на УАРТ2, и наборот соответсвенно: находясь в прерывании УАРТ2 делается посылка данных на УАРТ1.
Но как подсказывает логика: если у нас существует два интерфейса с разными скоростями, то между ними должен быть "выравнивающий" буфер.
Т.е. УАРТ1 кидает данные в очередь, в майне читаем наш буфер, анализируем, и отсылаем на УАРТ2. Также с УАРТ2 кидаем в очередь, в майне читаем, анализируем, и отсылаем на УАРТ1.
ЗЫ: Хотелось бы услышать комментарии от гуру, правильный ли путь выбран с буферизацией данных?