AVR und BTM-222: Konfiguration

OP Persönliche Seite #3556164
Lesenswert?

Hallo Forum,

ja ich weiß, es gibt auch in diesem Forum viele Threads, die dieses 
Thema behandeln.
Allerdings hat keiner der vorgeschlagenen Lösungsansätze funktioniert.
So, nun zum Problem:

Ich will 2 BTMs miteinander kommunizieren lassen. Also muss ich ja 
mindestens eines konfigurieren(als Master). Allerdings bin ich mir nicht 
ganz sicher, wie ich das BTM ohne einen PC konfigurieren soll(ich habe 
weder eine RS232-Schnittstelle, noch ein USB-Konverterkabel; noch nicht 
mal ein MAX232 oÄ).

Hardware:
ATmega2560@5V (USART1)
BTM-222@3,3V
Pegelwandler
Das BTM hat die folgenden LEitungen belegt:
-beide Vcc(3,3V)
-TX
-RX
-nicht alle GND(ist das ein Problem?)
Die Tx-Leitung vom BTM ist mit der Rx-Leitung vom AVR verbunden(und 
natürlich umgekehrt).

Software:
AVR-Studio 4 + AVR Dragon als Programmer
UART-Lib von Peter Fleury

Hier mein test-Code:
1
static inline void __attribute__((always_inline)) init(void);
2
void __attribute__((noreturn)) loop(void);
3
int main(void);
4

5
int main()
6
{
7
  init();
8
  loop();
9
  return 0;
10
}
11

12
void init()
13
{
14
  usb_init(UART_BAUD_SELECT(19200, F_CPU));//USB-Schnittstelle
15
  uart1_init(UART_BAUD_SELECT(19200, F_CPU));//BTM-222
16
  sei();//enable Interrupt
17
  DDRL=0xFF;//Hier sind LEDs angeschlossen
18
}
19
void loop(void)
20
{
21
  uart1_puts("+++\r");//Command Mode
22
  _delay_ms(2000);
23
  uart1_puts("ATZ0\r");     //Modul-Reset
24
  _delay_ms(4000) ;      //Warten bis Modul gestartet
25
  uart1_puts("ATN=BTM222\r"); //Modul Name
26
  _delay_ms(100);
27
  uart1_puts("ATP0\r"); //Passwort
28
  _delay_ms(100);
29
  
30
  uart1_puts("ATO\r");//Data Mode
31
  PORTL=0xFF;
32
  while(1)
33
  {
34
    //PORTL^(1<<PL1); //LED1
35
    //_delay_ms(100);
36
  }
37
}
Ich bin mir aber nicht sicher, was ich genau machen muss. DAss Dtasheet 
schweigt sich was das Timing angeht aus :(
Muss ich die Sequenz "+++" am Anfang senden? Ich habe beide Meinungen 
gehört.
Muss ein zeitlicher Abstand zwischen den Zeichen erfolgen?
In dem oben gezeigten Code-Abschnitt versuche ich den Namen zu ändern 
und das Password auszuschalten. Beides funktioniert nicht. Es wird an 
meinem Handy als "Serial Adaptor" gelistet, und über die Standart-Pin 
kann ich auch mich verbinden.
Deshalb gehe ich davon aus, dass die Befehle gar nicht ankommen.

Wenn mir jemand helfen könnte, wäre ich sehr dankbar.
mfG
N.G.

PS: ich habe ein RNmega2560 auf dem bereits eine USB-Buchse integriert 
ist, von der aus kann ich mit dem PC kommunizieren. Das klappt auch 
größtenteils, aber nicht immer(teils mit großen Verzögerungen von 
~1min).
Gast #3556205
Lesenswert?

Mit +++ welchselst du bei bestehender Verbindung in den Befehlsmodus. 
Solange keine Verbindung besteht, ist es nicht nötig. Schadet jedenfalls 
nicht.

Nach jeden Befehl musst du warten, das Modul nimmt den nächsten Befehl 
erst an, wenn der vorherige abgearbeitet wurde. Wie lange, musst du 
ausprobieren. Oder du wartest die Antwort (OK bzw ERROR) ab.

Das Handy zeigt möglicherweise Serial Adapter an, weil es ein serieller 
Adapter ist. Kann gut sein, dass der Name vom Treiber kommt.

100ms ist ziemlich wenig. Ich würde mindestens eine Sekunde versuchen.

Du solltest einen Weg finden, die Antworten des Moduls anzuzeigen. SOnst 
ist das alles nur blindes Raten.
OP Persönliche Seite #3556245
Lesenswert?

stefanus schrieb:
> Du solltest einen Weg finden, die Antworten des Moduls anzuzeigen. SOnst
> ist das alles nur blindes Raten.

Es kommt immer 256 zurück. Mit anderen Worten - nichts.
Wenn ich es mit einer while() versuche hängt er endlos darin(getestet 
mithilfe von LEDs).

Ich habe auch schon nachgemessen, am Rx vom BTM-222 liegen 3V3 an. Der 
Tx Pin gibt entweder gar kein Signal aus, oder es ist zu kurz für mein 
betagtes Multimeter - habe leider kein Oszi.

Aber schon mal danke für deine Antwort
OP Persönliche Seite #3558002
Lesenswert?

L. P. schrieb:
> Rx Tx auch bestimmt nicht vertauscht?

Also ich habe Rx vom BTM mit Tx vom AVR verbunden. Ist das richtig? 
Könnte mir auch vorstellen, dass die Pins gegenteilig beschriftet 
wurden.

L. P. schrieb:
> Bist du dir sicher, dass das BTM222 auf 19200Baud default lauscht?

Ja, steht zumindest so im Datenblatt. Habe an einer Stelle(in einem 
anderen Forum) ein einziges Mal etwas von 9600Baud gehört. Habe 
natürlich auch nichts daran geändert. Wie denn auch? ;)
Gast #3558404
Lesenswert?

Ich würde an deiner Stelle mal die Pinbelegung prüfen.
Eventuell mal mit einem Oszi oder Logic-Analyzer beide Leitungen messen 
und die Ist-Baudrate bestimmen.
Vielleicht hast du ja ein Problem mit der Baudrate (falsch 
initialisiert).

Reset-Leitung richtig beschaltet?

lg
OP Persönliche Seite #3558558
Lesenswert?

mopro schrieb:
> Reset-Leitung richtig beschaltet?

Welche RESET-Leitung? Die vom AVR? Oder hat das BTM eine?

Habe leider kein Oszi zur Verfügung, das einzige an das ich rankommen 
könte steht bei uns in der Schule im Physiksaal. Aber ich hab grad 
Ferien.

mopro schrieb:
> Vielleicht hast du ja ein Problem mit der Baudrate (falsch
> initialisiert).

Glaube ich nicht, es ist ja die viel genutzte uart-Lib von Fleury

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren