
|

20-01-2011, 16.31.56
|
|
Citazione:
Orginalmente inviato da sergio_camici
Perdona se la prendo alla lontana, non so quanto sai e preferisco scrivere tutto.
1)Le trasmissioni seriali trasmettono un byte alla volta
2) un byte è fatto da 8 bit quindi esprime un valore che va da 0 a 255 in decimale.
3) decimale, esadecimale o ottale sono solo rappresentazione delle stesse quantità (binario 1010 = ottale 12 = decimale 10 = esadecimale A)
4) ASCII è solo una codifica di un byte su una tabella di caratteri (esempio A= 65Dec, a = 97Dec)
-------
BS2 Serout
Serout 1,16468,["HELLO!"]
Trasmette 6 byte:
ASCII
H (72Dec)
E (69Dec)
L (76Dec)
L (76Dec)
O (79Dec)
Serout 1,16468,[65]
Trasmette un solo byte di valore 65
Serout 1,16468,[DEC 65]
Trasmette due byte:
ASCII "6" (54Dec)
ASCII "5" (53Dec)
------
Ref:
http://www.parallax.com/dl/docs/cols...1/col/nv16.pdf
Spero di aver contribuito
|
Capito....pero' nel primo esempio xke' sono 6 byte? Forse contando il punto esclamativo! Sono un po' confuso...
Cmq se io allora devo inviare "x" (inteso proprio come il carattere della tastiera) la bs2 cosa deve inviare? Mi spiego:
Il codice sul pic e' fatto in modo che se invio "x" si attiva una porta, ma nel codice l' "if ...then" si riferisce a "120" e non quindi al carattere "x" cio' vuol dire che io in realta' invio proprio "120" giusto? O invio "x" e poi viene interpretato dal pic come "120"?
Quindi se devo inviare dal bs2 lo stesso codice mi pare di capire devo scrivere:
Serout 1,16468,["x"]
oppure
Serout 1,16468,[dec 120]
cosi' dovrebbe andare o sbaglio? Pero' a me non va....
Devo forse allacciarmi al discorso di marnic e fare un protocollo...
Solo mi sembra strano che dal pc funzioni e dalla bs2 no....
Spero di aver capito e di essere stato chiaro.Ti ringrazio molto per la risposta dettagliata!
Ultima modifica di i,robot : 20-01-2011 alle ore 16.48.24
|

20-01-2011, 17.43.35
|
 |
Administrator
|
|
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 58
Messaggi: 2,665
Potenza reputazione: 317
|
|
Citazione:
Orginalmente inviato da i,robot
Capito....pero' nel primo esempio xke' sono 6 byte? Forse contando il punto esclamativo! Sono un po' confuso...
|
Si esatto ho dimenticato nell'elenco il punto esclamativo
ASCII ! (33Dec)
Citazione:
Cmq se io allora devo inviare "x" (inteso proprio come il carattere della tastiera) la bs2 cosa deve inviare? Mi spiego:
Il codice sul pic e' fatto in modo che se invio "x" si attiva una porta, ma nel codice l' "if ...then" si riferisce a "120" e non quindi al carattere "x" cio' vuol dire che io in realta' invio proprio "120" giusto? O invio "x" e poi viene interpretato dal pic come "120"?
|
Se trasmetti "x" trasmetti un singolo byte, e se guardi la tabella ascii vedrai che vale 120 appunto.
Non confondere il valore con la sua rappresentazione a video.
Dire 120 non è come dire "120" il primo è un byte il secondo sono tre byte.
Citazione:
Quindi se devo inviare dal bs2 lo stesso codice mi pare di capire devo scrivere:
Serout 1,16468,["x"]
oppure
Serout 1,16468,[dec 120]
|
Il primo manda un solo byte di valore 120 trascodificando dalla tabella ascii il valore di "x".
Il secondo manda tre byte uno che vale 49, uno 50 ed uno 48.
Cioè i caratteri "1" "2" e "0"
Se vuoi mandare un byte senza passare per la tabella ASCII devi fare
Serout 1,16468,[120]
Così potrai mandare anche i byte che non hanno rappresentazione sulla tastiera come ad esempio 251 (che in tabella ASCII rappresenta il simbolo di radice quadra)
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
|

