USART e ADC

11 Anni 7 Mesi fa - 11 Anni 7 Mesi fa #6 da StefA
Risposta da StefA al topic USART e ADC
prova RS232 Terminal , è di Mauro e lo trovi sul sito, mi pare ci sia la possibilità di visualizzare a schermo oltre che gli ASCII anche integer e esadecimali. C'è anche la guida e dovrebbe essere semplice da usare, se non riesci o non risolve il tuo problema, chiedi.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ultima Modifica 11 Anni 7 Mesi fa da StefA.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #7 da Fausto
Risposta da Fausto al topic USART e ADC
allora, ho provato con itoa, ma sembra non andare d'accordo con la funzione WriteUSART, non so perchè. ma va' da'ccordo con la funzione nella libreria putrsUSART.

Non capisco sinceramente il motivo. copio il codice. Quello che ora devo comprendere è perchè una volta che schiacchio lo 0, invece di darmi il risultato della conversione, me ne mando uno dopo l'altro, come se fosse dentro un ciclo while. Certo lo è dentro un ciclo while, ma dopo che mando il risultato setto a 0x00 la lettura della USART, ma si comporta come se mi fossi addormentato sul tasto 0, mandando in tilt tutto.

#include <p18f4550.h>
#include <usart.h>
#include <stdio.h>
#include <stdlib.h>
#define LCD_DEFAULT
#include "LCD_44780.h"

#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF

/*
OSC = HS oscillatore impostato ad alta frequenz
WDT = OFF disabilito il wdt timer
LVP = OFF disabilito programmazione LVP
PBADEN = disablito gli ingressi analogici
*/

void main (void)
{
//variabile per salvare la variabile di ritorno
unsigned char dataChar;
unsigned char data=0;
unsigned char adc1=0;
unsigned char adc2=0;
unsigned int convInt=0;
unsigned char messaggio;
int adc=0;
int i=0;
char dataTx;

unsigned int sommatoria =0;

int lettura=0;
int valore_ADC=0;


//imposto le porte
LATA=0x00;
TRISA=0xFF;

LATB=0x00;
TRISB=0xFF;

LATC=0x00;
TRISC=0b11111101;

LATD=0x00;
TRISD=0x00;

LATE=0x00;
TRISE=0x00;

OpenLCD(20);
BacklightLCD(TURN_ON);

/*
Configurazione USART
8 bit
19200 bit/s
1 bit stop
0 bit parita'
*/
OpenUSART(USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_BRGH_HIGH,
64);

//invio la stringa al terminale
putrsUSART ("...start writing: ");

///invio la stringa al LCD
WriteStringLCD("...start writing:");

//Atendo di rx un dato dal PC
//while(!DataRdyUSART());
ClearLCD();




// Abilito AN0-AN1 come ingressi analogici
//Vref sono impostati come massa e Vcc
ADCON1=0b00001101;

//seleziono AN2 come ingresso
//Go/done:0, la conversione è terminata
//ADON:il modulo è disattivato
ADCON0=0b00000100;

// imposto i tempo di conversione
//giustificazione a destra
//TAD:FOSC/4
//TACQ: 16 TAD
ADCON2=0b10110100;
while(1)
{
//Abilito l'ADC
//Si abilita l'ADC.
ADCON0bits.ADON=0x01;

sommatoria=0;
ADCON0bits.GO=1;
while(ADCON0bits.GO);

adc = (((int) ADRESH) << 8) | ADRESL;
WriteIntLCD(adc,4);
adc1=(char)ADRESH;
adc2=(char)ADRESL;



itoa(adc,dataChar);

ShiftCursorLCD(LEFT,4);

data = ReadUSART();

if(data==0x30)
{

putrsUSART ("button pressed:value is: ");
putsUSART(dataChar);
data=0x00;

}
}
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Fausto
  • Avatar di Fausto
  • Premium Member
  • Premium Member
Di più
11 Anni 7 Mesi fa - 11 Anni 7 Mesi fa #8 da Matteo Garia
Risposta da Matteo Garia al topic USART e ADC
printf("%d", valore);

dove valore è la variabile a 16 bit in cui memorizzi il risultato della conversione.
Su hitech funziona ma essendo una funzione standard dovrebbe andare ovunque

Matteo
Ultima Modifica 11 Anni 7 Mesi fa da Matteo Garia.
Ringraziano per il messaggio: Fausto

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #9 da StefA
Risposta da StefA al topic USART e ADC
mentre ti sta mandando uno dietro l'altro i valori sul terminale, prova a premere un altro pulsante della tastiera e vedi se si ferma. Che programma per pc utilizzi per leggere da seriale?

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ringraziano per il messaggio: Fausto

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
11 Anni 7 Mesi fa #10 da Fausto
Risposta da Fausto al topic USART e ADC
Ciao uso, hyperteminal. Adesso ho ordinato in codice con delle funzioni in modo da poter leggere meglio il codice.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Fausto
  • Avatar di Fausto
  • Premium Member
  • Premium Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login