PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Bluetooth RN-42 und Mega8 Bascom - senden/empfanden funktioniert nicht



jcrypter
27.02.2015, 08:28
Guten Morgen liebes Forum,

ich versuche einen ATMeg8 mit einem RN-42 http://www.watterott.com/de/Bluetooth-SMD-Module-RN-42 zu koppeln.

Das Modul selbst funktioniert, ich habe es über eine MySmartUSB 2 als UART Brücke an den PC angeschlossen und das funktioniert.
Ich habe die Baudrate per AT-Kommando auf 4800 gesetzt, da ich das Modul dann am ATMega8 ohne Quarz bei 1MHz betreiben kann. Für einen ersten Versuch reicht das.
Die Spannungsverorgung läuft ebenfalls über das MySmartUSB, es sind 3V.

Ich habe ein Bascom Programm geschrieben, dass eine empfangene Zahl um eins erhöht zurückschickt.
Wenn ich den Mega8 direkt über die UART Brücke an den PC anschließe funktioniert das einwandfrei.


Also, das Bascom Programm funktioniert, das Modul alleine funktioniert auch. Nur wenn ich die beiden zusammenschließe funktioniert es nicht.

Das LCD ist nicht angeschlossen, habe momentan nur eins für 5V einsatzbereit.
Anbei das Programm


$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

$baud = 4800

Declare Sub Serial0charmatch()

Config Serialin = Buffered , Size = 30 , Bytematch = 13
Config Serialout = Buffered , Size = 30
Enable Interrupts

Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , _
Db7 = Portb.0 , E = Portb.7 , Rs = Portb.6
Config Lcd = 16 * 1a

Dim Empfangenedaten As Long
Dim Umrechnen As Long
Dim Datenempfangen As Long


Cls
Lcd "start"
Empfangenedaten = 10
Datenempfangen = 0


'als Start der KOmmunikation muss ein Chip die ersten Daten schicken, etwas Wartezeit, um sicher zustellen, das beide Chips laufen
Waitms 1000 ' beim zweiten chip auskommentieren
'Print Empfangenedaten ' beim zweiten chip auskommentieren


Do




If Datenempfangen = 1 Then 'nur wenn Daten empfangen wurden, wird etwas damit getan
Waitms 1000
Cls
Lcd Empfangenedaten 'die Daten werden unverändert auf einem LCD ausgegeben

Umrechnen = Empfangenedaten + 1
Print Umrechnen ' die veränderten Daten werden zurückgeschickt
Lcd Umrechnen

Datenempfangen = 0
Clear Serialin 'der empfangspuffer muss geleert werden
End If

Loop
End


Sub Serial0charmatch()
Local Incoming_data As Long
Input Incoming_data Noecho

Empfangenedaten = Incoming_data
Datenempfangen = 1 'hinweis: es wurden daten empfangen, tue etwas

End Sub


End


ich hoffe einer von euch hat eine Idee!


Crypi

sast
27.02.2015, 12:21
Stimmt denn die Zuordnung TX-RX RX-TX zwischen den Modulen? GND ist auch verbunden?
Ansonsten kann man ja eine LED einschalten lassen, wenn der ATMega8 was empfängt bzw den ATMega8 beim Starten was senden lassen. Vielleicht klappt ja nur einwas nicht. Kenne mich mit Bascom ansonsten aber nicht aus und wenn du sagst, dass es sonst funktioniert, kanns ja nur noch die Verdrahtung sein.

Ansonsten verwende ich das RN42 auch zum Schnüffeln und das funktioniert echt gut.
sast

jcrypter
27.02.2015, 12:37
Ich habe die Verdrahtung zwischen Rx und Tx auch hin und her getauscht. Das ist es nicht.
Die Spannungsversorgung läuft über die gleiche Quelle, damit ist Ground ja verbunden, oder?

Ich dachte, dass vielleicht in Bascom noch irgendwas anders eingestellt werden muss, auch wenn ich mir nicht erklären könnte was das ist.

Kann es sein, dass das Bascom Programm/das BT-Modull mit unterschiedlichen Zeilen-Endzeichen, cr oder was auch immer, arbeitet und es deswegen nicht geht?

Bzgl. nach dem Start etwas senden lassen: ich habe den Mega8 mal testweise alle halbe Sekunde was senden lassen, unabhängig davon ob er was empfängt. Hat nicht funktioniert.
Vielleicht schaffe ich es heute das LCD für 3V fertig zu machen, ansonsten ist das mit den LEDs eine gute Idee.

Muss man dem Bluetooth-Modul vielleicht irgendwie Zeit geben zum Initialisieren bevor man im Programm den UART konfiguriert?

Crypi

sast
27.02.2015, 15:21
Bei mir startet das Ganze mit dem µC. Dem Modul ist dein Endezeichen egal. Das sendet die Zeichen, die du ihm gibst.Wenn das Programm mit einem Max232 oder FTDI funktioniert und du was auf dem Rechner empfängst und senden kannst, dann geht das auch mit dem Bluetoothmodul. Das Einzige, was bei meinem BT Terminal auf dem Windowsphone rumzickt, ist, dass eine Anzeige erst kommt, wenn ein Enter gesendet wird. Da hab mich auch am Anfang mit aufgehalten. Jetzt wo ichs weiß, ist das kein Problem mehr.

Wie gesagt, kenne ich mich mit Bascom nicht aus. Hängt das Programm vielleicht, weil es auf was vom lcd wartet? Irgendeine Anzeige, ob überhaupt was passiert ist da immer hilfreich.

jcrypter
27.02.2015, 15:58
Ich werde es mal mit dem LCD probieren.
Vielleicht finde ich da irgendwas hilfreiches heraus.

Crypi

jcrypter
02.03.2015, 07:54
Guten Morgen,

LCD läuft, der Rest auch.

Letztlich war meine Vermutung zum Teil richtig.
Es stimmte etwas mit dem Endzeichen nicht. Die Terminal-App auf dem Hand war falsch eingestellt. Sie hat kein CR gesendet.
Dass bedeutet, das Programm auf dem Chip hat niemals eine gültige Nachricht erhalten und konnte nie etwas zurücksenden.

Warum meine isolierten Senden-Tests vom Chip zum Handy nicht funktioniert haben weiß ich nicht. Vielleicht in dem Fall tatsächlich die Kabel vertauscht? Ich weiß es nicht.

Abschließend: das Programm und das Modul funktionieren beide richtig.

Danke für deine Hilfe!

Crypi

sast
02.03.2015, 09:17
Schön zu hören.

sast