20-01-2011, 18.07.00
|
|
Citazione:
Orginalmente inviato da sergio_camici
Si esatto ho dimenticato nell'elenco il punto esclamativo
ASCII ! (33Dec)
Se trasmetti "x" trasmetti un singolo byte, e se guardi la tabella ascii vedrai che vale 120 appunto.
Non confondere il valore con la sua rappresentazione a video.
Dire 120 non è come dire "120" il primo è un byte il secondo sono tre byte.
Il primo manda un solo byte di valore 120 trascodificando dalla tabella ascii il valore di "x".
Il secondo manda tre byte uno che vale 49, uno 50 ed uno 48.
Cioè i caratteri "1" "2" e "0"
Se vuoi mandare un byte senza passare per la tabella ASCII devi fare
Serout 1,16468,[120]
Così potrai mandare anche i byte che non hanno rappresentazione sulla tastiera come ad esempio 251 (che in tabella ASCII rappresenta il simbolo di radice quadra)
|
Mi sono messo subito a fare prove xke' il tuo messaggio di prima ha fatto pensare: il risultato e' che ho capito l'intoppo, ho fatto un mini codice test:
' {$STAMP BS2}
dato var byte
main:
serin 15,16468,[dato]
if dato = 99 then invio
debug cls, ? dato
goto main
invio:
serout 14,16468,["9"]
goto main
In pratica se il dato inviato vale 99 mi invia 9 al pic che lo interpreta come 99 e mi attiva la porta logica dedicata.
L'istruzione debug mi stampa a video la corrispondenza di ogni dato inviato, mi sono cosi' ricavato una tabella che....per la verita' non ho ancora capito di che cavolo di codifica e'!! In pratica non c'e' nessun carattere che mi visualizza "120" per questo non riuscivo a far funzionare il pic, poi trovata una corrispondenza tra pic e carattere visualizzabile dal bs2 tutto e' andato...sara' che la bs2 non puo' utilizzare la codifica ascii?
Il programma funziona ma l'unica cosa che non riesco a capire e' perche' il primo dato lo perdo....mi spiego: il primo dato inviato viene ignorato e la porta logica non si attiva, poi invece non sbaglia un colpo!! Perche'? Ho provato anche a mettere delle pause nel codice ma non cambia nulla.....
Grazie mille sei stato molto gentile con le tue spiegazioni dettagliate
|

21-01-2011, 09.21.04
|
 |
Administrator
|
|
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 58
Messaggi: 2,665
Potenza reputazione: 317
|
|
C'è qualche cosa che non mi torna...
Dal manuale del BS2 sembra che non ci sia una codifica speciale per i caratteri ma che usi ASCII...
Se trasmetti
serout 14,16468,[9]
cosa ricevi?
e se trasmetti
serout 14,16468,["ciao"]
cosa ricevi?
E potresti allegare anche uno schema dei collegamenti?
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
|

21-01-2011, 11.35.52
|
|
Citazione:
Orginalmente inviato da sergio_camici
C'è qualche cosa che non mi torna...
Dal manuale del BS2 sembra che non ci sia una codifica speciale per i caratteri ma che usi ASCII...
Se trasmetti
serout 14,16468,[9]
cosa ricevi?
e se trasmetti
serout 14,16468,["ciao"]
cosa ricevi?
E potresti allegare anche uno schema dei collegamenti?
|
Hai messo la pulce nell'orecchio anche a me ora
Ho fatto delle prove veloci xke' devo scappare a lavoro:
Io facevo cosi', inviavo 9 dal terminal di microbasic e direttamente tramite la porta com della bs2 (quindi non con istruzione serout ma con debug) visualizzavo il codice tipo invio 9 in debug 99.
Ma ora ho provato con serout a ricevere direttamente nel terminal da dove invio: se invio [9] in ascii mi da "ù" in dec "218 0"....se invio [ciao] in ascii ricevo ma non visualizza nulla in dec "0".
Dopo queste prove mi sto preoccupando un po' xke' in effetti c'e' qualcosa che non quadra.
X i collegamenti ti spiego velocemente, poi se non riesci a capire stasera posto lo schema:
Cosi' comando il pic
tx di xbee su p15 bs2 (p15 serin)
p14 bs2 su rx pic (p14 serout)
Cosi' invece trasmetto nuovamente al pc
tx di xbee su p15 bs2 (p15 serin)
p14 bs2 su rx di xbee (p14 serout)
P.S.= il pic sono riuscito a controllarlo solo che mi devo attenere ai caratteri strani tipo 9=99 1=103 etc. l'unico problema e' che il primo comando inviato lo ignora ma poi non sbaglia mai
Grazie!!
|

