UART-Problem mit FleuryLib

OP #1750064
Lesenswert?

Moin Moin,

Ich hab ein seltsames Problem und weiss nicht mehr weiter:


Ich habe hier ein GPS Modul (EM-411). Dieses ist so programmiert, dass 
es nur noch die $GPGGA Zeile mit nem 4800er Baud sendet.
Nun habe ich ein ATmega16 mit einem LCD, um das ganze auszuwerten.

Ich benutzte sowohl für das LCD als auch für den UART die orginalen 
Peter Fleury librarys.


Nun zu meinem Problem:
Alles funktioniert so lange, bis ich die uart_init(); Zeile 
auskommentiert lasse. Sobald ich diese Zeile jedoch wieder hineinnehme, 
erscheint auf dem LCD nur noch "Bereit". Die LED in der While wird auch 
nicht getoggelt...

Es liegt eindeutig an der uart_init(). Wenn ich die uart_getc(); 
rausnehme, ist nähmlich das selbe Problem noch da.
Mit dem Oszi konnte ich feststellen, dass die Daten vom GPS-Modul 
richtig am RxD Pin des Mega16 ankommen. Es liegt auch nicht an einem 
falschen Baud, da ich mit einer USB<-->UART Brigde die Daten korrekt 
mitlesen kann.
Der Pin ist so auch "alleinstehend". Es ist sonst nichts an dem Pin 
angeschlossen.

Hier die main.c
1
#include <avr/io.h>
2
#include <string.h>
3
#include <avr/interrupt.h>
4
#include <util/delay.h>
5
#include "lcd.h"
6
#include "uart.h"
7

8
#ifndef F_CPU
9
#define F_CPU 16000000
10
#endif
11

12
#define UART_BAUD_RATE      4800        //Baud = 4800
13

14
int main(void)
15
{
16
  DDRD = 0x08;          //PD3 ausgang
17
  unsigned char c;
18

19
  //uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));    //Wenn dabei, hängts    wenn nichtdabei, alles ok
20
  sei();
21
  lcd_init(LCD_DISP_ON);
22

23
  lcd_clrscr();
24
  lcd_home();
25
  lcd_puts("Bereit");        // I am rdy
26
  _delay_ms(500);
27

28

29
  while(1)
30
  {  
31
    c = uart_getc();
32

33
    PORTD ^= (1<<PD3);      //Toggle als test
34

35
    lcd_clrscr();
36
    lcd_home();
37
    lcd_puts("Tetris");      //einfach was als Test
38
    _delay_ms(300); 
39
  }
40
}



Hat jemand eine Idee??

Greez Jey
OP #1750095
Lesenswert?

Ich verstehe nicht, was es da zu ändern gibt. Das ist ja die standart 
Library von Peter, da gibt es nichts zu ändern. Bisher ging das super...

btw: ich habe die selbe Hardware vor ca 4 Monaten schon benutzt, jedoch 
mit einem anderen GPS Modul (EM-401). Dort ging alles wunderbar


greez Jey
Gast #1750101
Lesenswert?

Jey Bee schrieb:
> Ich verstehe nicht, was es da zu ändern gibt. Das ist ja die standart
> Library von Peter, da gibt es nichts zu ändern. Bisher ging das super...

Ok, du hast da nichts geändert, aber der Vollständigkeit halber, ein 
Zitat von Pete Fleuys Seite:

"The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define the 
size of the circular buffers in bytes. Note that these constants must be 
a power of 2. You may need to adapt this constants to your target and 
your application by adding CDEFS += -DUART_RX_BUFFER_SIZE=nn 
-DUART_RX_BUFFER_SIZE=nn to your Makefile."

Also, man kann schon was ändern und manche machen das sogar! ;)

Wenn du wirklich nur das GPS-Modul getauscht hast, dann bleibt ja nicht 
viel als dort nochmal genauer hinzuschauen. Wenn du den Atmega16 
getauscht hättest, wäre mein Tipp auch die Fuses nochmal gegenzuchecken 
(z.B. DIV8, JTAG, etc.)

- gerd

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