реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> FatFS + LPC2148 + KEIL
bigarmer
сообщение Dec 15 2008, 10:05
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 52
Регистрация: 5-12-08
Пользователь №: 42 221



You need to register for downloading the source code.
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 15 2008, 10:06
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Может кто скажет почему кейл ругаеться на определение типа (iar - ok):

/* Boolean type */
typedef enum { FALSE = 0, TRUE } BOOL;


fatFS\integer.h(27): error: #40: expected an identifier
fatFS\integer.h(27): error: #40: expected an identifier
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 15 2008, 10:10
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MaxEngee @ Dec 15 2008, 13:06) *
Может кто скажет почему кейл ругаеться на определение типа (iar - ok):

Потому что TRUE и/или FALSE где-то уже заданы через #define.
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 15 2008, 10:26
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



на счет TRUE и/или FALSE #define - точно!!! Спасибо

Может знаете что за функция в IAR - SYS_GetFpclk()??? И что она возвращает?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 15 2008, 11:24
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(MaxEngee @ Dec 15 2008, 12:26) *
Может знаете что за функция в IAR - SYS_GetFpclk()??? И что она возвращает?
Даю 99.99%, что в ИАРе такой функции нет. Скорее всего что-то из сторонних библиотек для LPC. А поиск по файлам исходников ничего не дает? Судя по названию - возвращает частоту, на которую настроен pclk в LPC.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 15 2008, 12:18
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



07.gif
Блин
точно, извеняюсь, поспешил с вопросом.
Действительно есть еще одна библиотечка с общими определениями и настройками.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 15 2008, 13:18
Сообщение #22


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Kompot @ Dec 15 2008, 14:05) *
Дык все уже украдено до нас...

http://www.sparkfun.com/commerce/product_i...roducts_id=8627

Как раз то, что Вам хотелось. Работает. С исходниками.

Спасибо! beer.gif

Цитата(bigarmer @ Dec 15 2008, 14:05) *
You need to register for downloading the source code.

There are no downloads under "µC/FS ports" available... even if logged in... crying.gif
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 16 2008, 10:56
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Всем спасибо за посильную помощь.

Сделал все сам. В ИАРе конечно намного лучше с битовыми полями работать:
//1 while(!SSPSR_bit.RNE); IAR
while(!(SSPSR & 0x4)); KEYL
или
//1 PINSEL1_bit.P0_17 = PINSEL1_bit.P0_18 = PINSEL1_bit.P0_19 = 2;
PINSEL1 |= 2<<2;
PINSEL1 |= 2<<4;
PINSEL1 |= 2<<6;

Может можно хедеры ИАРа в кейле использовать?

Несколько различий компиляторов:
11111111111111111111111111111
#define KHZ *1000l
int freq=15KHZ; //для иара - 15 000

Кейл воспринимает только через пробел
int freq=15KHZ; //для кейла - 15
int freq=15 KHZ; //для кейла - 15 000

222222222222222222222222222222222
На следующую запись Кейл ругаеться
208 for (Int32U Busy = 0, i = Twr; i && (Busy != 0xFF); --i)

fatFS\mmc.c(208): error: #254: type name is not allowed
fatFS\mmc.c(208): error: #65: expected a ";"
fatFS\mmc.c(208): error: #20: identifier "Busy" is undefined

Переправил на
Int32U Busy;
for (Busy = 0, i = Twr; i && (Busy != 0xFF); --i)
Go to the top of the page
 
+Quote Post
Hermes
сообщение Dec 16 2008, 11:41
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



