Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 19 ottobre 10, 17:26   #11 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
grazie

grazie.. mi ci dedico a "rate" appena posso installo e collaudo
a dopo


Citazione:
Originalmente inviato da Davide B. Visualizza messaggio
Credo che sia importante capire se il problema sia hardware o firmware.
Se hai un oscilloscopio puoi controllare cosa esce, ad esempio buttando fuori ciclicamente (ed in continuo) e controllando così il baudrate (se corrisponde al teorico), oppure utilizzare un simulatore e vedere se quanto hai scritto corrisponde a quanto viene eseguito. Il simulatore è importante perchè se le cose non funzionano ti da qualche indicazione in più che, normalmente, non hai.
Come simulatore puoi usare il Proteus (che costa molti soldi) oppure questo che costa molto meno e che puoi usare in demo per una decina di volte, il tempo di capire cosa non funziona.
PIC Simulator IDE with Basic Compiler, Assembler, Disassembler and Debugger
faustog_2 non è collegato   Rispondi citando
Vecchio 28 ottobre 10, 01:30   #12 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok tutto bene

ok ragazzi funziona... dopo un pò di sana lettura e qualche prova sono riuscito a far funzionare il trachiggio... adesso sto scrivendo una demo in Java che invia numeri verso il microcontrollore il quale trasformerà tali numeri in impulsi opportuni per muovere un servomeccanismo..



Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
grazie.. mi ci dedico a "rate" appena posso installo e collaudo
a dopo
faustog_2 non è collegato   Rispondi citando
Vecchio 03 novembre 10, 01:08   #13 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
Ci Sono Riuscito

OK FUNZIONA TUTTO

adesso riesco a leggere e scrivere attraverso la seriale USB, con il 16F628, in allegato metto una foto del circuito, mentre vcome software va bene anche quello che si trova in rete qui:

Bente Petersen's 9600baud 16F628 UART test circuit and program



Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
salve, lavorando con il 16F628 e tendando di ricevere ed inviare Byte da un software in java attraverso la porta seriale, trovo delle difficoltà:
Faccio una premessa, uso la MAx232 per trasformare il segnale EIA in TTL, poi uso il seguente include:


LIST
; P16F628.INC Standard Header File, Version 1.01 Microchip Technology, Inc.
NOLIST

; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F628 microcontroller. These names are taken to match
; the data sheets as closely as possible.

; Note that the processor must be selected before this file is
; included. The processor may be selected the following ways:

; 1. Command line switch:
; C:\ MPASM MYFILE.ASM /PIC16F628
; 2. LIST directive in the source file
; LIST P=PIC16F628
; 3. Processor Type entry in the MPASM full-screen interface

;================================================= =========================
;
; Revision History
;
;================================================= =========================

;Rev: Date: Reason:
;1.01 13 Sept 2001 Added _DATA_CP_ON and _DATA_CP_OFF
;1.00 10 Feb 1999 Initial Release

;================================================= =========================
;
; Verify Processor
;
;================================================= =========================

IFNDEF __16F628
MESSG "Processor-header file mismatch. Verify selected processor."
ENDIF

;================================================= =========================
;
; Register Definitions
;
;================================================= =========================

W EQU H'0000'
F EQU H'0001'

;----- Register Files------------------------------------------------------

INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
PORTA EQU H'0005'
PORTB EQU H'0006'
PCLATH EQU H'000A'
INTCON EQU H'000B'
PIR1 EQU H'000C'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
CCPR1L EQU H'0015'
CCPR1H EQU H'0016'
CCP1CON EQU H'0017'
RCSTA EQU H'0018'
TXREG EQU H'0019'
RCREG EQU H'001A'
CMCON EQU H'001F'

OPTION_REG EQU H'0081'
TRISA EQU H'0085'
TRISB EQU H'0086'
PIE1 EQU H'008C'
PCON EQU H'008E'
PR2 EQU H'0092'
TXSTA EQU H'0098'
SPBRG EQU H'0099'
EEDATA EQU H'009A'
EEADR EQU H'009B'
EECON1 EQU H'009C'
EECON2 EQU H'009D'
VRCON EQU H'009F'

;----- STATUS Bits --------------------------------------------------------

IRP EQU H'0007'
RP1 EQU H'0006'
RP0 EQU H'0005'
NOT_TO EQU H'0004'
NOT_PD EQU H'0003'
Z EQU H'0002'
DC EQU H'0001'
C EQU H'0000'

