Mnemonic82
22.05.2010, 13:59
Hi...
Bin gerade dabei mithilfe des rncontrol1.4 das empfangene DCF-Signal einer FUM-DCF von HKW Elektronik aus einem LCD auszugeben. Die Ansteuerung des LCD´s funktioniert einwandfrei. Wenn ich aber versuche über den USART das Zeitsignal einzulesen sind auf dem LCD nur zwei schwarze Baken zu sehn.
Das Display ist ein 16x4, wie gesagt mit nem anderen Programm funzt die Anzeige perfekt.
Die USART Einstellungen sollten wie folgt sein:
300 Baud
7 Datenbits
gerade Parität
2 Stoppbits
Hier mal der Teil des Codes wo ich versuche das Signal einzulesen:
#include <avr/io.h>
#include <inttypes.h>
#include "lcd.h"
// Sollte schon im Makefile definiert sein.
// In dem Fall hier einfach löschen.
//#define F_CPU 16000000UL
#define BAUD 300UL
#define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1)
// USART initialisieren
void uart_init(void)
{
// Baudrate einstellen (Normaler Modus)
UBRRH = (uint8_t) (UBRR_BAUD>>8);
UBRRL = (uint8_t) (UBRR_BAUD & 0x0ff);
// Aktivieren von receiver
UCSRB = (1<<RXEN);
// Einstellen des Datenformats:
UCSRC = (1<<URSEL)|(1<<UPM1)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
}
int main(void)
{
uint16_t buffer;
// USART initialisieren
uart_init();
while (1)
{
// Warten bis Daten empfangen wurden
while ( !(UCSRA & (1<<RXC)) )
// Empfangsregister auslesen
buffer = UDR;
while(1)
{
//lcd initialisieren
lcd_init();
//Buffer auf dem lcd ausfegeb
sprintf( buffer,"Time: %02d,UDR");
set_cursor(1,1);
lcd_string(UDR);
}
}
}
Wird wohl an dem String liegen den das Modul rausgibt...
Würde mich über Tipps und Hinweise freuen
Gruss Mnemonic
Bin gerade dabei mithilfe des rncontrol1.4 das empfangene DCF-Signal einer FUM-DCF von HKW Elektronik aus einem LCD auszugeben. Die Ansteuerung des LCD´s funktioniert einwandfrei. Wenn ich aber versuche über den USART das Zeitsignal einzulesen sind auf dem LCD nur zwei schwarze Baken zu sehn.
Das Display ist ein 16x4, wie gesagt mit nem anderen Programm funzt die Anzeige perfekt.
Die USART Einstellungen sollten wie folgt sein:
300 Baud
7 Datenbits
gerade Parität
2 Stoppbits
Hier mal der Teil des Codes wo ich versuche das Signal einzulesen:
#include <avr/io.h>
#include <inttypes.h>
#include "lcd.h"
// Sollte schon im Makefile definiert sein.
// In dem Fall hier einfach löschen.
//#define F_CPU 16000000UL
#define BAUD 300UL
#define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1)
// USART initialisieren
void uart_init(void)
{
// Baudrate einstellen (Normaler Modus)
UBRRH = (uint8_t) (UBRR_BAUD>>8);
UBRRL = (uint8_t) (UBRR_BAUD & 0x0ff);
// Aktivieren von receiver
UCSRB = (1<<RXEN);
// Einstellen des Datenformats:
UCSRC = (1<<URSEL)|(1<<UPM1)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
}
int main(void)
{
uint16_t buffer;
// USART initialisieren
uart_init();
while (1)
{
// Warten bis Daten empfangen wurden
while ( !(UCSRA & (1<<RXC)) )
// Empfangsregister auslesen
buffer = UDR;
while(1)
{
//lcd initialisieren
lcd_init();
//Buffer auf dem lcd ausfegeb
sprintf( buffer,"Time: %02d,UDR");
set_cursor(1,1);
lcd_string(UDR);
}
}
}
Wird wohl an dem String liegen den das Modul rausgibt...
Würde mich über Tipps und Hinweise freuen
Gruss Mnemonic