Hey Hallo mensen
Ik probeer om met een PIC16F690 een Uart programma (C) te schrijven. (Poging om me zelf aan te leren)
nu heb ik een stukje code geschreven die na een paar seconde de letter A verstuurt naar mijn laptop.
Nu is de volgende stap de A versturen als naar mijn laptop als ik eerst een andere letter naar de uC gestuurd heb. Nu loop ik vast op dit punt ik en weet niet waar het fout gaat
Kan iemand mij uitlegen of een stukje code geven hoe ik het moet aan pakken.
(mijn werkende A Stuur code hieronder)
void SendUART(unsigned char dataValue)
{
TXREG = dataValue; //Start transmission
}
//-------------------------------------------------------------
void main(void){
unsigned char Reading1, Reading2;
TRISB = 0xF0; //TRISB<7:0> = 11110000, PORTB<7:4> input, PORTB<3:0> output
PORTB = 0; //Clear default state of PORTB to 0
TRISA = 0xFF; //TRISA<7:0> = 11111111, PORTB<7:0> input
SetupUART(); //Initialize UART Module
while (1) {
Reading1 = 'A';
SendUART(Reading1); //Transmit CH0 reading
delay(500);
} //End While
} //End Main
[Bericht gewijzigd door Henry S. op (1%)]
Eigenlijk moet je voor het ontvangen van karakters in je µC een interrupt routine maken die aangeroepen wordt door de UART als deze een karakter heeft ontvangen. In die routine lees je dan het receive register van de UART uit en plaats je die waarde in een variabele.
Ik ben even wezen speuren en dit is volgens mij wat je bedoelde.
void interrupt () {
if (RCIF) { // test the interrupt for uart rx
rxchar = Usart_Read(); //
rxarray[i] = rxchar;
i++;
// ******************************************************
// Only select one of the following statements
if (rxchar == 36) { // select this if looking for a terminating character
//if (i == n) ( // select this if looking for a number of characters
flag = 1;
} // end if (rxchar == "$")
} // end if (PIR1.RCIF)
} // end interruptIk ben er mee aan het spelen maar ik heb het idee dat er gewoon niks gebeurt?? misschien een interrupt die niet ge trickert wordt of zo ????
ik heb eigenlijk geen idee
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
ja staat aan
TRISB = 0b11000000; //PORTB<7:6> input, PORTB<5:0> output
PORTB = 0; //Clear default state of PORTB to 0
TRISA = 0b11001111; //TRISA<7:0> = 11111111, PORTB<7:0> input
TRISC = 0b00000000; //PORTC<:0> output
SPBRGH = 1;
SPBRG = 25; //9600 bps
TXSTA = 0b00100100; //8-bit, Transmission enabled, High Speed
RCSTA = 0b10010000; //Disable Reception, Enable UART module
BAUDCTL = 0; //8-bit, Auto Baud disabled
GIE = 1;
PEIE = 1;
RCIE = 1; //enable interrupt.Op 16 april 2014 14:38:16 schreef Shinoo:
ja staat aanRCSTA = 0b10010000; //Disable Reception, Enable UART module
Ehm, je moet natuurlijk wel de reception enablen! 
hadv
Just find out what you like and let it kill you