Page 1 of 2

Accendere led rs232 PC

PostPosted: 20 Feb 2013, 09:17
by adriano
mi dite per favore dove sto sbagliando ? il micro funziona , ho fatto tutti i controlli hw , i led rispondono a comandi diretti ...vorrei accendere e spegnere i led con inserimento da terminale pc dei numeri specificati nel "case"
GRAZIE !
PS: sto usando il micro con max232 su porta uart del micro PD0 / PD1
la comunicazione seriale funziona !
errori di compilazione non c'è ne sonno , ma i led non li controllo :(
:

$regfile = "m48def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 32
$baud = 115200
Config Com1 = 115200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 255
Enable Serial


Start Timer1
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.7 = Output
Config Portd.0 = Input

Dim Ledcom As String * 25

Do

Ledcom = Inkey()

Select Case Ledcom


Case "1"
Portd.2 = 0
Print " led spento "
Case "2"
Portd.2 = 1
Print "led acceso"
Waitms 100

Case "3"
Portd.3 = 0
Print " led spento "
Case "4"
Portd.3 = 1
Print "led acceso"
Waitms 100

Case "5"
Portd.4 = 0
Print " led spento "
Case "6"
Portd.4 = 1
Print "led acceso"
Waitms 100

Case "7"
Portd.7 = 0
Print " led spento "
Case "8"
Portd.7 = 1
Print "led acceso"

End Select
Loop
End

Re: Accendere led rs232 PC

PostPosted: 23 Feb 2013, 13:18
by adriano
piccola correzione:
i valori di $crystal e $baud li ho portati a $crystal 8000000 (il micro ora e settato a 8Mhz ) e la velocità sulla 232 funziona benissimo a 56700 !
i led pero continuano a non funzionare , non ci arrivo proprio dove sbaglio :(
si accettano consigli , grazie .

Re: Accendere led rs232 PC

PostPosted: 23 Feb 2013, 14:25
by deluca
Riciao Adriano,

il tuo codice è funzionalmente valido, ma ci sono delle imperfezionioni, .... mi limiterò ad aggiustarti il codice che tu hai indicato.
1) se configuri Config Serialin = Buffered , Size = 255 avresti bisogno di una interruzione per intercettare la presenza di un carattere nel buffer della uart.....
2) Non è necessario abilitare il timer nè tantomeno la uart visto che non stai usando interrupts.

La versione che ti ho postato adesso è funzionante, ma non è certo la migliore.... il micro rimane bloccato aspettando un carattere e fino a quando non arriva non riesce a fare null'altro.......

Code: Select all
$regfile = "m48def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 32
$baud = 57600

 Config Portd.2 = Output
 Config Portd.3 = Output
 Config Portd.4 = Output
 Config Portd.7 = Output
 Config Portd.0 = Input

 Dim Ledcom As String * 25
'-------------------------------------------------------------------------------
Do

 Ledcom = Waitkey()

   Select Case Ledcom

    Case "1"
      Portd.2 = 0
      Print "led 1 spento "

    Case "2"
      Portd.2 = 1
      Print "led 1 acceso"

    Case "3"
      Portd.3 = 0
      Print "led 2 spento "

    Case "4"
      Portd.3 = 1
      Print "led 2 acceso"

    Case "5"
      Portd.4 = 0
      Print "led 3 spento "

    Case "6"
      Portd.4 = 1
      Print "led 3 acceso"

    Case "7"
      Portd.7 = 0
      Print "led 4 spento "
    Case "8"
      Portd.7 = 1
      Print "led 4 acceso"

   End Select
Loop
'-------------------------------------------------------------------------------
End


ciao

Re: Accendere led rs232 PC

PostPosted: 24 Feb 2013, 16:22
by adriano
Grazie milla deluca ,
si come non posso minimamente dubitare che il SW non funzioni , ricontrollo tutto il mio HW ...anche se come dicevo i led li controllo bene con il comando "diretto" . La seriale butta fuori sicuro ( già provato ) oggi guardo con l'osciloscopio se sul piedino del micro arriva qualcosa dal pc . I led continuano a non funzionare . Come terminale sto usando Terminal V1.9 . Un normalissimo terminale 232. Per il resto a me come base di partenza va bene anche in versione semplicissima .

Re: Accendere led rs232 PC

PostPosted: 24 Feb 2013, 16:48
by deluca
Attenzione !!
non vorrei essermi spiegato male....

Il codice che avevi postato non avrebbe potuto funzionare causa imperfezioni nell'uso degli stataments nella gestione della seriale.
Infatti, anche inviando i numeri tramite pc il micro non avrebbe potuto leggerli.

NB. Il codice che ho modificato ed allegato dovrebbe adesso funzionare.
Ciao e fammi sapere.

