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

 
 
> LPC2104 c нуля., Че то я торможу для начала.
phantom
сообщение Mar 30 2006, 15:41
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986



Наконец-то я раздобыл, сей чип, и хочу его запустить. Пока в ящике были AT90 и скоростуха не поджимала, все было ОК. Но час Х настал... Ткнулся я было по-старинке и понял, что здорово отстал от жизни. Посему накиньте, кому не влом, мелкий план моих действий. Все что тут было я по-видимому читал, и все что было уже скачал, но толку мало. Вообщем главный вопрос ЧТО ДЕЛАТЬ? glare.gif 1) как практически его запрограммировать (аппаратно), а то там всякие BOOT LOADER-ы и т.д, Как с ними работать? И можно ли обойтись без них - просто тупо записать прогу в ФЛЭШ контроллера как когда-то АТ90?! И как лечилку к Кейлу применить - если она хочет DLL которая есть, но которую она не видит!!! И может Кейл - ну его? 2) Wiegler дружит с Кейлом (2.4) ? Вообщем буду признателен за конкретный краткий план моих действий. Для AVR это могло бы выглядеть так 1) сделать плату с АВР-ом из примера СоdeVision****, 2) сделать програматор СТК200, 3) поставить компилятор COdeVision 3) скомпилировать пример 4) прошить АВР 5) убедится в работоспособности и т.д Буду всем очень признателен, а то время не ждет! help.gif


--------------------
О сколько нам открытий чудных ...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
evgen2
сообщение Apr 1 2006, 13:40
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Привет!

Примерно аналогично.
Использую
mVision3 V3.21
C Compiler CA.Exe V2.40a
Assembler AA.Exe V2.40a

1) Вылезла проблема с выравниванием.
Вот такой код
volatile struct Msg {
long a;
long b;
long c;
long d;
unsigned char Buf[40];
} MsgOut;

*((short int *)&MsgOut.Buf[4+16]) = 0x7ff7;
*((int *) &MsgOut.Buf[4+18]) = 0x87654321;
упорно записывает 0x87654321 по смещению 20.
parma pack() не помогает

2) не могу сообразить, как разрешать-запрешать прерывания. т.е. описалово
VICIntEnable и VICIntClr читаю. Нашел что в доках голины пишут как VICIntClr, так и VICIntClear
Но не доходит, во что это выливается. Вопрос связан с тем, что вылезла неатомарность записи, т.е. если в функции записываю переменную, а в прерывании ей пользуюсь...теряются от 1 до 3 байт, аналогично опасаюсь, что может вылезли если писать в прерывании, а пользоваться в функции. Как с этим бороться - нифига не могу сообразить, ни в доках, ни в книжке "Insider's guide"


спасите-помогите ;-)
Go to the top of the page
 
+Quote Post
evgen2
сообщение Apr 2 2006, 11:44
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Цитата(evgen2 @ Apr 1 2006, 16:40) *
1) Вылезла проблема с выравниванием.

сделанное из Hello World
unsigned char Buf[40];
int main (void)
{
........
*((short int *)&Buf[0]) = 0x77ff;
*((int *)&Buf[2]) = 0x12345678;
printf("%x %x %x %x \n", Buf[0],Buf[1],Buf[2],Buf[3]);
}
выводит
78 56 34 12

smile3046.gif

и шоб было праильно - надо извращаться *((_packed int *)&Buf[2]) =

А на первой странице и в ридмях этого написать эти пейсатели не могут - повбывал бы и на кол пересажал twak.gif maniac.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:43
Рейтинг@Mail.ru


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