GPS-ATmega8-SD
GPS-ATmega8-SD
Приветствую всех кто заинтересовался. Есть большое желание сделать логгер на AVR (в наличии есть мега8, но в дальнейшем подумываю о tiny). У меги8 задействовать USART и SPI на первый подключить GPS модуль, а на второй SD карточку. Все что шлет GPS в USART (протокол NMEA) писать в файл например log.txt на карту памяти в системе Fat32. Немного програмирую на С, в CVAVR. Нашел опиисание и иисходник на С (на финском языке автора Jussi Saarijoki) логгер на мега128 с кнопочками и LCD диисплеем. Насколько понимаю написан в WinAVR. Вопрос к опытным програмистам (я больше по железу электронщик, в програмировании новичек) можно ли перенести код в CVAVR и если да то как. Для начала хотел бы выкинуть из имеющегося кода обслуживание LCD дисплея и кнопок, не обрабатывать получаемые данные, а как есть в формате NMEA отправлять в накопитель.
- Вложения
-
- GPS.c
- исходный код Jussi Saarijoki с переводом части коментариев с финского на русский
- (9.48 КБ) 1039 скачиваний
-
- GPS-ATmega8-microSD.JPG
- схема GPS логгера
- (67.44 КБ) 1135 скачиваний
Последний раз редактировалось gwiktor Вс янв 24, 2010 17:50:21, всего редактировалось 1 раз.
- Реклама
Re: GPS-ATmega8-SD
Доброго времени суток! Тема весьма интересная и актуальная!gwiktor писал(а):Приветствую всех кто заинтересовался. Есть большое желание сделать логгер на AVR (в наличии есть мега8, но в дальнейшем подумываю о tiny). У меги8 задействовать USART и SPI на первый подключить GPS модуль, а на второй SD карточку. Все что шлет GPS в USART (протокол NMEA) писать в файл например log.txt на карту памяти в системе Fat32.
Эхолот+GPS по пртоколу NMEA на карту памяти и все это сливать в ози-экплорер!
Для рыбаков водомоторников возможность создавать свою лоцию
Заказал GPS модуль в столице, но пока ожидаю, для отработки можно использовать симулятор GPS Simulator v3.3.1 если кому нужен вышлю на почту. Цель не столько повторить на другом камне сколько понять и научиться сохранять данные в файл на SD например с АЦП. Почему интерес к GPS просто люблю турпоходы, хочется собрать миниатюрное и экономичное в энергопотреблении и по цене устройство. Модуль с антенной на сайтах нахожу в пределах 1-1.5 т.р.
Нужна помошь в коде, не могу найти некоторые include описанные в коде, с WinAVR не работал.
Есть кому интересно проект в баскоме тоже мега128, но тоже с ним не работал можно ли его адаптировать под мегу8, просто С мне ближе.
Нужна помошь в коде, не могу найти некоторые include описанные в коде, с WinAVR не работал.
Есть кому интересно проект в баскоме тоже мега128, но тоже с ним не работал можно ли его адаптировать под мегу8, просто С мне ближе.
- HeoH
- Открыл глаза
- Сообщения: 75
- Зарегистрирован: Пт июл 20, 2007 12:49:45
- Откуда: Novosibirsk
- Контактная информация:
Если экономичное по энергопотреблению, то msp430 лучше будет. если вопрос по цене и времени, то делай на атмеле - он сейчас в любом киоске продается. у техаса, с другой стороны, можно ввиде семплов много чего заказать.gwiktor писал(а):хочется собрать миниатюрное и экономичное в энергопотреблении и по цене устройство. Модуль с антенной на сайтах нахожу в пределах 1-1.5 т.р.
Нужна помошь в коде, не могу найти некоторые include описанные в коде, с WinAVR не работал.
Есть кому интересно проект в баскоме тоже мега128, но тоже с ним не работал можно ли его адаптировать под мегу8, просто С мне ближе.
ps. делал гпс (navis) + мега128 - не логгер, просто "показывалку"...интересовал исключительно глонасс...поигрался и нах выкинул их 1,5Вт приемничек...у них(navis) кстати анонсировали в первой половине 2010 новый чипчик с 150мВт потребления...прикупить что ли..
<o> ёшкин кот
- Реклама
-
Saadov
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Вт авг 19, 2008 23:39:59
- Откуда: г.Смоленск
Уважаемый gwiktor, в CVAVR 2.04.4 есть портированная библиотека Елма Чана, для работы с FAT, стоит почитать HELP к компилятору, там много инфо. Так же очень будет вам полезно
http://instruct1.cit.cornell.edu/course ... index.html
http://instruct1.cit.cornell.edu/course ... /index.htm
http://instruct1.cit.cornell.edu/course ... /index.htm
http://instruct1.cit.cornell.edu/course ... index.html
http://instruct1.cit.cornell.edu/course ... index.html
http://instruct1.cit.cornell.edu/course ... /index.htm
http://instruct1.cit.cornell.edu/course ... /index.htm
http://instruct1.cit.cornell.edu/course ... index.html
Подскажите что делать с функцией
DWORD get_fattime (void);
// 31-25: Year(0-127 org.1980),
// 24-21: Month(1-12),
// 20-16: Day(1-31) 15-11: Hour(0-23),
// 10-5: Minute(0-59), 4-0: Second(0-29 *2)
если у меня нет часов и где найти #include "rtc.h"
как быть? Я хочу открыть файл или создать новый перейти в конец и писать форматированные строки
disk_initialize(0);
f_mount(0, &fatfs);
f_open(&file1, "log.txt", (FA_OPEN_ALWAYS|FA_READ|FA_WRITE));
f_lseek(&file1,file1.fsize);
f_printf (&file1,"<test>");
f_close(&file1);
выдает ошибку
Linker error: ...\inc\ff.h(460): function 'get_fattime' declared, but never defined
DWORD get_fattime (void);
// 31-25: Year(0-127 org.1980),
// 24-21: Month(1-12),
// 20-16: Day(1-31) 15-11: Hour(0-23),
// 10-5: Minute(0-59), 4-0: Second(0-29 *2)
если у меня нет часов и где найти #include "rtc.h"
как быть? Я хочу открыть файл или создать новый перейти в конец и писать форматированные строки
disk_initialize(0);
f_mount(0, &fatfs);
f_open(&file1, "log.txt", (FA_OPEN_ALWAYS|FA_READ|FA_WRITE));
f_lseek(&file1,file1.fsize);
f_printf (&file1,"<test>");
f_close(&file1);
выдает ошибку
Linker error: ...\inc\ff.h(460): function 'get_fattime' declared, but never defined
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
gwiktor, Это из примера CVAVR ?
examples\SD Card Monitor
Если нет часов, а в примере это pcf8563 организуйте подсчет времени другим способом (например сам МК его считает), а функции чтении времени назовите как в примере rtc_get_time... и т.д. по тексту.
И тогда код править сильно не нужно.
Можно вообще для испытания подсчет времени не вести но функции чтения времени должны возвращать какое то значение.
Пример: если А локальная переменная то
B=A;
вызовет ошибку т.к. значение А еще не определено и присвоить В значение "мусор" компилятор не даст.
examples\SD Card Monitor
Если нет часов, а в примере это pcf8563 организуйте подсчет времени другим способом (например сам МК его считает), а функции чтении времени назовите как в примере rtc_get_time... и т.д. по тексту.
И тогда код править сильно не нужно.
Можно вообще для испытания подсчет времени не вести но функции чтения времени должны возвращать какое то значение.
Пример: если А локальная переменная то
B=A;
вызовет ошибку т.к. значение А еще не определено и присвоить В значение "мусор" компилятор не даст.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
-
igorkov
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Вт дек 05, 2006 11:49:08
- Контактная информация:
По-моему у Elm-chan-а идеально подходит под описание и все готово:
http://elm-chan.org/works/glg/report_e.html
http://elm-chan.org/works/glg2/report_e.html
К тому же описана техника просмотра маршрута на Google Maps.
Исходники правда на GCC.
http://elm-chan.org/works/glg/report_e.html
http://elm-chan.org/works/glg2/report_e.html
К тому же описана техника просмотра маршрута на Google Maps.
Исходники правда на GCC.
Спасибо Danko, вставил пока
DWORD get_fattime () { return 0; }
после компиляции минимального кода для теста программы
void main (void)
{
FATFS fatfs;
FIL file1 ;
disk_initialize(0);
f_mount(0, &fatfs);
f_open(&file1, "log.txt", (FA_OPEN_ALWAYS|FA_READ|FA_WRITE));
f_close(&file1);
}
получаю размер кода 9.8 Кбайт, что не помещается в память меги8.
Без f_open проходит но это не годится, либо нужно на 32 мегу переходить (а у меня ее нет), либо пытаться кромсать эти функции (как пока не знаю), либо использовать Petit FatFs чана но как я понимаю создавать новый файл не может. В принципи можно создать в корневом каталоге SD файл и в него дописывать данные контроллером. функции тогда принимают следующий вид
disk_initialize();
pf_mount(&fs);
pf_open("log.txt"); //открыть существующий файл
pf_lseek(0); //перейти в начало
pf_write(buff,16,&N); //записать массив из 16 чисел
pf_write(0, 0, &N); //закончить запись
но почему-то выдает ошибки на функции в diskio.c
DWORD get_fattime () { return 0; }
после компиляции минимального кода для теста программы
void main (void)
{
FATFS fatfs;
FIL file1 ;
disk_initialize(0);
f_mount(0, &fatfs);
f_open(&file1, "log.txt", (FA_OPEN_ALWAYS|FA_READ|FA_WRITE));
f_close(&file1);
}
получаю размер кода 9.8 Кбайт, что не помещается в память меги8.
Без f_open проходит но это не годится, либо нужно на 32 мегу переходить (а у меня ее нет), либо пытаться кромсать эти функции (как пока не знаю), либо использовать Petit FatFs чана но как я понимаю создавать новый файл не может. В принципи можно создать в корневом каталоге SD файл и в него дописывать данные контроллером. функции тогда принимают следующий вид
disk_initialize();
pf_mount(&fs);
pf_open("log.txt"); //открыть существующий файл
pf_lseek(0); //перейти в начало
pf_write(buff,16,&N); //записать массив из 16 чисел
pf_write(0, 0, &N); //закончить запись
но почему-то выдает ошибки на функции в diskio.c
Последний раз редактировалось gwiktor Пн фев 01, 2010 11:10:50, всего редактировалось 1 раз.