;----- INTCON Bits --------------------------------------------------------

GIE EQU H'0007'
PEIE EQU H'0006'
T0IE EQU H'0005'
INTE EQU H'0004'
RBIE EQU H'0003'
T0IF EQU H'0002'
INTF EQU H'0001'
RBIF EQU H'0000'

;----- PIR1 Bits ----------------------------------------------------------

EEIF EQU H'0007'
CMIF EQU H'0006'
RCIF EQU H'0005'
TXIF EQU H'0004'
CCP1IF EQU H'0002'
TMR2IF EQU H'0001'
TMR1IF EQU H'0000'

;----- T1CON Bits ---------------------------------------------------------
T1CKPS1 EQU H'0005'
T1CKPS0 EQU H'0004'
T1OSCEN EQU H'0003'
NOT_T1SYNC EQU H'0002'
TMR1CS EQU H'0001'
TMR1ON EQU H'0000'

;----- T2CON Bits ---------------------------------------------------------
TOUTPS3 EQU H'0006'
TOUTPS2 EQU H'0005'
TOUTPS1 EQU H'0004'
TOUTPS0 EQU H'0003'
TMR2ON EQU H'0002'
T2CKPS1 EQU H'0001'
T2CKPS0 EQU H'0000'

;----- CCP1CON Bits ---------------------------------------------------------
CCP1X EQU H'0005'
CCP1Y EQU H'0004'
CCP1M3 EQU H'0003'
CCP1M2 EQU H'0002'
CCP1M1 EQU H'0001'
CCP1M0 EQU H'0000'

;----- RCSTA Bits ---------------------------------------------------------
SPEN EQU H'0007'
RX9 EQU H'0006'
SREN EQU H'0005'
CREN EQU H'0004'
ADEN EQU H'0003'
FERR EQU H'0002'
OERR EQU H'0001'
RX9D EQU H'0000'

;----- CMCON Bits ---------------------------------------------------------

C2OUT EQU H'0007'
C1OUT EQU H'0006'
C2INV EQU H'0005'
C1INV EQU H'0004'
CIS EQU H'0003'
CM2 EQU H'0002'
CM1 EQU H'0001'
CM0 EQU H'0000'

;----- OPTION Bits --------------------------------------------------------

NOT_RBPU EQU H'0007'
INTEDG EQU H'0006'
T0CS EQU H'0005'
T0SE EQU H'0004'
PSA EQU H'0003'
PS2 EQU H'0002'
PS1 EQU H'0001'
PS0 EQU H'0000'

;----- PIE1 Bits ----------------------------------------------------------

EEIE EQU H'0007'
CMIE EQU H'0006'
RCIE EQU H'0005'
TXIE EQU H'0004'
CCP1IE EQU H'0002'
TMR2IE EQU H'0001'
TMR1IE EQU H'0000'

;----- PCON Bits ----------------------------------------------------------

OSCF EQU H'0003'
NOT_POR EQU H'0001'
NOT_BO EQU H'0000'
NOT_BOR EQU H'0000'
NOT_BOD EQU H'0000'

;----- TXSTA Bits ----------------------------------------------------------
CSRC EQU H'0007'
TX9 EQU H'0006'
TXEN EQU H'0005'
SYNC EQU H'0004'
BRGH EQU H'0002'
TRMT EQU H'0001'
TX9D EQU H'0000'

;----- EECON1 Bits ---------------------------------------------------------
WRERR EQU H'0003'
WREN EQU H'0002'
WR EQU H'0001'
RD EQU H'0000'

;----- VRCON Bits ---------------------------------------------------------

VREN EQU H'0007'
VROE EQU H'0006'
VRR EQU H'0005'
VR3 EQU H'0003'
VR2 EQU H'0002'
VR1 EQU H'0001'
VR0 EQU H'0000'

;================================================= =========================
;
; RAM Definition
;
;================================================= =========================

__MAXRAM H'01FF'
__BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
__BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
__BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
__BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'

;================================================= =========================
;
; Configuration Bits
;
;================================================= =========================

