Програмування can конструктора

У даній статті ми розглянемо приклад програмування CAN передавача на 16 повідомлень з налаштованим кроком з повним діапазоном ID.

1. Підключаємо до программатору PICkit2 конструктор, в який хочемо прописати вміст повідомлень для передачі по CAN шині. Програматор може бути використаний будь-який для програмування PIC мікроконтролерів.

2. Запускаємо програму PICkit2.

3. Натискаємо кнопку Read для зчитування даних з пам'яті мікроконтролера конструктора. Вміст областей пам'яті відображається у відповідних вікнах. При програмуванні мікроконтролера виробником встановлений захист. Відповідно, при зчитуванні будуть прочитані нулі в вікні Program Memory (Пам'ять Програм).

4. У вікні Program Memory (Пам'ять Програм) прибираємо галочку Enabled (Включено). Увага: Program Memory (Пам'ять Програм) повинна бути при програмуванні не активна, в іншому випадку програма передавача буде стерта.

5. У вікні EEPROM Data прописуємо потрібні налаштування і вміст повідомлень відповідно до малюнком нижче.

6. Далі натискаємо кнопку Write, і сконфігуровані повідомлення запишуться в мікроконтролер.

7. У разі, якщо сконфігуровані повідомлення не влаштували з яких-небудь причин, то повторити процедуру програмування.

Тепер розглянемо процедуру поетапного програмування CAN конструктора:

1. У вікні Program Memory (Пам'ять Програм) прибираємо галочку Enabled (Включено), відповідно до малюнком вище.

2. Якщо 00, то CAN ID будуть стандартної довжини 11 біт, якщо 01, то розширені - 29 біт.

3. Значення CAN ID, присутність якого на шині запускає даний передавач. Спочатку зліва молодший байт, потім старший.

4. Рядки з індивідуальними настройками повідомлень. 10 - перше повідомлення, 20 - другий, і так далі. Всього 15 повідомлень з номерами з 10 по F0.

5. 00 - повідомлення ігнорується і не буде передаватися на шину, 01 - повідомлення передається відповідно до настройками.

6. CAN ID відповідного повідомлення. Спочатку зліва молодший байт, потім старший.

7. Кількість байт даних від 0 до 8.

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

9. Інтервал між повідомленнями в мілісекундах з кроком, обумовленим значенням поля «11». Від 1 * байт «11» (значення байта = 01) до 255 * байт «11» (значення байта = FF) мілісекунд.

10. Зсув за часом початку передачі повідомлення із заданою періодичністю щодо моменту запуску передавача з кроком, обумовленим значенням поля «11». Від 0 (значення байта 0) до 255 * байт «11» мс (значення байта FF).

11. Байт, який визначає часовий крок для налаштувань періоду «9» і зміщення «10». Значення від 1 до 255 мс. Значення 0 не визначене.

12. Байт настройки швидкості CAN шини. Можливі значення байта:

0 - швидкість 50 кбіт / с

1 - швидкість 100 кбіт / с

2 - швидкість 125 кбіт / с

3 - швидкість 250 кбіт / с

4 - швидкість 500 кбіт / с

Приклад передачі пакета повідомлень:

Часовий крок приймаємо 2 мс (значення байта 11 одно 2). Наприклад, є два повідомлення із заданим інтервалом передачі 40 мс (значення байта 9 дорівнює 20 (0 × 14). Для повідомлення A задано зміщення 0 мс (значення байта 10 дорівнює 0 (0 × 00)), а для повідомлення B 20 мс ( значення байта 10 дорівнює 10 (0 × 0A)). Тоді після виявлення на шині передавачем пакета з ID заданим параметром 2, запуститься відлік інтервалів, і через 40 мс на шину буде передано повідомлення A, а ще через 20 мс - повідомлення B, потім через 20 мс знову повідомлення A і знову через 20 мс повідомлення B. Таким чином, інтервал між повідомленнями A і між повідомленнями B буде 40 мс, а ось між у A і B буде 20 мс.

Схожі статті