Bluetooth modulen bekräftar inte mina AT kommandon

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Goran
Inlägg: 31
Blev medlem: 19 augusti 2006, 09:47:36
Ort: Göteborg

Inlägg 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:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Skriv svar