21-01-2011, 12.07.23
|
 |
Administrator
|
|
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 58
Messaggi: 2,665
Potenza reputazione: 317
|
|
Dopo controllo con calma, ma hai tenuto conto che i segnali della seriale devono essere "invertiti"?
Alto significa basso... se passi da un trasduttore di livello ci pensa lui, ma se sei su ttl devi verificare che i due dispositivi siano fatti per lavorare allo stesso modo...
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
|

21-01-2011, 19.27.39
|
|
Citazione:
Orginalmente inviato da sergio_camici
Dopo controllo con calma, ma hai tenuto conto che i segnali della seriale devono essere "invertiti"?
Alto significa basso... se passi da un trasduttore di livello ci pensa lui, ma se sei su ttl devi verificare che i due dispositivi siano fatti per lavorare allo stesso modo...
|
I segnali dell'xbee prima di uscire o di entrare passano attraverso il max232...l'avevo omesso perche' mi sembrava scontato....penso tu ti sia riferito a questo
Fammi sapere grazie
Aggiornamento:
Ho pensato al tuo messaggio precedente sul fatto che la bs2 supporta la codifica asci...beh non ricordo dove ho letto il contrario ma a quanto pare e' falsa, ho fatto come te e sono andato nella guida e a quanto pare la supporta, basta mettere "asc" o "@" per indicarlo! Allora sono subito andato a fare la prova e farmi inviare nel debug la rispettiva visualizzazione....il risultato e' che ho un'ulteriore codifica ma x me sempre sconosciuto...tipo "f" o "L" o altro (virgolette comprese) ma appena visto non corrisponde alla tabella ascii ho mollato....brancolo ancora nel buio :-|
P.S.= ma non e' che non essendo una vera seriale non riesce a ricevere tutti i bite? Magari ho detto una cavolata ma data dal fatto che se invio 1 o 12 riceve la stessa cosa (tanto x per fare un esempio) serve magari un protocollo come diceva marnic?!
Ultima modifica di i,robot : 21-01-2011 alle ore 21.32.12
|

22-01-2011, 07.25.50
|
 |
Administrator
|
|
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 58
Messaggi: 2,665
Potenza reputazione: 317
|
|
Ti prego, prenditi 5 minuti e fai uno schema elettrico.
Altrimenti, tra incomprensioni e quello che per te è scontato, non riesco proprio ad aiutarti.
Comincio sempre più a sospettare che l'inghippo sia nelle connessioni.
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
|

22-01-2011, 10.30.05
|
|
Citazione:
Orginalmente inviato da sergio_camici
Ti prego, prenditi 5 minuti e fai uno schema elettrico.
Altrimenti, tra incomprensioni e quello che per te è scontato, non riesco proprio ad aiutarti.
Comincio sempre più a sospettare che l'inghippo sia nelle connessioni.
|

Allora, mi scuso per la rudimentalita' dello schema, ma dovrebbe essere sufficiente a capire i collegamenti  in particolare rappresenta la comunicazione della bs2 col pc x quanto riguarda l'editor di microbasic e istruzioni serin e serout(con tx e rx); con il cavo com1 invece visualizzo il debug direttamente con il programma originale del basic stamp.
Quando invece attivo le porte logiche del pic 16f877 la p14 non la collego al max 232 ma al pin rx del suddetto.
Spero adesso sia piu' chiaro e riuscirai ad aiutarmi  ti ringrazio molto x il tempo dedicatomi!
|

22-01-2011, 13.46.50
|
 |
Administrator
|
|
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 61
Messaggi: 5,458
Potenza reputazione: 436
|
|
e non hai ancora bruciato nulla? complimenti 
l'xbee funziona a 3,3V, la bs2 non so ma penso a 5V
dal max232 escono da un lato 5V e dall'altro +12V e -12V
dalla com del pc escono sempre +/-12V
Quello che ti chiede Sergio è proprio uno schema che ci permetta di capire i livelli di tensione e se hai una trasmissione "vera" o "negata"
Inoltre, perdonami, dallo schema capisco una cosa, da quello che scrivi il contrario..... 
Spero che Sergio sia più perspicace di me
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
|
|
Strumenti discussione |
|
Modalità visualizzazioe |
Modalità lineare
|
Regole di scrittura
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Il codice HTML è Disattivato
|
|
|
Tutti gli orari sono GMT. Adesso sono le: 16.16.48.
Realizzazione siti web Cobaltica Foligno
|

|