CodeVisionAVR и Petit FatFs в Atmega8

Обсуждаем контроллеры компании Atmel.
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

помогите найти в чем проблема
хочу прочитать данные из файла на флэшке код такой

#include "pff.h"
#include "diskio.h"

FATFS fs;; //FATFS объявление объекта FATFS
BYTE buff[5]; //FATFS буфер для чтения файла

void main(void)
{

FRESULT res; //FATFS переменная для возвращаемых значений
WORD br; //FATFS счетчик прочитанных байт

//монтируем диск и открываем файл
res = pf_mount(&fs);
if (res==0x00) {led (5); delay_ms(1000);};
res = pf_open("000.txt");
if (res==0x00) {led (4); delay_ms(1000);};
res = pf_lseek(0); //Установим курсор чтения на 0 в файле
if (res==0x00) {led (3); delay_ms(1000);};
//читаем 5 байт из файла
res = pf_read(buff, 5, &br);
if(res == FR_OK){
//если прочитали меньше 5, значит достигли конца файла
if (br != 5){
led (2); delay_ms(500);
}
}
res = pf_mount(0x00); //Демонтируем FAT
if (res==0x00) {led (1); delay_ms(1000);};

//=====

при попытке скомпилировать получаю
Linker error: S:\_ЭЛЕКТРОПРОЭКТ_\pff.h(137): function 'pf_mount' declared, but never defined
Linker error: S:\_ЭЛЕКТРОПРОЭКТ_\pff.h(138): function 'pf_open' declared, but never defined
Linker error: S:\_ЭЛЕКТРОПРОЭКТ_\pff.h(139): function 'pf_read' declared, but never defined
Linker error: S:\_ЭЛЕКТРОПРОЭКТ_\pff.h(141): function 'pf_lseek' declared, but never defined

в pff.h есть строки
/* Petit FatFs module application interface */

FRESULT pf_mount (FATFS*); /* Mount/Unmount a logical drive */
FRESULT pf_open (const char*); /* Open a file */
FRESULT pf_read (void*, WORD, WORD*); /* Read data from the open file */
FRESULT pf_lseek (DWORD); /* Move file pointer of the open file */

может в pff.h что настроить прописать нужно (пишет же что функция обозвана а нету ее)??? четвертый день уже играюсь, в си программирую всего месяц заранее спасибо
Реклама
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение ИС-пытатель »

А че тут не понятного? Вам компилятор все написал. Вбейте в переводчик, если с английским плохо. Вы подключили библиотеку. В ней объявлена данная функция (скорее всего прототип), но сама функция нигде в ней не расписана. Значит Вам надо либо еще какую-то библиотеку подключить, без которой не работает Ваша, либо найти в интернете рабочую библиотеку.
Реклама
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

так вроде и библиотеку у чена на оф сайте взял и там вроде нигде не написано что функции расписывать надо, тока используйте так и так, и у других исходники смотрю только то же что и у меня, вернее у меня все как там один в один,
в pff.h есть Petit FatFs Configuration Options там еденички протавил какие функции использовать буду не не компилируется проэкт
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение a_skr »

Файл pff.c к проекту не подключили.
Реклама
Эиком - электронные компоненты и радиодетали
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

пробую
вставляю вместо #include "pff.h" код #include "pff.c" (хотя я и так и так пробовал просто в pff.c есть ссылка на pff.h)
получаю
Linker error: S:\_ЭЛЕКТРОПРОЭКТ_\diskio.h(26): function 'disk_initialize' declared, but never defined
Linker error: S:\_ЭЛЕКТРОПРОЭКТ_\diskio.h(27): function 'disk_readp' declared, but never defined

пишу у себя еще

res = disk_initialize ();
if (res==0x00) {led (6); delay_ms(1000);};

результат тот же

изучая чужие исходники краем глаза вижу в папке файл mmc.c а у меня его нету, может в нем все дело, смотрю другой проект там он тоже есть но он отличается, там пины можно выбрать
и вот тут я запутался как и где сделать этот файл есть какая нить инфа по этому поводу

цепляю и его из папки семплов от чана просто на шару а в нем есть
#include "suart.h"
который дает ошибку
Error: S:\_ЭЛЕКТРОПРОЭКТ_\suart.h(4), #included from: mmc.c: declaration syntax error
строка
void xmit(uint8_t);
помогите здесь я вообще потерялся
немогу у чена найти как сделать mmc.c под себя, подскажите куда рыть
Реклама
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

Для начала скомпилируйте avr_foolproof
Чан пишет для аvr-gcc
У меня нормально собирается (WinAVR 20100110) аvr-gcc 4.3.3 для Атмега16
(минимальные требования для этого примера проц FLASH 16кб, 1кб RAM.)

В "макефиле" видно, что используются файлы ff.c sdmm.c
в "маин" include "ff.h"


Возможно и "кодевизон" сможет подключите еще sdmm.c
Реклама
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

что такое avr_foolproof???
у чена в семплах нет sdmm.c где можно взять???

нашол у когото в проэкте mmc.c внутри есть заголовок
PFF - Low level disk control module for ATmega32

пытаюсь его перекрутить под себя компилятор просит с меня перемееные

Error: S:\_ЭЛЕКТРОПРОЭКТ_\mmc.c(36), #included from: СТАНОК.c: undefined symbol '_BV'
Error: S:\_ЭЛЕКТРОПРОЭКТ_\mmc.c(198), #included from: СТАНОК.c: undefined symbol 'lba'
Error: S:\_ЭЛЕКТРОПРОЭКТ_\mmc.c(210), #included from: СТАНОК.c: undefined symbol 'ofs'
Error: S:\_ЭЛЕКТРОПРОЭКТ_\mmc.c(221), #included from: СТАНОК.c: undefined symbol 'cnt'

немогу найти где они назначаются
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

Я пример привел для FatFs пример из FatFs sample projects .
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

Для Petit FAT
в макефиле pff.c mmc.c
в маин #include <string.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "diskio.h"
#include "pff.h"
#include "xitoa.h"
#include "suart.h"
Пример Sample projects папка AVR
(Правда для атмега8 он не компилируется)

Ваш код ближе всего к примеру из папки avr_boot , но там проц должен быть 32КБ
посмотрите макефайл и инклюды в маин.
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

люди как для CodeVision будет звучать фраза

asm("nop");
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

#asm("nop");

или если блок

#asm
nop
nop
#endasm
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2183
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение watchmaker »

Error: S:\_ЭЛЕКТРОПРОЭКТ_\mmc.c(36), #included from: СТАНОК.c: undefined symbol '_BV'
Кириллицу из путей выкинь, не поддерживается.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

Гляньте, похожее кто то делал на FAT16 для CV
В протеусе работает, в железе не пробовал.
fat16.rar
(108.73 КБ) 343 скачивания
_BV поддерживает WinAVR, а CV его не знает.
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

насчет _BV там дальше макрос нашол

#define _BV(x) (1 << (x))

насчет кирилицы проблем вроде не замечал

за fat16.rar сейчас посмотрю
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

посмотрел fat16.rar карточку инициализирует а фат нифига на четырех разных карточках пробовал (две по 16мб, одна 256 мб, одна 2гб)
может схема виновата? подключал както так
Копия Mega8+MMC.jpg
(59.45 КБ) 600 скачиваний
, насколько номиналы резисторов критичны?

вот кусок кода
void io_init() {
byte ok;
led2(1);//первый этап моргаем первым светиком
led (0);
ok=sd_init(); //Инициализируем карточку
switch(ok) {
case SD_ERR_SUSSED: {errr();led (6);}; break;//"OK - SD INIT" //Нет ошибки
case SD_ERR_IDLE: {errr();led (1);}; break; //"ERROR - SD IDLE //Карточка не перешла в IDLE
case SD_ERR_INIT: {errr();led (2);}; break; //"ERROR - SD INIT" //Карточка не инициализировалась
}
while (ok!=0);

delay_ms(2000); //для индиации ошибки
led2(2);//первый этап моргаем вторым светиком
led (0);

ok=fat_init(); //Инициализируем FAT
switch(ok) {
case FAT_ERR_SUSSED: {errr();led (6);}; break; //"OK - FAT16 INIT" //Нет ошибки
case FAT_ERR_PART: {errr();led (3);}; break; //"ERROR - PARTITION" //Ошибка Partition
case FAT_ERR_ROOT: {errr();led (4);}; break; //"ERROR - ROOT ENTRY" //Ошибка Root Entry
case FAT_ERR_SIZE: {errr();led (5);}; break; //"ERROR - SIZE" //Ошибка в количестве кластеров
}
while (ok!=0);

delay_ms(2000); //для индиации ошибки
led2(3);//первый этап моргаем третим светиком
led (0);
}

на fat_init переходит а от туда уже не возвращается,
да кстате у меня кварц на 16мгц стоит может сдесь чего не так
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

Вова_Синяк писал(а): да кстате у меня кварц на 16мгц стоит может сдесь чего не так
А как вы сами думаете, если проект рассчитан на 8 мгц,а вы запускаете на 16мгц, он должен работать?
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

я думал что если проект перекомпилировать и указать что у тебя 16 мгц а не заливать готовый кекс то все тайминги пересчитаются если они конечно жёстко не заданы циклами
codenamehawk
Вымогатель припоя
Сообщения: 528
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение codenamehawk »

Переключите на 8 мгц, от внутреннего генератора.

Ваш проект в протеусе работает?

Их проект в вашем проце?
Вова_Синяк
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт мар 20, 2014 20:07:25

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение Вова_Синяк »

нет я свой проэкт в протеусе делал но забросил, то глючит то не считает, на железе както сподручнее и быстрее ИМХО
а fat16.rar полнотью не компилировал, к себе перетащил то что мне нужно, проэкт то точно рабочий, вот и возник вопрос может схема виновата номиналы резисторов взяты с потолка, в разных источниках разные указаны, вот взял что было и впаял, но ведь инициализацию карты проходит,

попробую под 8 мгц от внутреннего запитатся
mrFox
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пт сен 21, 2007 17:53:23
Откуда: Зарайск

Re: CodeVisionAVR и Petit FatFs в Atmega8

Сообщение mrFox »

Вова_Синяк писал(а): ...насколько номиналы резисторов критичны?
...на fat_init переходит а от туда уже не возвращается,
да кстате у меня кварц на 16мгц стоит может сдесь чего не так
на странице Чана есть и демка работы с SD со схемой и кодом, там собстно и номиналы; и отношение сопротивлений резисторов должно быть как у Чана
электрическая схема соединения MMC и SD разная - проверь тип карты
может банально не работать библиотека SD - карточек 4 типа или написанна под одну частоту
для начала стоит почитать регистры самой карточки (например размер)
библиотеку стоит брать с сайта самого Чана - брал с учебного сайта - не запустилась почему-то
PS чтоб переносить с GCC на CV надо знать особенности обоих
иначе стоит взять GCC и не мучится
Ответить

Вернуться в «AVR»