Programarea poate fi proiectată

În acest articol vom examina un exemplu de programare a unui transmițător CAN pentru 16 mesaje cu un pas configurabil, cu o gamă completă de ID-uri.

1. Conectăm proiectantul la programatorul PICkit2, în care dorim să înregistrăm conținutul mesajelor de transmisie pe magistrala CAN. Programatorul poate fi folosit fie pentru programarea microcontrolerelor PIC.

2. Rulați programul PICkit2.

3. Apăsați butonul Citire pentru a citi datele din memoria microcontrolerului proiectantului. Conținutul zonelor de memorie este afișat în ferestrele corespunzătoare. Când microcontrolerul este programat, protecția este setată de producător. În consecință, atunci când citiți, zerourile vor fi citite în fereastra Memorie program.

4. În fereastra Memorie program, debifați caseta de validare Activat. Notă: Memoria programului trebuie să fie inactivă la programare, altfel programul de transmițător va fi șters.

5. În fereastra Date EEPROM, setați setările dorite și conținutul mesajului conform imaginii de mai jos.

6. Apoi, apăsați butonul Scrieți, iar mesajele configurate vor fi scrise pe microcontroler.

7. Dacă mesajele configurate nu sunt aranjate dintr-un motiv oarecare, repetați procedura de programare.

Acum, ia în considerare procedura de programare pas cu pas a constructorului CAN:

1. În fereastra Memorie program, debifați caseta de validare Activată, așa cum se arată în figura de mai sus.

2. Dacă 00, atunci CAN ID va fi lungimea standard de 11 biți, dacă 01, atunci cele extinse vor fi 29 de biți.

3. Valoarea CAN ID, a cărei prezență pe magistrală este declanșată de acest transmițător. Mai întâi, în stânga este octetul scăzut, apoi octetul de ordin înalt.

4. Corzi cu setări individuale de mesaje. 10 - primul mesaj, 20 - al doilea și așa mai departe. Există 15 mesaje cu numere de la 10 la F0.

5. 00 - mesajul este ignorat și nu va fi transmis la magistrala, 01 - mesajul este transmis în conformitate cu setările.

6. CAN ID-ul mesajului corespunzător. Mai întâi, în stânga este octetul scăzut, apoi octetul de ordin înalt.

7. Numărul de octeți de date de la 0 la 8.

8. Bytes-urile actuale de date sunt 8 bucăți, dar numai numărul specificat de la stânga la dreapta va fi transmis.

9. Intervalul dintre mesaje în milisecunde cu un pas definit de valoarea câmpului "11". De la 1 * octet "11" (valoare octet = 01) la 255 * octet "11" (valoare octet = FF) milisecunde.

10. Deplasarea în timp a începutului transmisiei mesajului cu periodicitatea specificată față de momentul transmițătorului începe cu un pas determinat de valoarea câmpului "11". De la 0 (valoare de byte 0) la 255 * octet "11" ms (valoarea byte FF).

11. Byte, definind pasul de timp pentru setările perioadei "9" și offset "10". Valoarea este de la 1 la 255 ms. Valoarea 0 este nedefinită.

12. Byte din setarea vitezei magistralei CAN. Valorile posibile ale octeților sunt:

0 - viteza de 50 kBit / s

1 viteză 100 kBit / s

2 viteze de 125 kBit / s

3 viteze de 250 kBit / s

4 viteze 500 kBit / s

Exemplu de trimitere a unui pachet de mesaje:

Pasul de timp este de 2 ms (valoarea octetului 11 este 2). De exemplu, există două mesaje specifica 40 ms interval de transmisie (valoare octet 9 este egală cu 20 (0 × 14). Pentru mesajul A este atribuit un 0ms deplasare (valoarea baitul 10 este 0 (0 x 00)) și pentru mesajul B 20 ms ( . valoarea byte 10 este egal cu 10 (0 x 0A)) apoi, după detectarea pe ID-ul de pachete transmițător bus specificați parametrul 2 pornește de numărare intervale și mesajul după 40 msec la magistrala va fi transmisă o și încă 20 ms - mesajul B, atunci 20 ms un mesaj nou și din nou după 20 ms mesaj B. Astfel, intervalul dintre mesaje între mesaje și un B este de 40 ms, dar între la A și B va fi de 20 ms.

Articole similare