' ********************************************************************** ' * File: Corso_BASCOMAVR_071.BAS * ' * Versione: 1.1 * ' * Data: 28.04.10 * ' * Ambiente sviluppo: Bascom-AVR Demo Ver. 1.11.9.1 + * ' * + AVR bootloader grifo(r) Ver. 1.2 * ' * Schede: GMM AM08 + GMM TST3 * ' * Sviluppato da: GRIFO(r) Italian Technology * ' * via Dell'Artigiano 8/6 * ' * 40016 S. Giorgio di Piano (BO) * ' * Tel. +39 051 892052 Fax. +39 051 893661 * ' * http://www.grifo.com http://www.grifo.it * ' * Autore: Gianluca Angelini * ' ********************************************************************** ' Programma di esempio 071 del corso BASCOM AVR. ' Gestione ingressi Optoisolati: acquisisce lo stato di 8 ingressi digitali ' Optoisolati e li rappresenta sulla console seriale. ' Gli 8 ingressi sono acquisiti tramite altrettante linee di I/O del ' microcontrollore, riportate sul connettore CN4 della GMM TST3, come da schema ' elettrico. ' La circuiteria di separazione galvanica collegata a queste linee consente di ' acquisire sensori (fine corsa, proximity, fotocellule, ecc.) di tipo PNP. ' Sulla console vengono continuamente rappresentati gli stati degli ingressi ' Optoisolati, che coincidono con gli stati dei sensori esterni collegati (Px ' nello schema), nel formato ON od OFF. ' Il programma si presenta ed usa una console seriale dotata di monitor, con ' un protocollo fisico costante a 19200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna ' parità. ' Questa console può coincidere con un sistema in grado di gestire una ' comunicazione seriale in RS 232. Al fine di semplificarne l'uso si può ' usare un PC dotato di una linea COMx, che esegue un programma di emulazione ' terminale come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM AVR ' (vedere Configurazioni IDE). ' Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della ' GMM TST3!! ' ' Aggiunte: Nessuna. ' ' 28/04/10: Corso_BASCOMAVR_071.BAS - Ver 1.1 - By G.A. ' Prima versione. ' ' '*************************** Configurazioni IDE ******************************** ' NOTE: per usare correttamente questo programma demo, eseguire i seguenti ' punti: ' 1) Controllare la presenza del file M8DEF.DAT nella directory di ' installazione del BASCOM-AVR e se non disponibile copiarlo e dopo ' rilanciare l'IDE. ' 2) Nella finestra "Options | Compiler | Chip" impostare: ' Chip: m8def.dat ' XRAM: None ' HW Stack: 64 ' Soft Stack: 32 ' Framesize: 64 ' XRAM waitstate: disattivo ' External Access Enable: disattivo ' 3) Nella finestra "Options | Communication" settare: ' COM port = la linea del PC collegata alla GMM AM08, tramite la GMM TST3 ' Baudrate = 19200 ' Parity = None ' Databits = 8 ' Stopbit = 1 ' Handshake = None ' Emulation = TTY ' Font = Terminal, Normale, 12 punti, colore bianco ' Backcolor = Navy ' 4) Al termine della compilazione, della programmazione del codice nella ' GMM AM08, aprire la finestra di emulazione terminale del BASCOM AVR con ' l'opzione: Tools | Terminal emulator (Ctrl+T) ed a questo punto resettare ' o riaccendere il Mini Modulo. '********************** Direttive del compilatore ****************************** $regfile "M8DEF.DAT" ' File di definizione microcontrollore usato $romstart = &H0 ' Indirizzo inizio codice in FLASH $crystal = 7372800 ' Frequenza quarzo del microcontrollore $hwstack = 64 ' Spazio per stack hardware $swstack = 32 ' Spazio per stack software $framesize = 64 ' Spazio per frame $map ' Genera informazioni di debug $baud = 19200 ' Velocità comunicazione seriale: 19200 Baud ' Altri parametri sono fissi a: 8 bit x chr ' 1 Stop bit ' No parity '******************************* Definizioni *********************************** ' Le risorse usate dal programma sono collegate come illustrato nella seguenti ' tabelle: ' !!! N.B. Sulla GMM TST3 i jumper devono essere posizionati come segue: ' J1 N.C. ; J2 in 1-2 ; J3 in 1-2 ; J5 in 2-3 ; J7 in 2-3 ; J8 in 2-3 ' J9 in 2-3 !!! ' ' Segnale Risorsa pin Z2 pin Segnale Segnale uP ' esterno GMM TST3 GMM TST3 GMM AM08 GMM AM08 usato ' Opto-In 1 CN4.1 32 26 PC0 ADC0 PC0 ' Opto-In 2 CN4.4 31 25 PC1 ADC1 PC1 ' Opto-In 3 CN4.15 25 19 PD2 INT0 PD2 ' Opto-In 4 CN4.16 24 18 PD3 INT1 PD3 ' Opto-In 5 CN4.13 23 17 PD4 T0 XCK PD4 ' Opto-In 6 CN4.14 22 16 PD5 T1 PD5 ' Opto-In 7 CN4.11 21 15 PC2 ADC2 PC2 ' Opto-In 8 CN4.12 19 13 PC3 ADC3 PC3 ' GND CN4.17 20 14 GND - ' +5 Vdc CN4.18 34 28 +5 Vdc - ' ' Segnale pin COMx pin CN5 pin Z2 pin Segnale Segnale uP ' PC DB9 GMM TST3 GMM TST3 GMM AM08 GMM AM08 usato ' TX 3 3 9 3 RxD RS232 PD0 ' RX 2 2 10 4 TxD RS232 PD1 ' GND 5 5 20 14 GND - ' Da questa tabella si ricava che il cavo di collegamento tra la COM del PC ed ' il CN5 della GMM TST3 è un normale cavo dritto o prolunga. Volendolo ' richiedere alla grifo(r) si deve specificare il codice CCR 9+9E. Pinopto1 Alias Pinc.0 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 1 Pinopto2 Alias Pinc.1 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 2 Pinopto3 Alias Pind.2 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 3 Pinopto4 Alias Pind.3 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 4 Pinopto5 Alias Pind.4 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 5 Pinopto6 Alias Pind.5 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 6 Pinopto7 Alias Pinc.2 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 7 Pinopto8 Alias Pinc.3 ' Bit con segnale d'ingresso collegato ad ingresso Optoisolato 8 Pinrx Alias Ddrd.0 ' Bit con direzione segnale collegato a RxD GMM AM08 Pintx Alias Ddrd.1 ' Bit con direzione segnale collegato a TxD GMM AM08 '************************ Dichiarazioni costanti ******************************* Const Cret = &H0D ' Codice ASCII Carriage Return '************************ Dichiarazioni variabili ****************************** Dim Inopto As Bit ' Variabile con stato ingresso Optoisolato '************************ Dichiarazioni procedure ****************************** Declare Sub Show_optoin() ' Rappresenta stato ingresso Optoisolato su console '************************** Programma principale ******************************* Main: Pinrx = 0 ' Inizializza segnali per comunicazione seriale Pintx = 0 ' come ingressi digitali Config Pinopto1 = Input ' Inizializza segnale Opto-In 1 come ingresso digitale Config Pinopto2 = Input ' Inizializza segnale Opto-In 2 come ingresso digitale Config Pinopto3 = Input ' Inizializza segnale Opto-In 3 come ingresso digitale Config Pinopto4 = Input ' Inizializza segnale Opto-In 4 come ingresso digitale Config Pinopto5 = Input ' Inizializza segnale Opto-In 5 come ingresso digitale Config Pinopto6 = Input ' Inizializza segnale Opto-In 6 come ingresso digitale Config Pinopto7 = Input ' Inizializza segnale Opto-In 7 come ingresso digitale Config Pinopto8 = Input ' Inizializza segnale Opto-In 8 come ingresso digitale Print ' Separa da precedenti indicazioni, andando su nuova riga Print Print " Acquisisce 8 ingressi Optoisolati" Print "Montare Mini Modulo su Z2 della GMM TST3, collegare circuiteria per ingressi" Print "bufferati Optoisolati a CN4 come da schema elettrico." Print "Lo stato degli ingressi e` continuamente rappresentato.." Print " Opto-In 1 In 2 In 3 In 4 In 5 In 6 In 7 In 8" Do ' Inizio loop infinito Print " "; ' Allinea rappresentazione ' Acqyuisisce e rappresenta stato ingresso Opto-In 1 Inopto = Pinopto1 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 2 Inopto = Pinopto2 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 3 Inopto = Pinopto3 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 4 Inopto = Pinopto4 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 5 Inopto = Pinopto5 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 6 Inopto = Pinopto6 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 7 Inopto = Pinopto7 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato ' Acqyuisisce e rappresenta stato ingresso Opto-In 8 Inopto = Pinopto8 ' Preleva stato ingresso Optoisolato Call Show_optoin() ' Rappresenta stato ingresso Optoisolato Printbin Cret ' Mantiene rappresentazione su stessa riga Waitms 50 ' Ritardo tra acquisizioni Loop ' Fine ciclo infinito End '************************ Fine programma principale **************************** '****************** Inizio procedure usate dal programma *********************** ' Rappresenta lo stato di un ingresso Optoisolato, sulla console ' Ingresso: Inopto = Stato acquisito dell'ingresso Optoisolato ' Uscita: Nulla Sub Show_optoin() Inopto = Not Inopto ' Converte stato in logica positiva If Inopto = 1 Then ' Rappresenta stato ingresso Optoisolato su console Print " ON "; Else Print " OFF "; End If End Sub '******************* Fine procedure usate dal programma ************************