spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Progetti di Robot > Robot in edicola > Costruisci e programma il tuo robot

Discussione chiusa
 
Strumenti discussione Modalità  visualizzazioe
  #21  
Vecchio 20-01-2011, 16.31.56
i,robot
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
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
  #22  
Vecchio 20-01-2011, 17.43.35
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 54
Messaggi: 2,665
Potenza reputazione: 302
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da i,robot Visualizza messaggio
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...
  #23  
Vecchio 20-01-2011, 18.07.00
i,robot
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
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
  #24  
Vecchio 21-01-2011, 09.21.04
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 54
Messaggi: 2,665
Potenza reputazione: 302
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

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...
  #25  
Vecchio 21-01-2011, 11.35.52
i,robot
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
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!!
  #26  
Vecchio 21-01-2011, 12.07.23
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 54
Messaggi: 2,665
Potenza reputazione: 302
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

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...
  #27  
Vecchio 21-01-2011, 19.27.39
i,robot
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
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
  #28  
Vecchio 22-01-2011, 07.25.50
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Binasco (MI)
Età : 54
Messaggi: 2,665
Potenza reputazione: 302
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

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...
  #29  
Vecchio 22-01-2011, 10.30.05
i,robot
Guest
 
Messaggi: n/a
Predefinito

Citazione:
Orginalmente inviato da sergio_camici Visualizza messaggio
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!
  #30  
Vecchio 22-01-2011, 13.46.50
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 23-05-2002
Residenza: Monselice (PD)
Età : 57
Messaggi: 5,458
Potenza reputazione: 421
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

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
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Discussione chiusa


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

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

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Comunicazione seriale. Alan100 Arduino 9 16-12-2012 15.36.09
Comunicazione seriale rs232 e rs485 Kenophy Elettronica 0 13-02-2009 12.13.05
comunicazione seriale deusexmachina P. in C, C++ 19 01-02-2009 18.25.37
comunicazione seriale pic 16f84a silvio_stefa E. Digitale 5 28-09-2008 21.09.48
comunicazione seriale tra pic deusexmachina Forum generale 1 08-02-2005 10.42.40


Tutti gli orari sono GMT. Adesso sono le: 05.42.56.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB