Witam.
W moim urządzeniu atmega328 odbiera poprzez sprzętowy Uart ramki danych z odbiornika gps. Problem w tym że robi to jak chce.
Dobrze odebrana ramka powinna wyglądać tak:
A mi procesor odbiera różnie te ramki. Poniżej przykład:
Odbiornik podłączony do hyper terminala wysyła idealne ramki cały czas więc z tej strony nie ma problemu.
Problemem jest pewnie program:
Program ma tak działać by po odebraniu ramki danych zapisać ją na kartę SD.
Program tak jakby w nieodpowiednim miejscu wychodzi z warunkowej pętli ale przecież znak "*" jest zawsze w końcówce ramki i dopiero tam powinno zakończyć się odbieranie z Uartu.
Uart pracuje z prędkością 4800 bodów a mega pracuje z kwarcem 7,3728MHz co powinno wyeliminować wszelkie błędy w transmisji.
W moim urządzeniu atmega328 odbiera poprzez sprzętowy Uart ramki danych z odbiornika gps. Problem w tym że robi to jak chce.
Dobrze odebrana ramka powinna wyglądać tak:
$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4EA mi procesor odbiera różnie te ramki. Poniżej przykład:
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*"
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*"
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,"
$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,*33
$GPVTG,,T,,M,,N,,K*"
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,"
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,*32
$GPVTG,,T,,M,,N,,K*"
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,"
"$GPGGA,235948.000,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*3A
$GPVTG,,T,,M,,N,,K*4E
$GPGGA,*3A
$GPVTG,,T,,M,,N,,K*"Odbiornik podłączony do hyper terminala wysyła idealne ramki cały czas więc z tej strony nie ma problemu.
Problemem jest pewnie program:
Kod: text
Program ma tak działać by po odebraniu ramki danych zapisać ją na kartę SD.
Program tak jakby w nieodpowiednim miejscu wychodzi z warunkowej pętli ale przecież znak "*" jest zawsze w końcówce ramki i dopiero tam powinno zakończyć się odbieranie z Uartu.
Uart pracuje z prędkością 4800 bodów a mega pracuje z kwarcem 7,3728MHz co powinno wyeliminować wszelkie błędy w transmisji.