_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_CP_ALL EQU H'03FF'
_CP_75 EQU H'17FF'
_CP_50 EQU H'2BFF'
_CP_OFF EQU H'3FFF'
_DATA_CP_ON EQU H'3EFF'
_DATA_CP_OFF EQU H'3FFF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_MCLRE_ON EQU H'3FFF'
_MCLRE_OFF EQU H'3FDF'
_ER_OSC_CLKOUT EQU H'3FFF'
_ER_OSC_NOCLKOUT EQU H'3FFE'
_INTRC_OSC_CLKOUT EQU H'3FFD'
_INTRC_OSC_NOCLKOUT EQU H'3FFC'
_EXTCLK_OSC EQU H'3FEF'
_LP_OSC EQU H'3FEC'
_XT_OSC EQU H'3FED'
_HS_OSC EQU H'3FEE'

LIST



Ho il sospetto che il problema stia nell'oscillatore interno... qualcuno ha avuto lo stesso problema?
Icone allegate
PIC 16F628, ricezione seriale..-circuito3.jpg  
faustog_2 non è collegato   Rispondi citando
Vecchio 03 novembre 10, 01:13   #14 (permalink)  Top
User
 
L'avatar di Mrk89
 
Data registr.: 29-05-2006
Residenza: Catania
Messaggi: 2.933
Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
OK FUNZIONA TUTTO

adesso riesco a leggere e scrivere attraverso la seriale USB, con il 16F628, in allegato metto una foto del circuito, mentre vcome software va bene anche quello che si trova in rete qui:

Bente Petersen's 9600baud 16F628 UART test circuit and program
USB?? Vuoi dire seriale con protocollo RS-232 giusto?
__________________
Il filo attaccato all'antenna non mente mai....Troppo vento, si torna a casa....
I miei circuiti elettronici autocostruiti: Postbruciatore per ventole intubate ; Circuito luci per aeromodello-elimodello ; Rallenta servo con protezione da corto circuito
Mrk89 non è collegato   Rispondi citando
Vecchio 03 novembre 10, 12:59   #15 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok

si RS232 ..infatti nel circuito trovi la max232... poi con un adattatore della hama adatto alla USB del mio portatile.. adesso andrò a creare con la mille fori il circuito, in modo che per testare i microcontrollori anchè usare un display uso il PC.
Presto cercherò di scrivere un applicazione in Java che prende il segnale seriale quindi anzichè usare Hypeterminal userò la mia applicazione... e così via esperimento dopo esperimento.. vedrò un pò dove si può arrivare..a dopo


Citazione:
Originalmente inviato da Mrk89 Visualizza messaggio
USB?? Vuoi dire seriale con protocollo RS-232 giusto?
faustog_2 non è collegato   Rispondi citando
Vecchio 04 novembre 10, 23:47   #16 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
microcontrollori e Java

oggi ho avuto il tempo per scrivere una classe Java che è in grado di ricevere e spedire numeri al 16F628 , direi molto interessante se pendo che tale applicazione può funzionare anche in un'applicazione client - Server.. ecco la parte centrale del software:

