Hallo,

ik ben aan het werken met een PIC 18F4550 met de C18 compiler van Microchip. Het programma dat ik probeer te schrijven moet het volgende doen:

controleren of er iets binnenkomt via RS232: komt er iets binnen dan echo'en, komt er niets binnen dan de letter A (0x41) terugsturen.

dit is wat ik er van heb gemaakt, met behulp van de datasheet:

void init(void)
{
	TRISA = 0x0;
	TRISB = 0x0;
	TRISC = 0x10000000;
	TRISD = 0x0;

	TXSTA = 0b00100100; 
	RCSTA = 0b10010000;
	BAUDCON = 0b01011010;  
	SPBRG = 129;  			//baud 9600 @ 20MHz

	INTCONbits.PEIE = 0;	// interrups OFF
	INTCONbits.GIE = 0;
	PIE1bits.RCIE = 0;		
	
	return;
}

Als ik met Terminal bekijk wat er gebeurd, zie ik constant de letter 'A' komen (wat er op duidt dat BAUDCON en TXSTA goed zijn ingesteld), maar ongeacht of ik iets zend naar de PIC of niet er blijft slechts de letter 'A' komen. Ik heb Handshaking in Terminal uitgezet, dus het is niet zo dat er wordt gewacht op een Clear To Send.

Ik ben er al een aantal dagen zoet mee, en kom er maar niet achter wat er fout gaat. Ik heb de PIC, en de MAX233 ook al eens vervangen, met helaas hetzelfde resultaat.

Heeft iemand de oplossing voor mijn probleem?

Alvast hartelijk dank,

gr. Jurgen

[Bericht gewijzigd door Dark_Knight op (17%)]

Toch even de datasheet beter lezen? Bovenaan op de eerste bladzijde van hoofdstuk 20 over de EUSART staat (onder andere):

* bit SPEN (RCSTA<7>) must be set (= 1)
* bit TRISC<7> must be set (= 1)
* bit TRISC<6> must be set (= 1)

Ik zie in jouw code


TRISC = 0x10000000;

Ten eerste past dat getal niet in TRISC, maar je bedoelde ongetwijfeld


TRISC = 0b10000000;

Ook dat is fout, want volgens de datasheet moet het dus dit zijn:


TRISC = 0b11000000;

Probeer dat eerst maar eens effe en dan praten we verder :)

Haha... ja van die 'x' zal ik maar eens een 'b' maken. Het gaat nu sporadisch goed, en komt nog veel rotzooi tussen maar af en toe komt er het juiste karakter tussen.

Wat betreft

* bit SPEN (RCSTA<7>) must be set (= 1)
* bit TRISC<7> must be set (= 1)
* bit TRISC<6> must be set (= 1)

ik heb een datasheet van de 18F4550 waarin staat dat:

* bit SPEN (RCSTA<7>) must be set (= 1)
* bit TRISC<7> must be set (= 1)
* bit TRISC<6> must be cleared (= 0) for
Asynchronous and Synchronous Master modes
or set (= 1) for Synchronous Slave mode

dus dat is tegenstrijdig met de datasheet die ik nu ook vind op de webpage van microchip:
http://ww1.microchip.com/downloads/en/DeviceDoc/39632D.pdf

ik wil hem je best toesturen mocht je geïnteresseerd zijn. Jochem iig bedankt dat je me er even op wees! Ik zag het ff niet meer zitten. Nu verder spelen en kijken of ik er consequent het juiste teken uit kan halen.

M.v.g. Jurgen

Ik geloof je zo, zou niet de eerste keer zijn dat er een fout in zit.

Je zou voor de grap de errata voor die 18F4550 en z'n datasheets eens op kunnen snorren, misschien staat het erin. Ik heb d'r nu geen zin in, zit pas aan de eerste bak koffie ;)