Re: Accendere led rs232 PC

PostPosted: 24 Feb 2013, 17:36
by adriano
deluca wrote:Attenzione !!
non vorrei essermi spiegato male....

Il codice che avevi postato non avrebbe potuto funzionare causa imperfezioni nell'uso degli stataments nella gestione della seriale.
Infatti, anche inviando i numeri tramite pc il micro non avrebbe potuto leggerli.

NB. Il codice che ho modificato ed allegato dovrebbe adesso funzionare.
Ciao e fammi sapere.


Buongiorno deluca ,
ma io infatti non meto in dubio quello che gentilmente ha scritto lei , ho qualche dubio ancora sul mio hw , verifico e le facio sapere. unica cosa che sono certo che il max 232 e colegato bene , che il micro "stampa" sul terminale , e che i led con due righe riesco ad accendere. Di più non so .

Re: Accendere led rs232 PC

PostPosted: 24 Feb 2013, 21:59
by Fagos
ciao adriano
che tipo di scheda stai costruendo? sperimentazione? per effettuare test? o altro

ho visto il tuo codice è abbastanza semplice e intuitivo, ma come dice deluca in quel modo blocchi il micro fino a quando non ricevi un carattere, giusto?

'sera'

Re: Accendere led rs232 PC

PostPosted: 24 Feb 2013, 23:22
by adriano
Fagos wrote:ciao adriano
che tipo di scheda stai costruendo? sperimentazione? per effettuare test? o altro

ho visto il tuo codice è abbastanza semplice e intuitivo, ma come dice deluca in quel modo blocchi il micro fino a quando non ricevi un carattere, giusto?

'sera'

Sera Fagos,
per ora mi limito a piccoli esperimenti , ho costruito diverse schede basate su atmega 48 . Non ho costruito un "starter kit" perchè una la uso solo per controllo servi ( rc ) , una per controllare led è giocare con l'adc ...una (in lavorazione) che fa da terminale ricezione dati rs232 .
Riguardo il codice che gentilmente deluca mi ha coretto , a me al momento interessa solo controllare dei led nel momento che dal terminale ( che gira su un pc ) arriva un carattere ( il micro non deve fare altro ) . Purtroppo non ho alcuna base di programmazione se non quello che ho preso di qua e di la da vari esempi. Sono penalizzato moltissimo anche dal fatto che con l'inglese non me la cavo molto bene , oltre il fatto che non si trova molta documentazione sul bascom avr ( in italiano ) ...dovrei vedere nel laboratorio o sul sito della grifo di scaricare il manuale bascom 8051 che se non ricordo male era in italiano .
ciao , una buona serata / o inizio settimana :)

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 18:23
by adriano
ragazzi , io qualche cosina con il micro sono riuscito a "muovere" ma sti led non ne vogliono sapere ...uffa ...il codice sicuramente e giusto ( la scritto deluca ) , la mia seriale funziona in entrambi i versi ma i led non ne vogliono sapere :((
dove sto sbagliando secondo voi ?
questa la prova che il led funziona ( lampeggia ) :
'***led lampeggio portd.2***
$regfile = "m48def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 32
$baud = 57600
$sim
Config Portd.2 = Output
Do
Portd.2 = 1
Waitms 500
Portd.2 = 0
Waitms 500
Loop
End

domanda : perche nel simulatore di bascom il led "virtuale" pd.2 non lampeggia ???
perchè non riesco a controlare i led con la seriale ? quale può essere il problema ???
grazie.

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 18:39
by flz47655
Premetto che non utilizzo bascom, l'ho appena installato per far girare il tuo codice e posso dirti che la PORTD "lampeggia" correttamente, occhio a non confonderla con DDRD nella finestra IO

Per quanto riguarda la seriale col simulatore bascom tutto funziona perfettamente (la UART è emulata), potresti provare ad utilizzare bascom al posto di altri programmi per la rs232 se non sei sicuro che non introducano problemi
Ciao

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 18:58
by deluca
Test1.jpg
Test1.jpg (142.8 KiB) Viewed 17246 times


Salve ragazzi,
adriano,
ho provato a simulare il tuo codice e il led lampeggia perfettamente.

Ora, prova a compilare e simulare il codice mostrato nell'immagine ....
Vedi la PORTD sulla destra?
ogni volta che inserisci un dato su Input il valore deve togglare tra 00 e 04.

Dimmi se ti funziona ...

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 19:20
by adriano
ragazzi sono UN PIRLA :
"refresh variables" era da schiaciare ( il pulsantino con la manina che indica il foglio )( nel simulatore )
ora sul simulatore funziona sia il codice di deluca sia il "lampeggio"
ora mi rimane da capire perche non funziona con il mio terminale da pc ... forse dico una cavolata ...ma il mio terminale da pc quando nella "macro" li faccio butare fuori 1 o 2 cosa esce realmente ? ora che ho saldato gli ultimi fili sul terminale fatto con l'lcd controllo !

grazie amici , grazie deluca !

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 19:25
by deluca
benissimo,

pochi passi, ma alla fine...... grande soddisfazione :)

ciao

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 19:32
by adriano
deluca wrote:Dimmi se ti funziona ...


si funziona GRAZIE deluca ;)

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 19:43
by flz47655
adriano wrote:ma il mio terminale da pc quando nella "macro" li faccio butare fuori 1 o 2 cosa esce realmente ?!