try
{
portId=CommPortIdentifier.getPortIdentifier("COM1" );

serialPort=(SerialPort)portId.open("RS232",2000); // ogni due secondi controlla se ci sono errori nella trasmissione dei dati

serialPort.setFlowControlMode(SerialPort.FLOWCONTR OL_RTSCTS_IN); //Controllo dei segnali Request to send Clear to send

System.out.println("porta aperta");

outputStream=serialPort.getOutputStream();// si prende il canale di output allo stesso modo potrebbe prendere quello di input

outSer = new DataOutputStream(outputStream);


serialPort.addEventListener(this);

serialPort.notifyOnDataAvailable(true); // quando ci sono dati in arrivo

serialInput=serialPort.getInputStream();

serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}
catch(Exception e)
{
System.out.println("ERRORE");
}
}
//__________________________________________________ ___________
public void actionPerformed(ActionEvent e)
{
String b;
int data_out = 0;

if(e.getSource() == ch) serialPort.close();
{

}
if (e.getSource() == a)
{
b = t.getText();
m.append(b);
m.append("\n");

data_out = Integer.parseInt(b);

try
{
outSer.writeByte(data_out);
outSer.flush();
}
catch(Exception ev)
{
System.out.println("ERRORE "+ev);
}
}
}
//__________________________________________________ ___________
public void serialEvent(SerialPortEvent event)
{
if(event.getEventType()== SerialPortEvent.DATA_AVAILABLE)
{
try
{
while(serialInput.available()>0)
{
B[0]=(char)serialInput.read();
String s=new String(;
m.append(s);

}
}
catch(Exception e)
{
System.out.println(e);

}

}
}
faustog_2 non è collegato   Rispondi citando
Vecchio 08 novembre 10, 20:58   #17 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
primo test OK

oggi ho provato e funziona!
dalla mia applicazione in Java è possibile muovere il servo, il servo si muove con un estensione superiore rispetto a quella offerta normalmente dalla ricevente... in sostanza , ho osservato che la normale escursione di un servo si muove tra 50 e 207, invece con l'applicazione da 0 a 255, infatti il servo rotea da un lato all'altro in modo più esteso.

bene bene ,,,adesso il prossimo step pilotare più servi contemporaneamente
alla prossima...
faustog_2 non è collegato   Rispondi citando
Vecchio 10 novembre 10, 01:51   #18 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
Java e multiservo

eseguendo una sorta di multiplexing l'applicazione in java adesso pilota 4 servi in modo separato può quindi essere lo spunto per creare una piattaforma per pilotare un aereo .. almeno in forma teorica.. ovviamente dopo aver aquisito i dati del GPS, sensori inerziali, ecc...a dopo
e scusate ancora



Citazione:
Originalmente inviato da faustog_2 Visualizza messaggio
oggi ho provato e funziona!
dalla mia applicazione in Java è possibile muovere il servo, il servo si muove con un estensione superiore rispetto a quella offerta normalmente dalla ricevente... in sostanza , ho osservato che la normale escursione di un servo si muove tra 50 e 207, invece con l'applicazione da 0 a 255, infatti il servo rotea da un lato all'altro in modo più esteso.

bene bene ,,,adesso il prossimo step pilotare più servi contemporaneamente
alla prossima...
faustog_2 non è collegato   Rispondi citando
Vecchio 11 novembre 10, 14:53   #19 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ecco il firmware

ho dovuto scomodare il registro FSR ... funziona alla grande!


;Questo software riceve dall'applicazione java JRobot sequenze di numeri
; compresi tra 0 e 255. In ordine questi numeri saranno assegnati a ATTESA1,
; ATTESA2, ATTESA3, ATTESA4. Queste tre varibili sono utlizzate in
; BLOCK PULSE, per impartire ad ogni servo la relativa inclinazione.
;
; fausto.giudice@gmail.com
;-----------------------------------------------------
PROCESSOR 16F628
RADIX DEC
INCLUDE "P16F628.INC"
__CONFIG 11110100010000B
;
; __________________________________________________ _____________________________________
;
ATTESA EQU 32
L_COUNT EQU 33
H_COUNT EQU 34
CL EQU 35
ID_SERVO EQU 36
ATTESA1 EQU 41
ATTESA2 EQU 42
ATTESA3 EQU 43
ATTESA4 EQU 44
;
; __________________________________________________ _____________________________________
;
; START PROGRAM
; ------------------------------------
ORG 0
;
; __________________________________________________ _____________________________________
;
; SET ANALOG/DIGITAL INPUTS PORT A
; ------------------------------------
;
MOVLW 7
MOVWF CMCON ; CMCON=7 set comperators off
;
; __________________________________________________ _____________________________________
;
; INITIALIZE PORTS
; ------------------------------------
;
movlw b'00000000' ; set up portA
movwf PORTA

movlw b'00000100' ; RB2(TX)=1 others are 0
movwf PORTB

bsf STATUS,RP0 ; RAM PAGE 1

movlw b'11110000'
movwf TRISA ; portA all pins input

movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output
movwf TRISB
;
; __________________________________________________ _____________________________________
;
; SET UART DEVICE, FOR COMUNICATE SERIAL PORT
; ------------------------------------
;
;
movlw 0x19 ; 0x19 = 9600 bps
movwf SPBRG
movlw b'00100100' ; brgh = high (2)
movwf TXSTA ; enable Async Transmission, set brgh

bcf STATUS,RP0 ; RAM PAGE 0

movlw b'10010000' ; enable Async Reception
movwf RCSTA
;
; __________________________________________________ _____________________________________
;
; INIZIALIZE VARIABLES
; ------------------------------------
;
call message
MOVLW 100
MOVWF ATTESA1
MOVLW 100
MOVWF ATTESA2
MOVLW 100
MOVWF ATTESA3
MOVLW 100
MOVWF ATTESA4

MOVLW 41
MOVWF ID_SERVO ; INIZIALIZE THE ID_SERVO
MOVWF FSR ; THIS IS A POITER AT ARRAY MEMORY OF SERVOS

;
; __________________________________________________ _____________________________________
;
; PULSE BLOCK
; ------------------------------------
;

LOOP CALL DELAY_20

MOVF ATTESA1,W
MOVWF ATTESA
BSF PORTA,0
CALL PULSE
BCF PORTA,0

MOVF ATTESA2,W
MOVWF ATTESA
BSF PORTA,1
CALL PULSE
BCF PORTA,1

MOVF ATTESA3,W
MOVWF ATTESA
BSF PORTA,2
CALL PULSE
BCF PORTA,2

MOVF ATTESA4,W
MOVWF ATTESA
BSF PORTA,3
CALL PULSE
BCF PORTA,3
;
; __________________________________________________ _____________________________________
;
;
; ------------------------------------
;
btfss PIR1,RCIF ; Receive data from Serial Port
GOTO LOOP ;
MOVF RCREG,W ; If true then load W
MOVWF INDF ; load FSR register by INDF

MOVF ID_SERVO,W
SUBLW 44

btfss STATUS,Z
GOTO STEP

MOVLW 41 ; INIZIALIZZA TUTTO DACCAPO
MOVWF ID_SERVO ;
MOVWF FSR ;
GOTO LOOP ; TORNA SUL PULSE BLOCK

STEP INCF FSR
INCF ID_SERVO
GOTO LOOP
;
; __________________________________________________ _____________________________________
;
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; ------------------------------------
;
send movwf TXREG ; send data in W

TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere

bcf STATUS,RP0 ; RAM PAGE 0
return

;
; __________________________________________________ _____________________________________
;
; MESSAGE
; ------------------------------------
;
message movlw '1'
call send
movlw '6'
call send
movlw 'F'
call send
movlw '6'
call send
movlw '2'
call send
movlw '8'
call send
movlw ' '
call send
movlw 'R'
call send
movlw 'e'
call send
movlw 'a'
call send
movlw 'd'
call send
movlw 'y'
call send
movlw 0x0D ; CR
call send
movlw 0x0A ; LF
call send
return
;
; __________________________________________________ _____________________________________
;
; GENERA UN RITARDO DI 20 mS
; ------------------------------------
;

DELAY_20 movlw 26
movwf H_COUNT
movlw 10
movwf L_COUNT
decfsz L_COUNT,F
goto $-1
decfsz H_COUNT,F
goto $-3

RETURN

;
; __________________________________________________ _____________________________________
;
; GENERA UN RITARDO PROPORZIONALE AL REGISTRO ATTESA
; ------------------------------------
;
; 900 + 5 * ATTESA = da 900uS se ATTESA è = 0 , a max 2000uS se ATTESA = 200

PULSE movlw 178 ; 1uS |
movwf CL ; 1uS | 4uS
goto $+1 ; 2uS |

goto $+1 ; 2uS |
decfsz CL,F ; 1uS | 5uS * (178 - 1) = 885uS
goto $-2 ; 2uS |

nop ; 1uS

movf ATTESA,W ; 1uS
movwf CL ; 1uS
btfsc STATUS,Z ; 1uS nel caso in cui ATTESA = 0 allora salta alla fine
RETURN ; 2uS

goto $+1 ; 2uS

goto $+1 ; 2uS |
decfsz CL,F ; 1uS | 5uS * (ATTESA - 1) =
goto $-2 ; 2uS |

RETURN

END
faustog_2 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
alimentazione pic 16f628 gungun Circuiti Elettronici 6 04 settembre 09 01:05
Interfaccia seriale -> notebook senza porta seriale francyflyer Simulatori 4 10 marzo 06 18:48
Modulo USART 16F628 SoldatoSemplice Circuiti Elettronici 1 06 marzo 06 19:20
Schemi - Regolatore con Pic 16F628 BaroneRosso News 0 17 giugno 05 16:07
regolatore di giri con pic 16f628 fabari Circuiti Elettronici 5 23 marzo 05 22:02



Tutti gli orari sono GMT +2. Adesso sono le 05:56.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002