А это сможет работать в IAR на lpc2478 ???
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 16 2008, 11:49
Сообщение #25


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(MaxEngee @ Dec 16 2008, 12:56) *
//1 while(!SSPSR_bit.RNE); IAR
while(!(SSPSR & 0x4)); KEYL
Раскритикую нафиг. "Магические цифры" вроде этой 0x4 - великое зло. Наверняка у кейла в заголовочном файле есть описание бита RNE. Или как #define RNE (1<<4) или как #define RNE 4.
В таком случае эта запись должна выглядить либо while(!(SSPSR & RNE)) либо while(!(SSPSR & (1 < RNE))). Иначе уже через пару дней вы полезете копать user manual чтобы понять, какой же бит эта четверка означает.
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
//1 PINSEL1_bit.P0_17 = PINSEL1_bit.P0_18 = PINSEL1_bit.P0_19 = 2;
PINSEL1 |= 2<<2;
PINSEL1 |= 2<<4;
PINSEL1 |= 2<<6;
PINSEL1 объявлен как volatile. Оба этих варианта приводят к совершенно лишним чтениям PINSEL1, а первая еще и к наложению масок (один из минусов объявления регистров как битовых структур). PINSEL1 |= (2<<1*2) | (2<<2*2) | (2<<3*2); Или сразу вынести в глобальную инициализацию и прописать сразу весь регистр через '=' (в ущерб модульности).
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
Может можно хедеры ИАРа в кейле использовать?
Можно, но полагаю у кейла заголовочные файлы не хуже.
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
#define KHZ *1000l
int freq=15KHZ; //для иара - 15 000

Кейл воспринимает только через пробел
int freq=15KHZ; //для кейла - 15
int freq=15 KHZ; //для кейла - 15 000
Очень, очень странно. 15KHZ - единый токен, подстановки быть не должно. Оба должны были выдать ошибку. gcc поступает правильно:
Цитата
invalid suffix "KHZ" on integer constant
Цитата(MaxEngee @ Dec 16 2008, 12:56) *
На следующую запись Кейл ругаеться
208 for (Int32U Busy = 0, i = Twr; i && (Busy != 0xFF); --i)
Это С99, возможно Кейл поддерживает только С89. Ненаказуемо.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 16 2008, 11:57
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Сергей Борщ @ Dec 16 2008, 14:49) *
Это С99, возможно Кейл поддерживает только С89. Ненаказуемо.

Keil частично поддерживает C99. Впрочем, все документировано.
Go to the top of the page
 
+Quote Post
Hermes
сообщение Dec 16 2008, 17:58
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



Меня походу проигнорировали...
это сможет работать на lpc-2478 ?
кто-нить может поделиться исходниками ? - буду очень признателен!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 16 2008, 21:07
Сообщение #28


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Hermes @ Dec 16 2008, 19:58) *
Меня походу проигнорировали...
Или просто не знают ответ.
Цитата(Hermes @ Dec 16 2008, 19:58) *
это сможет работать на lpc-2478 ?
За это время можно было просмотреть исходник на предмет используемой периферии, открыть два юзер мануала и сравнить описание этой периферии.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
MaxEngee
сообщение Dec 17 2008, 10:08
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 17-03-07
Из: Беларусь, Минск
Пользователь №: 26 249



Цитата(Hermes @ Dec 16 2008, 15:41) *
А это сможет работать в IAR на lpc2478 ???


Слабо понятно что значит "это".
Если вы имеете ввиду портированный FatFS - ff004b IAR.zip, и сможет ли он работать на lpc2478 --> Ответ НЕТ, Так как в ff004b IAR.zip низкоуровневые функции написаны для модуля SSP LPC2148.

Цитата(Сергей Борщ @ Dec 16 2008, 15:49) *
Можно, но полагаю у кейла заголовочные файлы не хуже.

По поводу хедеров в Кейле. Там только определенны адреса регистров(что очень не удобно):
/***********************************************************************/
/* This file is part of the uVision/ARM development tools */
/* Copyright KEIL ELEKTRONIK GmbH 2002-2005 */
/***********************************************************************/
/* */
/* LPC214X.H: Header file for Philips LPC2141/42/44/46/48 */
/* */
/***********************************************************************/

#ifndef __LPC214x_H
#define __LPC214x_H

/* Vectored Interrupt Controller (VIC) */
#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))
#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004))
#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008))
#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C))
#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010))
#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014))
Go to the top of the page
 
+Quote Post
Hermes
сообщение Dec 17 2008, 13:25
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 17-11-08
Пользователь №: 41 692



Цитата(Сергей Борщ @ Dec 17 2008, 00:07) *
Или просто не знают ответ. За это время можно было просмотреть исходник на предмет используемой периферии, открыть два юзер мануала и сравнить описание этой периферии.

Т.е. просто переопределить адреса регистров?
простите за возможно глупые вопросы...
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 08:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01536 секунд с 7
ELECTRONIX ©2004-2016