Sida 2 av 2

Postat: 1 september 2006, 21:20:43
av sodjan
> Satte in lite checkar för overrun och frame error...

Jo, det kan ju vara bra, men notera att du *aldrig* ska få overrun eller
frame error. Om du får det så har du ett stort fel i designen...

Postat: 2 september 2006, 19:49:42
av Goran
LÖST!
...kollade programminnet och fann att "data "AT+BTK=\"0000\"", 0x0D, 0" gav 0x0D ett eget word och satte istället in det som \r i strängen...men om man skulle vlija ha väldigt udda eller numeriska värden att följa med hur gör man då? jag använder 18f table funktioner för att läsa mina strängar...


Har stött på ett nytt problem. Nu vill inte pairingen fungera. Vad jag gör är att jag sätter modulen till att acceptera inkommande efter "1 ring" och är synlig. Kollar att dessa ger mig "OK" i respons. Sedan väntar jag tills jag får inkommande vilket jag får, alltså ett "PIN? XXXXXXXXXX" meddelande...där XXX... är adressen på den enhet som skickar begäran (min mobil), efter jag knappat in pin koden på mobilen såklart. När jag får detta meddelande skickar jag "AT+BTK="0000"" till modulen ända tills jag får ett "OK" av modulen, alltså att mobilen gick med på allt. Men Icke...får ej "OK" meddelandet. Så här ser koden ut:

Kod: Markera allt

PROG_VAR_BT_PIN
	data	"AT+BTK=\"0000\"", 0x0D, 0

;...senare i koden
SendPINCommand
	BT_SendCommand(PROG_VAR_BT_PIN)
	BT_HandleResponse(PROG_VAR_BT_OK)
	btfss	BTResponse, BT_RESPONSE_OK
	bra		SendPINCommand
;...fortsätter här
PROG_VAR_BT_PIN är alltså en sträng med kommandot för att skicka en pin kod som svar. BT_HandleResponse kollar om det jag får som svar är "OK"...får jag det så fortsätter koden. BT_RESPONSE_OK är bara en flagga som returneras från funktionen.

Postat: 2 september 2006, 20:39:10
av sodjan
Du skrev tidigare att du använder assembler. Stämmer det ? MPASM ?

> och fann att "data "AT+BTK=\"0000\"", 0x0D, 0" gav 0x0D ett eget word

Ja, och det stämmer överens med dokumentation.

> men om man skulle vlija ha väldigt udda eller numeriska värden att följa med hur gör man då?

MPASM manualen kapitel 3.2.1 sidan 40. T,ex "abc\xDEdef" sätter in
värdet h'DF' mellan "abc" och "def".

> data "AT+BTK=\"0000\"", 0x0D, 0

Är samma sak som :
data "AT+BTK=\"0000\"\r0", och så slipper du få CR i nästa program-word.

> BT_SendCommand(PROG_VAR_BT_PIN)
> BT_HandleResponse(PROG_VAR_BT_OK)

Jag känner inte riktigt igen detta som MPASM syntax...

Postat: 2 september 2006, 20:51:55
av Goran
Japp! använder MPASM. Tack för tipset om \x...användbart =)

BT_SendCommand etc. är macros...använder mycket sådant för att göra koden smidigare och mer lättläst...försöker väl härma c då jag vill att koden skall se bekant ut :oops:

Postat: 3 september 2006, 00:42:47
av sodjan
> BT_SendCommand etc. är macros...

Hm, men jag hade förväntat mig ett anrop som "BT_SendCommand PROG_VAR_BT_PIN"

Fungerar den där syntaxen med parenteser ?
Det var mer än vad jag visste, där ser man... :-)
Det är i alla fall inte så som det är dokumenterat...