Більше потік, показаний на мал прапор RCIF

N

Naumanpak

Guest
Експерти,

Я читаю послідовної передачі даних від GPS в ПОС.Це чудово працює (дані відправляються на 1Hz).ПРОБЛЕМА:Рухаючись далі, я поклав деякі інструкції, які вимагатимуть 5 мілісекунд один раз на секунду.

але якщо я ставлю деяким запізненням, RCIF переповнення ніколи не заходить знову, я отримую тільки 2 знака друку.

Встановивши переповнення, я можу оживити безперервної передачі даних, але отримав не так.

Код:

якщо (RCSTA.OERR == 1) (

RCSTA.CREN = 0;

RCSTA.CREN = 1;)
 
Привіт Naumanpak,

З дані:

"RCREG є подвійний буферизацією реєстрації (тобто 2-глибоку FIFO). Цілком можливо, для 2 байти даних, які будуть отримані і передані RCREG FIFO і третій байт розпочати перехід до RSR зареєструватися. За виявленні біт Зупинка третього байта, якщо зареєструватися RCREG ще сповнений, помилки біт буфера, OERR (RCSTA <1>), будуть встановлені. слово в RSR буде втрачено. зареєструватися можна RCREG слід читати двічі, щоб отримати два байти FIFO. буфера OERR біт повинен бути очищений у програмному забезпеченні. Це робиться шляхом скидання отримувати логіки (КРЕН очищається, а потім встановити). Якщо біт OERR встановлено, трансфер з RSR зареєструватися до реєстру RCREG гальмуються і ніякі подальші дані будуть отримані. Тому, необхідно чітко OERR бітових помилок, якщо він встановлений ".

Якщо є переповнення, останній отримав байт будуть втрачені і попередні два байти можна отримати, прочитавши RCREG в два рази.

Я рекомендую вам спочатку зберегти отримані байт в масив, а потім відобразити значення або спробуйте зменшити швидкість передачі даних, щоб можна було отримати достатньо часу між двома послідовними прийомів.

 
Гей, спасибі matbob!

Real корисним і гідним інформації, її вирішена.ура
Науман

 

Welcome to EDABoard.com

Sponsor

Back
Top