Hi @ all
Ich wollte ein Bluetoothmodul mit der Uart-Schnittstelle eines Atmega8 (3686400Hz Quarz) ansteuern. Habe es allerdings nicht geschafft. Ich finde den Fehler nicht. In diesem Programmcode versuche ich wenigstens das Bluetoothmodul mittels Handy zu finden. Ich wollte den Programmcode so einfach wie möglich machen ( da ich noch Anfänger bin im uC programmieren).
Hier mal der Code:
| Code : |
---------------------------------------------------------------------
#include "Headerfiles.h"
#include <AVR/io.h> //Definition der Ports
#include <stdlib.h>
#include <util/delay.h>
#define F_CPU 3686400L
#define BAUD 9600L
#define UBRR_VAL ((3686400*8)/(BAUD*16)-1)
char *ZText;
char Text1[]=" VRF ""�"; //Begruessungstext 1. Zeile
char Text2[]=" Diplomarbeit ""�"; //Begruessungstext 2. Zeile
// Ein Zeilenumbruch, abhängig davon, was die Gegenstelle haben will
// Windows: "rn"
// Linux : "n"
// MacOS : "r"
#define CR "rn"
char text[] = "Hallo Welt." CR;
int main()
{
for(;;)
{
/*Initialisierung der Ports 0 = Eingabe, 1 = Ausgabe*/
DDRD=0xff; //PortD als Aussgabe für LCD
DDRC=0xff; //PortC Bit 1-4 als Eingabe, 5-6 als Ausgabe
//Intialisierung UART
UCSRB |= (1<<TXEN);
UCSRC |= (1<<URSEL) | (3<<UCSZ0);
UBRRH = UBRR_VAL >>8;
UBRRL = UBRR_VAL & 0xFF;
int uart_putc (unsigned char c)
{
while(!(UCSRA & (1<<UDRE)))
{
}
UDR = c;
return 0;
}
void uart_puts (char *s)
{
while (*s)
{
uart_putc (*s);
s++;
}
}
int i;
uart_puts ("at" CR);
for (i=0; i<= 30;i++)
{
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
}
uart_puts ("at+btscan" CR);
for(i=0;i<=30;i++)
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
}
}
---------------------------------------------------------------------
|
|
Anbei das Datenblatt des Bluetoothmodul. Auf den letzten Seiten sind die Befehle aufgelistet.
Mfg
Rambodischien
[ Diese Nachricht wurde geändert von: Rambodischien am 25 Nov 2007 16:38 ]