HCS12 SCI to GUI

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

HCS12 SCI to GUI

758 Views
JackAlice
Contributor I

Hello everyone

 

Im brand new to programming micro controllers and I'm having trouble getting my MC9S12DG256B to talk to a GUI I am designing on my computer. What I'm trying to do is send information from the ADC to the computer through the SCI, and then allow the GUI on the computer to set different variables in my MCU via SCI as well. Like I said I'm really new to this and just started getting some of the concepts down. So here is my code. 

#include <hidef.h>      /* common defines and macros */#include "derivative.h"      /* derivative-specific definitions */void SciConfig(void);void CharOut(char);void delay(int);void init_ATD(void);void DataOut(int);void init_PLL(void);int input(void);//****Main****//void main(void) {char D = 0x80; int B = 0x01;  int adcMid; int adcData; int inData; int adcEnd;  init_PLL();  // for running board without code warriorinit_lcd4(); // initiates LCD displaySciConfig();// configures SCI for outputinit_ATD(); //initiates  ATD converterDDRJ |= 0x02; PTJ &= 0x02; DDRB = 0xFF; ATD0CTL5 = 0x25; //starts conversion  and continuousely scans chanells                            for(;;){   delay(50);     //wait for just a sec DataOut(ATD0DR0H);  PORTB = ATD0DR0H;  delay(500);   if ((SCI0SR1 & 0x20) ==  0){  inData = input();  PORTB = inData;   lcd_printd(inData);   delay(500);   }  }}//*****Functions*****////configures SCI for output. 9600 buad ratevoid SciConfig(){   SCI0BDH= 0x00;  SCI0BDL = 0x9C;   //baud rate to 9600  SCI0CR1 =0x24;  SCI0CR2 =0x0C; // enable transmit and recieve}//functions to pass variables for output to COM portvoid CharOut(char c){      while ((SCI1SR1 & 0x80) ==0)  //waits for data to be send and trasmit reg empty    //waits for data to be sent   SCI0DRL=c;   delay(50);}void DataOut(int val){  while((SCI0SR1 & 0x80)==0){  }//wait for data to be sent  SCI0DRL = val;  delay(50);}    int input() {  while((SCI0SR1 & 0x20) == 0); {  }  return SCI0DRL;}// delay for 'del' msecsvoid delay(int del){    int i,j; for(i=0; i<del; i++)    for(j=0; j<4000; j++);}//initilizes ATD convertervoid init_ATD( ){   ATD0CTL2 = 0xC0; // 1100 0000 -- ADC On = 1, AFFC = 1, ASCIE = 0   delay(1);   // waits for LCD warm up (actually only needs 5 us)   ATD0CTL3 = 0x88; // 0 0001 000 -- one conversion per sequence   ATD0CTL4 = 0x8B; // 1 00 01011 - 8-bit resoln, 2 A/D clks, 1 MHz conv. freq}

 My some design specifications: I need the ADC to constintly output to the SCI so the comptuer will have an up to minute reading from it. Also I need the comptuer to be able to set different features on the the MCU. 

Labels (1)
0 Kudos
2 Replies

442 Views
Sunrunner
Contributor I

On your char out function you are checking SCI1SR1... shoudln't it be SCI0SR1?

0 Kudos

442 Views
JackAlice
Contributor I

Yes it should. Thanks for the reply. I solved this issue through surfing the internet a little while ago. I needed interrupts to allow the GUI to set certain values, then go back to constantly sending the ADC results to the computer.

0 Kudos