Страница 1 из 1
GPS-ATmega8-SD
Добавлено: Вс янв 24, 2010 17:29:53
gwiktor
Приветствую всех кто заинтересовался. Есть большое желание сделать логгер на AVR (в наличии есть мега8, но в дальнейшем подумываю о tiny). У меги8 задействовать USART и SPI на первый подключить GPS модуль, а на второй SD карточку. Все что шлет GPS в USART (протокол NMEA) писать в файл например log.txt на карту памяти в системе Fat32. Немного програмирую на С, в CVAVR. Нашел опиисание и иисходник на С (на финском языке автора Jussi Saarijoki) логгер на мега128 с кнопочками и LCD диисплеем. Насколько понимаю написан в WinAVR. Вопрос к опытным програмистам (я больше по железу электронщик, в програмировании новичек) можно ли перенести код в CVAVR и если да то как. Для начала хотел бы выкинуть из имеющегося кода обслуживание LCD дисплея и кнопок, не обрабатывать получаемые данные, а как есть в формате NMEA отправлять в накопитель.
Добавлено: Вс янв 24, 2010 17:39:44
foxit
Какой GPS?
Re: GPS-ATmega8-SD
Добавлено: Вс янв 24, 2010 17:49:17
killboss
gwiktor писал(а):Приветствую всех кто заинтересовался. Есть большое желание сделать логгер на AVR (в наличии есть мега8, но в дальнейшем подумываю о tiny). У меги8 задействовать USART и SPI на первый подключить GPS модуль, а на второй SD карточку. Все что шлет GPS в USART (протокол NMEA) писать в файл например log.txt на карту памяти в системе Fat32.
Доброго времени суток! Тема весьма интересная и актуальная!
Эхолот+GPS по пртоколу NMEA на карту памяти и все это сливать в ози-экплорер!
Для рыбаков водомоторников возможность создавать свою лоцию

Добавлено: Вс янв 24, 2010 18:16:59
gwiktor
Заказал GPS модуль в столице, но пока ожидаю, для отработки можно использовать симулятор GPS Simulator v3.3.1 если кому нужен вышлю на почту. Цель не столько повторить на другом камне сколько понять и научиться сохранять данные в файл на SD например с АЦП. Почему интерес к GPS просто люблю турпоходы, хочется собрать миниатюрное и экономичное в энергопотреблении и по цене устройство. Модуль с антенной на сайтах нахожу в пределах 1-1.5 т.р.
Нужна помошь в коде, не могу найти некоторые include описанные в коде, с WinAVR не работал.
Есть кому интересно проект в баскоме тоже мега128, но тоже с ним не работал можно ли его адаптировать под мегу8, просто С мне ближе.
Добавлено: Пн янв 25, 2010 00:27:48
HeoH
gwiktor писал(а):хочется собрать миниатюрное и экономичное в энергопотреблении и по цене устройство. Модуль с антенной на сайтах нахожу в пределах 1-1.5 т.р.
Нужна помошь в коде, не могу найти некоторые include описанные в коде, с WinAVR не работал.
Есть кому интересно проект в баскоме тоже мега128, но тоже с ним не работал можно ли его адаптировать под мегу8, просто С мне ближе.
Если экономичное по энергопотреблению, то msp430 лучше будет. если вопрос по цене и времени, то делай на атмеле - он сейчас в любом киоске продается. у техаса, с другой стороны, можно ввиде семплов много чего заказать.
ps. делал гпс (navis) + мега128 - не логгер, просто "показывалку"...интересовал исключительно глонасс...поигрался и нах выкинул их 1,5Вт приемничек...у них(navis) кстати анонсировали в первой половине 2010 новый чипчик с 150мВт потребления...прикупить что ли..
Добавлено: Пн янв 25, 2010 21:04:17
Saadov
Добавлено: Пт янв 29, 2010 13:09:41
gwiktor
Подскажите что делать с функцией
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
Добавлено: Пт янв 29, 2010 19:35:13
Danko
gwiktor, Это из примера CVAVR ?
examples\SD Card Monitor
Если нет часов, а в примере это pcf8563 организуйте подсчет времени другим способом (например сам МК его считает), а функции чтении времени назовите как в примере rtc_get_time... и т.д. по тексту.
И тогда код править сильно не нужно.
Можно вообще для испытания подсчет времени не вести но функции чтения времени должны возвращать какое то значение.
Пример: если А локальная переменная то
B=A;
вызовет ошибку т.к. значение А еще не определено и присвоить В значение "мусор" компилятор не даст.
Добавлено: Пт янв 29, 2010 22:52:25
igorkov
По-моему у Elm-chan-а идеально подходит под описание и все готово:
http://elm-chan.org/works/glg/report_e.html
http://elm-chan.org/works/glg2/report_e.html
К тому же описана техника просмотра маршрута на Google Maps.
Исходники правда на GCC.
Добавлено: Вс янв 31, 2010 12:03:10
gwiktor
Спасибо 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
Добавлено: Вс янв 31, 2010 12:13:33
gwiktor
Да igorkov эти ссылки у меня есть, но я бы хотел сделать логгер (не обязательно GPS) данных например поступающих с АЦП или температурного DS18B20. Примеры что мне попадались написаны скорее всего в WinAVR, а я пытаюсь на CV т.к. хоть немного в нем разобрался. Все равно за ссылки спасибо.