RS485 & RS232 - Invio singolo byte.mediawiki
... ...
@@ -0,0 +1,52 @@
1
+In questo esempio si inizializzano e si usano le seriali in ambiente linux in protocol mode 0 che si distingue dal mode 1 (detto anche protocol mode syel) per l'invio di singoli byte o pacchetti senza preambolo ne checksum e senza le funzioni di librieria syel.
2
+
3
+Nello start.c vengono eseguiti due task
4
+* rs485_task
5
+* rs232_task
6
+Le due funzioni che si vanno ad eseguire lanciando in questi task sono presenti nel file common.h del progetto. Le prime linee di codice sono per l'inizializzazione e apertura della porta alle quali segue un ciclo infinito nel quale si resta in ascolto di eventuali byte in arrivo
7
+
8
+```
9
+void rs232_task(void)
10
+{
11
+ // inizializzazione porta 232
12
+ MY_COM232 = PortaCOM232;
13
+ com_close(MY_COM232);
14
+ wait(500);
15
+ com_open(MY_COM232, BaudRate232);
16
+ com_disable(MY_COM232);
17
+ protocol_mode(MY_COM232, 0); // protocollo 0 - invio singolo byte
18
+ com_enable(MY_COM232);
19
+
20
+ while(1) { //******* ricezione pacchetto **********
21
+ if (com_rx_empty(PortaCOM232)) {
22
+ _idle();
23
+ } else {
24
+ while (!com_rx_empty(PortaCOM232)) {
25
+ counter_232_packets_rx++;
26
+ retChar = com_rx(PortaCOM232);
27
+ }
28
+ }
29
+ }
30
+}
31
+```
32
+Nella ricezione del pacchetto si nota come la funzione resti in idle finchè non arriva niente, mentre scarrella byte con la com_rx() finche qualcosa è presente sul buffer incrementando cosi un contatore. Per la 485 è tutto analogo eccetto per la com che è ovviamente diversa.
33
+
34
+Per inviare il singolo byte si usa la funzione com_tx
35
+```
36
+void invia232(void)
37
+{
38
+ counter_232_packets_tx++;
39
+ com_tx(PortaCOM232, sendChar);
40
+}
41
+```
42
+
43
+Nota: com_tx e com_rx sono funzioni dell'ambiente di sviluppo proteus spiegate nel manuale a pagina 34 sezione Porte Seriali.
44
+
45
+Per quanto riguarda l'interfaccia dell esempio è molto banale e permette di selezionare un carattere e inviarlo tramite 232 o 485 incrementando i relativi contatori così come anche anche in ricezione
46
+
47
+
48
+L'esempio è stato testato su due dispositivi syel p10 collegati tra loro in RS232 e RS485 ed liberamente scaricabile dal seguente link:
49
+https://drive.google.com/file/d/1mDu0ULT9rZRgjtvueTfuG594QQA66_V8/view?usp=sharing
50
+
51
+
52
+