Forum: Mikrocontroller und Digitale Elektronik Problem mit MSP430 und LM9830 SPP (MasterMode)


von Benedikt (Gast)


Lesenswert?

Hallo,

ich verwende einen MSP430 über UART verbunden mit dem LMX9830,
Hardware aufbau ist eigenbau und funktioniert, getestet mit Verbindung 
vom PC über BT-Dongle, der PC erkennt den LMX und ich kann auch eine SPP 
verbindung aufbauen und Daten hin und her schicken.

mein problem ist nun das ich gerne mittels MSP Eintellungen am LMX 
machen würde, und das nicht funktioniert.

dies sollte eigentlich funktionieren wenn keine BT verbindung offen ist 
und der MSP einen UART-BREAK schickt dann sollte der LMX doch in den 
CommandMode schalten oder?

und dann kann man mittes LMX-Protokoll CommandBefehle absetzen oder?

ich würde gerne eine Verbindung zurück zum PC aufbauen einfach nur über 
CreateSPPLink mit fixem COMports und BT-Addresse

mein vorgehen:
1.) es ist keine Verbindung offen
2.) senden von einem UART-Break (Code weiter unten beschrieben)
3.) CreateSPPLink Commando 02|52|0A|08|00|64|01|.......|03 senden
4.) Auf Antworten warten (EstablihLinkConfirm, PortStatusChange, 
LinkEstablihedIndicator)
5.) Antworten auswerten
6.) bei erfolg in TransparentMode wechseln
7.) Kommunizieren

Verhalten:
nachdem ich den uart-break gesendet habe ist die BT-Verbindung (sollte 
eine offen gewesen sein nicht mehr erreichbar aber die verbindung bricht 
nicht ab) da so nehme ich an in den CommandMode geschalten wurde?
wenn ich nun ein CreateSPPLink Commando abschicke wird keine antwort vom 
LMX generiert

wenn keine Verbundung besteht und ich einen UART-Break auslöse und 
danach ein CreateSPPLink schicke wird ebenfalls keine antwort vom LMX 
generiert.

mein source für den UART-Break:
void sendUartBreak()
{
  unsigned int i;
  unsigned char c;
  dint(); //interrupts aus
  ME2&= ~UTXEO; //TX interrupt aus
  ME2&= ~URXE0; //RX interrupt aus
  P3SEL&= ~0x30; //TX und RX prots auf IOs
  P3DIR|= 0x10; //TX IO auf ausgang
  P3OUT&= ~0x10; //TX IO auf 0
  for(i=0; i<56535; i++) for(c=0; c<10; c++) //Wait
    WDTCTL=WDTPW+WDTCNTCL; //clear WDT
  initRS232(); //UART wieder initialisieren
}

Wo habe ich einen Fehler gemacht? ich hoffe auf eure antworten

mfg Benedikt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.