Escono una serie di 1 e 0 che codificano 1 o 2 in decimale, il protocollo è molto semplice http://it.wikipedia.org/wiki/EIA_RS-232, riassumendo:
- c'è un bit di start (ALTO) seguito da
- 8 bit (1=BASSO, 0=ALTO) e
- uno o più bit di stop (BASSO)

Quindi un 1 decimale (codifica ASCII) è 0110001 in binario, quindi avrai qualcosa come HHLLHHHLL dove il primo e l'ultimo bit sono il bit di start e di stop, il numero decimale è invertito in quanto l'1 è il livello logico basso e lo 0 quello alto

Ciao

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 20:01
by adriano
Grazie per la spiegazione flz , ma io mi ponevo anche il problema che magari il terminale che uso io ( su pc ) sia impostato in modo che il formato che buta fuori non va bene per il micro . Ora provo con l'Atlantic Research , sia a controlare cosa esce sia a controlare il micro con l'Atlantic .
... non lo accendo da mesi :)
....bellisimo strumento ( i 10 euro più ben spesi nella mia vita )

Grazie mille per l'aiuto che mi date , spero di contracambiare un giorno , almeno offrendo una pizza e una bira perche come tecnico sono io che devo imparare da voi :)

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 20:17
by flz47655
Il "formato" diciamo cambia solamente in poche cose, nella velocità di trasmettere i dati, nel numero di bit di stop, in un bit di controllo parità, etc.. ma deve essere impostato come nel programma del micro anche lato pc quindi sarà come quello descritto, se è diverso allora devi cambiare le impostazioni lato pc per farlo funzionare.

Cos'è l'atlantic? Hai un link?

Vedrai che se ti intendi di elettronica analogica ci saranno presto diverse domande :)

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 20:32
by adriano
flz47655 wrote:Cos'è l'atlantic? Hai un link?



io lo pagato 10 euro , costava qualche milione di lire .
veniva usato in telefonia da ingegneri in centrale . oltre tutte le cosa che fa ( ora sono di corsa ma ritorno con spiegazioni ) ) fa anche da terminale vt100 .
http://www.ebay.com/itm/Atlantic-Resear ... 0971305720

Re: Accendere led rs232 PC

PostPosted: 26 Feb 2013, 20:41
by deluca
@adriano,
mi sono accorto che stai compilando il codice settando il $cristal = 8Mhz e un baud rate pari a 57600 bps. (hai visto l'errore percentuale?)
tieni conto che l'errore in percentuale sul baud-rate con queste impostazioni è pari a 7.84% .... un pòooo altino.
potrebbe succedere che il tuo terminale è talmente preciso e poco tollerante che il micro non riesce ad agganciare la giusta sincronizzazione dei dati.

prova a scendere a 9600/19200/38400 bps ... vedrai che l'errore percentuale scenderà a soli 0.16% , alcune volte il prb si annida proprio lì.

ciao

Re: Accendere led rs232 PC

PostPosted: 27 Feb 2013, 03:25
by adriano
deluca wrote:@adriano,
mi sono accorto che stai compilando il codice settando il $cristal = 8Mhz e un baud rate pari a 57600 bps. (hai visto l'errore percentuale?)
tieni conto che l'errore in percentuale sul baud-rate con queste impostazioni è pari a 7.84% .... un pòooo altino.
potrebbe succedere che il tuo terminale è talmente preciso e poco tollerante che il micro non riesce ad agganciare la giusta sincronizzazione dei dati.

prova a scendere a 9600/19200/38400 bps ... vedrai che l'errore percentuale scenderà a soli 0.16% , alcune volte il prb si annida proprio lì.

ciao


Giustissimo deluca ,
infatti il quarzo ideale sarebbe da 11.059 ( che ha bassisimo errore percentuale a diversi baudrate )ma quando non si sa cosa comprare !!! (ne ho comprato solo 20 pz) ... a 9600 avevo controlato e l'errore era basissino 0,16% se nn ricordo male . Ora vado a settare a 9600 .

ciao :)