- Messaggi: 243
- Ringraziamenti ricevuti 0
COMBINATORE TELEFONICO
2 Anni 9 Mesi fa #36
da FABRIZIO
Risposta da FABRIZIO al topic COMBINATORE TELEFONICO
Buongiorno a tutti. Sono riuscito a trasmettere da Terminal verso il PIC, ma non riesco a trasmettere col PIC e ricevere con Terminal; quindi credo che i baud, cioè la velocità di comunicazione è a posto; ma perchè non ricevo alcun carattere su Terminal trasmesso dal PIC?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- FABRIZIO
- Autore della discussione
- Elite Member
Riduci
Di più
2 Anni 9 Mesi fa #37
da Mauro Laurenti
Risposta da Mauro Laurenti al topic COMBINATORE TELEFONICO
Suggerisco un passo in dietro e creiamo un punto di partenza aggiornato.
Devi spiegare con maggior chiarezza il tuo setup.
Mostra lo schema e il software lato PIC.
Il software deve essere base.
Mostra i collegamenti dello schema e schede.
Come colleghi le schede ricattatrici?
Come imposti il software dal lato PC?
Quali test hai fatto, quali funzionano e quali no?
Saluti,
Mauro
Devi spiegare con maggior chiarezza il tuo setup.
Mostra lo schema e il software lato PIC.
Il software deve essere base.
Mostra i collegamenti dello schema e schede.
Come colleghi le schede ricattatrici?
Come imposti il software dal lato PC?
Quali test hai fatto, quali funzionano e quali no?
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
2 Anni 9 Mesi fa #38
da FABRIZIO
Risposta da FABRIZIO al topic COMBINATORE TELEFONICO
Allora il mio PIC16F690 è gestito dal clock interno a 8 MHz, riesco a ricevere il carattere inviato da Terminal e lo verifico perchè avevo creato un pezzo di programma che se ricevo 65, cioè la lettera A, mi setta un'uscita che mi fa scattare un relè nella scheda e mi accende un led; viceversa ho impostato un altro numero che, digitando la corrispondente lettera, mi spegne il led e scatta il relè. Il collegamento è esattamente quello che hai scritto a pag. 8 del PROTOCOLLO RS232 da te creato. Seguendo il tutorial di Renato Ferrero riesco a dialogare col sim900 tramite Terminal; quello che non riesco è inviare il numero 65 a Terminal e vedermi apparsa nella finestra di ricezione la lettera A. Quest'operazione mi servirà per inviare comandi AT al modulo tramite PIC. Uso MPLABX e compilatore XC8 ver. 2.10
Il listato del mio programma:
//Fusibili di configurazione (disabilitato BORDIS e PWRDIS)
#pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown-out Reset Selection bits (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#define _XTAL_FREQ 8000000 //Oscillatore impostato a 8 MHz
#include <xc.h>
#include <pic.h>
int tempo = 0; //Routine per ritardo
int Routine_Ritardo(int func); //Ritardo per pause e antirimbalzo
int Convertitore(int numerico);
int ValoreRicevuto;
unsigned char pippo[22] = "ATD+391234567890;<CR>"; //Col numero giusto serve a far suonare il
//mio cellulare mediante PIC
//Input
#define Rx RB5 //Pin di ricezione da porta modulo GSM
//Output
#define ComandoSlave RC6 //Comando inviato a scheda SLAVE antifurto
#define Interruttore RB4 //Interruttore di accensione-spegnimento modulo GSM
#define Tx RB7 //Pin di trasmissione a porta modulo GSM
//
void __interrupt()intervallo(void) //Interrupt di TIMER0 settato a 1 ms
{
//RICEZIONE mediante interrupt (verifica ogni millisecondo)
while (RCIF) {ValoreRicevuto = RCREG;} //Se buffer ricezione pieno
//e assenza di trasmissione passa valore
if (T0IF) //Se overflow
{
//
T0IF = 0; //Reset
}
if (tempo != 0)
{
tempo--; //Decremento
}
T0IF = 0; //Reset
}
//
//Funzione di ritardo (ogni oscillazione è uguale a 1 ms)
int Routine_Ritardo(func)
{
tempo = func;
while (tempo != 0)
{
asm("nop");
}
return 0;
}
/*
PER IL MOMENTO NON USATA
unsigned char Trasmissione(valore) //Gestione informazioni
{
Routine_Ritardo(100); //Assestamento linea
RCIE = 0; //Disabilitazione interrupt ricezione
TXEN = 1; //Abilitazione trasmissione seriale
Routine_Ritardo(50); //Assestamento linea
while(TXIF == 0)
{
Routine_Ritardo(10);
TXREG = 'U';
}
Routine_Ritardo(50); //Assestamento linea
//FINE TRASMISSIONE
//SETTAGGIO RICEZIONE
TXEN = 0; //Disabilitazione trasmissione seriale
Routine_Ritardo(50); //Assestamento linea
RCIE = 1; //Abilitazione interrupt ricezione
return 0;
}
*/
//
void main(void)
{
// INIZIALIZZAZIONE HARDWARE
ANSEL = 0x00;
ANSELH= 0X00; //Esclusione porte analogiche, tutto digitale i/o
// PORT A
TRISA = 0b11111100; //Port A tutto IN
// PORT B
TRISB = 0b01101111; //Port B tutto IN tranne bit 4, 7
// PORT C
TRISC = 0b10111111; //Port C tutto IN tranne bit 6
// Oscillatore impostato a 4MHz
OPTION_REG = 0b10000010; //Prescaler e disabilitazione Pull-up
INTCON = 0b11100000;
OSCCON = 0b01110000; //Settaggio oscillatore interno a 8 MHz
TMR0 = 6; //Caricamento TIMER0 a 1 ms
TXEN = 1; //Abilitazione della trasmissione
//RCIE = 1; //Interrupt ricezione abilitato
SYNC = 0; CREN = 1; SPEN = 1;//Settaggi per ricezione
BRGH = 1; BRG16 = 0; SPBRG = 51;//Settaggio per velocità di comunicazione (9600 baud rate)
PORTA = 0X00; PORTB = 0X00; PORTC = 0X00; //Reset delle porte
Routine_Ritardo(100);
//
while (1)
{
while (TXIF == 1)
{
Routine_Ritardo(50);
TXREG = 65;//A
}
Routine_Ritardo(50); //Assestamento linea
}
}
Il listato del mio programma:
//Fusibili di configurazione (disabilitato BORDIS e PWRDIS)
#pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown-out Reset Selection bits (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#define _XTAL_FREQ 8000000 //Oscillatore impostato a 8 MHz
#include <xc.h>
#include <pic.h>
int tempo = 0; //Routine per ritardo
int Routine_Ritardo(int func); //Ritardo per pause e antirimbalzo
int Convertitore(int numerico);
int ValoreRicevuto;
unsigned char pippo[22] = "ATD+391234567890;<CR>"; //Col numero giusto serve a far suonare il
//mio cellulare mediante PIC
//Input
#define Rx RB5 //Pin di ricezione da porta modulo GSM
//Output
#define ComandoSlave RC6 //Comando inviato a scheda SLAVE antifurto
#define Interruttore RB4 //Interruttore di accensione-spegnimento modulo GSM
#define Tx RB7 //Pin di trasmissione a porta modulo GSM
//
void __interrupt()intervallo(void) //Interrupt di TIMER0 settato a 1 ms
{
//RICEZIONE mediante interrupt (verifica ogni millisecondo)
while (RCIF) {ValoreRicevuto = RCREG;} //Se buffer ricezione pieno
//e assenza di trasmissione passa valore
if (T0IF) //Se overflow
{
//
T0IF = 0; //Reset
}
if (tempo != 0)
{
tempo--; //Decremento
}
T0IF = 0; //Reset
}
//
//Funzione di ritardo (ogni oscillazione è uguale a 1 ms)
int Routine_Ritardo(func)
{
tempo = func;
while (tempo != 0)
{
asm("nop");
}
return 0;
}
/*
PER IL MOMENTO NON USATA
unsigned char Trasmissione(valore) //Gestione informazioni
{
Routine_Ritardo(100); //Assestamento linea
RCIE = 0; //Disabilitazione interrupt ricezione
TXEN = 1; //Abilitazione trasmissione seriale
Routine_Ritardo(50); //Assestamento linea
while(TXIF == 0)
{
Routine_Ritardo(10);
TXREG = 'U';
}
Routine_Ritardo(50); //Assestamento linea
//FINE TRASMISSIONE
//SETTAGGIO RICEZIONE
TXEN = 0; //Disabilitazione trasmissione seriale
Routine_Ritardo(50); //Assestamento linea
RCIE = 1; //Abilitazione interrupt ricezione
return 0;
}
*/
//
void main(void)
{
// INIZIALIZZAZIONE HARDWARE
ANSEL = 0x00;
ANSELH= 0X00; //Esclusione porte analogiche, tutto digitale i/o
// PORT A
TRISA = 0b11111100; //Port A tutto IN
// PORT B
TRISB = 0b01101111; //Port B tutto IN tranne bit 4, 7
// PORT C
TRISC = 0b10111111; //Port C tutto IN tranne bit 6
// Oscillatore impostato a 4MHz
OPTION_REG = 0b10000010; //Prescaler e disabilitazione Pull-up
INTCON = 0b11100000;
OSCCON = 0b01110000; //Settaggio oscillatore interno a 8 MHz
TMR0 = 6; //Caricamento TIMER0 a 1 ms
TXEN = 1; //Abilitazione della trasmissione
//RCIE = 1; //Interrupt ricezione abilitato
SYNC = 0; CREN = 1; SPEN = 1;//Settaggi per ricezione
BRGH = 1; BRG16 = 0; SPBRG = 51;//Settaggio per velocità di comunicazione (9600 baud rate)
PORTA = 0X00; PORTB = 0X00; PORTC = 0X00; //Reset delle porte
Routine_Ritardo(100);
//
while (1)
{
while (TXIF == 1)
{
Routine_Ritardo(50);
TXREG = 65;//A
}
Routine_Ritardo(50); //Assestamento linea
}
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- FABRIZIO
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 243
- Ringraziamenti ricevuti 0
2 Anni 9 Mesi fa #39
da FABRIZIO
Risposta da FABRIZIO al topic COMBINATORE TELEFONICO
Tengo precisare che se stacco i fili di trasmissione e ricezione dal pic e li cortocircuito, quello che scrivo su Terminal nella finestra di trasmissione, lo ricevo nella ricezione, quindi posso dedurre che la scheda di interfaccia e la porta seriale funzionano.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- FABRIZIO
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 243
- Ringraziamenti ricevuti 0
2 Anni 9 Mesi fa #40
da FABRIZIO
Risposta da FABRIZIO al topic COMBINATORE TELEFONICO
E' tutto giusto, funziona tutto, adesso che ho cambiato il pic era guasto
Si prega Accedi o Crea un account a partecipare alla conversazione.
- FABRIZIO
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 243
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.