|
MSP430 - снова вопросы от чайника, Вопросы от чайника про MSP и магнитный компас |
|
|
|
Jul 23 2008, 19:17
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
 Здравствуйте. Кто читал предыдущую мою тему "MSP430 - вопросы от чайника", тот поймет - это снова я  Тему закрыли, слишком долго висела. А вопрсов все больше. Если кому-то вдруг окажется не влом разбираться, то Вот кусок проги: int flag;//глобальные переменные int cindex; испульзуемые функции(write_flash - пишет число во flash, read_flash - считывает) void write_flash(float* value, float *addr) { while(FCTL1 & BUSY); _BIC_SR(GIE); FCTL1 = FWKEY + ERASE; FCTL3 = FWKEY; *addr = 0; while(FCTL1 & BUSY); FCTL1 = FWKEY + WRT; for (int i=0;i<=3;i++) { *addr = value[i]; addr++; } _BIS_SR(GIE); while(FCTL1 & BUSY); FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; } void read_flash(float* addr, float* pfO) { for (int i=0;i<=3;i++) { pfO[i]=*addr; addr++; } } Чего хочу сделать - Если присылаю 0, то должны считаться два показания с выводов P6.3 и P6.4, присылается 0хАА - т.е. "считалось", записываются первые элементы двух массивоы данных. Когда набирается по четыре элемента, индекс сбрасывается Если присылаю 0xFF, то должна выполнится функция calibrovka_hmc, если она выполняется неверно, то присылается 0хСС, иначе из flash считывается и присылается вычисленная с помощью этой функции константа. Внутри функции main ADC12CTL0 = ADC12ON + REFON + SHT0_8; //настройка АЦП ADC12CTL1 = CSTARTADD0 + CSTARTADD1 + ADC12SSEL_1+ CONSEQ_1; ADC12MCTL3 = INCH_3; ADC12MCTL4 = INCH_4 + EOS; float temp[4]; flag=0; cindex=0; for(;;) { for(delay = 0; delay <20000; delay++); if( flag==0 ) {send_int(0x0); } if( flag==1 ) { if (calibrovka_hmc(CVx, CVy, temp)==0)//calibrovka_hmc - имеет параметрами два массива и вычисляет четыре константы(нужные для калибровки устройства) { send_int(0xCC); flag=0; } else { float pfO[4]; read_flash((float*)0x1000,pfO); r=(int)(pfO[0]+0.5); send_int®; flag=0; } flag=4; } if (flag==2) { ADC12CTL0 |=ADC12SC + ENC; CVx[cindex] = ADC12MEM3; CVy[cindex] = ADC12MEM4; ADC12CTL0 &= ENC; cindex++; send_int(0xAA); flag=0; } if (cindex>3) cindex=0; } } #pragma vector=UART0RX_VECTOR __interrupt void usart0_rx ( void) { if( RXBUF0==0xFF) flag = 1; if (RXBUF0==0x0) flag = 2; } В ЧЕМ ПРОБЛЕМА: Перед выполнением калибровки присылаю элементы массива, полученного при считывании показаний с выводов, - оказывается, что в массив записываются по два-три раза одно значение, хотя этого не может быть. Соответственно, из-за этого не работает и все остальное Может, неправильно настроен АЦП? Или в чем может быть дело? И, если кому-то вдруг не влом разбираться - функции записи во flash и чтения flash - можно ли сделать как-то поумнее?
|
|
|
|
|
 |
Ответов
|
Jul 23 2008, 22:03
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Некоторое (продолжительное) время не заглядывал в форум, а когда заглянул оказалось, что вашу тему прикрыли. По поводу Flash. Проверять готовность к записи во Flash (бит BUSY) при выполнении программы записи прямо из Flash нет необходимости. Вот такая вот продвинутая технология у MSP430  Почему так, объяснять еще раз не буду. Читайте внимательно User's Manual. Проверка готовности нужна только в том случае, если ваша функция записи исполняется из ОЗУ (SRAM), а не из Flash. Запись во внутреннюю Flash MSP430 может производится 16-и разрядными словами и/или байтами. float имеет размерность 32 бита, т.е. 2 слова/4 байта. Так что, для записи переменной float нужно как минимум две команды записи 16-и битных слов или четыре команды записи байта. У вас указатели value и addr указывают на тип float. Поэтому команды типа addr++; увеличивают значение такого указателя на 4 байта и во Flash пишется какая-то фигня. Пишите тогда уж пословно, делая явное приведение типа к 16-и битному целому. Код for (int i=0; i<(4*2); i++) // здесь я явно выделил удвоение числа элементов записи ((unsigned short *)addr)[i] = ((unsigned short *)value)[i]; Назначение функции чтения из Flash я вообще не очень понимаю. У MSP430 фон-Неймановская архитектура с общим адресным пространством для команд и данных. Встроенного EEPROM тоже нет. Так что выделять копирование в отдельную функцию (если только она не вызывается несколько раз) я не вижу смысла. Да и ее тоже можно оптимизировать на одну команду (выкинув addr++; ), если в теле цикла писать Код pfO[i]=addr[i]; Насчет всего остального. Может у меня сложилось неверное впечатление, но похоже вы не осознаете, что такое синхронные и асинхронные события. Просто не владеете таким уровнем абстракций. Попробую объяснить на бытовом примере. Вы когда-нибудь видели как подъемный кран работает? Внизу на земле стоит стропальщик, который крепит к крюку крана груз, а наверху в кабине крана сидит крановщик, который управляет движением крюка, стрелы и платформы крана. Причем крановщик не сам-по-себе управляет, а подчиняется управляющим командам стропальщика. Только после того как груз - прицеплен, - надежность крепления проверена, - стропальщик подал команду "вира!" крановщик включает двигатель, приводящий к движению крюка и стрелы крана. До подачи команды "вира!" крановщик просто ждет готовности груза. У вас в системе присутствуют асинхронные процессы (измерение АЦП, прием/передача UART), а вы работаете с ними как Бог на душу положит.  Стропальщик убил бы просто такого крановщика, если бы остался жив после его несанкционированных действий.  Эта иллюстрация синхронных действий. Для иллюстрации же асинхронных процессов к картине работы башенного крана нужно добавить несколько КАМАЗов с кирпичем, которые приезжают на стройку асинхронно работе крана, когда у них получится, и сваливают кирпич в общую кучу. Которую потом стропальщик с крановщиком общими синхронными действиями перемещают на строящийся уровень дома  Эта моя пространная тирада относится в частности к строке Цитата ADC12CTL0 |=ADC12SC + ENC; CVx[cindex] = ADC12MEM3; CVy[cindex] = ADC12MEM4; Где вы запускаете преобразование АЦП и тут же, не дожидаясь окончания выполнения преобразования, считываете результаты оцифровки непонятно чего. Раз вы не используете прерывание от АЦП, ну подождите для приличия установки флага готовности что ли Код ADC12CTL0 |=ADC12SC|ENC; while ((ADC12IFG&(1<<3))!=0); CVx[cindex]=ADCMEM3; while ((ADC12IFG&(1<<4))!=0); CVy[cindex] = ADC12MEM4; То же самое относится к модификации флага в прерывании UART. Если вы посылаете последовательности из двух команд 0xFF и 0x00, и снова 0xFF и 0x00, но не успели считать значение какого-то флага, то его значение потеряется и вы получите дублирование команды 0xFF или 0x00. Потому, что прием через UART асинхронен выполнению основного тела программы, где эти флаги анализируются. Для того чтобы команды, принятые через UART не терялись, их нужно буферизировать, т.е. складывать в некий массив из которого в основном теле программы они будут извлекаться. Буферы бывают линейные (типа FIFO) и циклические. По-моему для вашего случая больше подходит циклический буфер. Пример. Код #define UART_MAXBUFSIZE 8 //здесь задается размер выделяемого UART буфера struct cbuf { unsigned char *pBuf; //указатель на начало буфера unsigned int rIdx; //индекс для чтения элемента из буфера unsigned int wIdx; //индекс для записи элемента в буфер unsigned int cntr; //счетчик общего количества элементов в буфере, чтобы знать о его заполнении } cbuf; unsigned char uartBuf[UART_MAXBUFSIZE]; // собственно сам буфер UART где-то в начале программы нужно инициализировать структуру этого буфера Код ... cbuf.pBuf=&uartBuf[0]; cbuf.rIdx=0; cbuf.wIdx=0; cbuf.cntr=0; ... В прерывании от приемника UART запись в буфер Код #pragma vector=UART0RX_VECTOR __interrupt void usart0_rx ( void) { if (cbuf.cntr<UART_MAXBUFSIZE) { cbuf.pBuf[cbuf.wIdx]=U0RXBUF; if (cbuf.wIdx<(UART_MAXBUFSIZE-1)) cbuf.wIdx++; else cbuf.wIdx=0; cbuf.cntr++; } } В теле программы считывание из буфера. Для атомарности доступа к буферу на время доступа к нему временно запрещаем прерывание от приемника UART Код ... if (cbuf.cntr>0) { IE1&=~URXIE0; uCmd=cbuf.pBuf[cbuf.rIdx]; cBuf.cntr--; IE1|=URXIE0; if (cbuf.rIdx<(UART_MAXBUFSIZE-1)) cbuf.rIdx++; else cbuf.rIdx=0; } // дальше значение переменной uCmd можно использовать как текущую команду, полученную через UART ...
|
|
|
|
|
Jul 24 2008, 19:29
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Ага, все же заглянули  спасибо за комментарии и критику, все подробно и пространно. По поводу АЦП я уже сама доперла, установку флагов жду, режим использую последовательный, и бит MSC ставлю  Теперь работает. По поводу read_flash - ну да, но это так, для понта отдельная функция А по поводу write_flash - хм. но она работает. я проверяла, во flash пишется не фигня  может это мне просто везет? Про буфер - спасибо, попробую. Вообще спасибо, что не забыли
|
|
|
|
|
Jul 25 2008, 03:03
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836

|
Цитата(Daria @ Jul 24 2008, 23:29)  А по поводу write_flash - хм. но она работает. я проверяла, во flash пишется не фигня  может это мне просто везет? Пока везет. В данном случае строка: *addr = value[i];скорее всего, транслируется компилятором как MOV.W @R12+, 0(R13) MOV.W @R12+, 2(R13)т.е. реально происходит именно последовательная запись двух слов по очереди, но никто не гарантирует, что это будет всегда, при любых настройках. Причем там лежат еще одни незаметные грабли, на которые легко наступить. Точно также строка *addr = 0;транслируется в MOV.W #0x0, 0(R13) MOV.W #0x0, 2(R13)что два раза подряд вызовет стирание сегмента, причем без пауз между ними. В лучшем случае это вызовет удвоенный износ флешки, в худшем - неизвестно (поскольку до подобных действий наверняка еще никто не додумался  )
|
|
|
|
|
Jul 25 2008, 18:27
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(=DS= @ Jul 25 2008, 07:03)  *addr = 0;транслируется в MOV.W #0x0, 0(R13) MOV.W #0x0, 2(R13)что два раза подряд вызовет стирание сегмента, причем без пауз между ними. В лучшем случае это вызовет удвоенный износ флешки, в худшем - неизвестно (поскольку до подобных действий наверняка еще никто не додумался  )  а как тогда написать? Такая строка была в примере, который я скачала с ИАРовского сайта, - "фиктивная запись". Как тогда написать фиктивную запись ? И вот еще ВОПРОС- понимаю, что, наверное, глупый, но - Когда гружу прогу с помощью IAR Kickstart - работает нормально, считает четко все - я проверяла. Но так как код уже превышает 4кБ, гружу с помощью полной версии - на COM приходит полная ересь. С чем это может быть связано? Код такой же - один в один. Я думала, может дело в доступе к библиотекам, но не ругается же на код, на #include <math.h>, работает, считает, пишет... только фигню Вот. Не ругайтесь! - уж такая я глупая Вот сама функция, она принимает два массива и на их основании вычисляет и пишет во flash 4 четыре константы int calibrovka_hmc( float* V1, float* V2, float* calibr) { float x[4], a[3][3],d[4]; float Ox,k,Oy,kx,ky; for (int i=0;i<4;i++) { a[i][0]=2*(V1[i]-V1[i+1]); a[i][1]=2*(V2[i]-V2[i+1]); a[i][2]= -((V2[i])*(V2[i])-(V2[i+1])*(V2[i+1])); a[i][3]= ((V1[i])*(V1[i])-(V1[i+1])*(V1[i+1])); d[i]=((V1[i])*(V1[i])-(V1[i+1])*(V1[i+1])); } if (gauss(x,a,d,3)==0) return 0; else { Ox=x[0]; k=x[2]; if (x[2]!=0) Oy=x[1]/x[2]; else Oy=0; } kx=sqrt((V1[3]-Ox)*(V1[3]-Ox)+k*(V2[3]-Oy)*(V2[3]-Oy)); ky=sqrt((kx)*(kx)/k); calibr[0]=Ox; calibr[1]=Oy; calibr[2]=kx; calibr[3]=ky; write_flash( calibr, (float*) 0x1080); return 1; } gauss( ) - решение системы методом Гаусса, она точно работает, не буду приводить - к тому же вряд ли кому-то будет охота в ней разбираться  Такие вопросы
Сообщение отредактировал Daria - Jul 25 2008, 18:31
|
|
|
|
|
Jul 25 2008, 19:47
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ Jul 26 2008, 00:27)   а как тогда написать? Такая строка была в примере, который я скачала с ИАРовского сайта, - "фиктивная запись". Как тогда написать фиктивную запись ?  Конечно фиктивная запись, вот только в примере скорее всего был указатель другого типа (unsigned int или unsigned char). Как поступить в данной ситуации я вам уже выше подсказал - используйте явное приведение типа. Раз у вас указатель на float, то при фиктивной записи преобразуйте его к указателю на unsigned int. Код *((unsigned int *)addr)=0; Цитата(Daria @ Jul 26 2008, 00:27)  И вот еще ВОПРОС- понимаю, что, наверное, глупый, но - Когда гружу прогу с помощью IAR Kickstart - работает нормально, считает четко все - я проверяла. Но так как код уже превышает 4кБ, гружу с помощью полной версии - на COM приходит полная ересь. С чем это может быть связано? Код такой же - один в один. Версии IAR одинаковы? Настройки проекта одинаковы? И вообще, спрашивается зачем использовать KickStart при наличии полной версии?  Если вы не пользуетесь дебаггером, то для загрузки прошивки в кристалл использовать IAR вообще не обязательно. Пользуйтесь специальными программами. MSPFET Programmer от Kurt-а или FET-Pro430 Lite от Elprotronic или вот тут же в форуме zltigo свою утилиту AT430 предлагает. А вообще правильность работы алгоритма программы можно проверить в симуляторе. Тем более, если у вас есть в наличии результаты работы алгоритма по известным данным.
|
|
|
|
|
Jul 25 2008, 21:05
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
И версии, и настройки. А кикстарт - потому что сначала был только он  FET-Pro430 Lite у меня есть. но не очень-то удобно компилироваться, а потом грузить через нее - проще и быстрее же все делать в ИАРе Дебаггером, кстати, пользуюсь, но проверить алгоритм не получается - он не показывает текущие значения моих переменных, только регистры контроллера  - то же касается симулятора Кстати, если настройка АЦП ADC12CTL0 = ADC12ON +REFON + SHT0_8+MSC; ADC12CTL1 = CSTARTADD0 + CSTARTADD1 + ADC12SSEL_1+ CONSEQ_1+SHP; ADC12MCTL3 = INCH_3; ADC12MCTL4 = INCH_4 + EOS; а потом ADC12CTL0 |=ADC12SC; ADC12CTL0 |=ENC; while(ADC12IFG & BIT3); CVx[cindex] = ADC12MEM3; while(ADC12IFG & BIT4); CVy[cindex] = ADC12MEM4; ADC12CTL0 &= ENC; так нормально? Или опять грузовики с кирпичами понаехали?
|
|
|
|
|
Jul 25 2008, 21:40
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836

|
Цитата(Daria @ Jul 26 2008, 01:05)  Дебаггером, кстати, пользуюсь, но проверить алгоритм не получается - он не показывает текущие значения моих переменных, только регистры контроллера  - то же касается симулятора Галочка в project->options->linker->output "debug information for C-Spy" стоит?
|
|
|
|
Сообщений в этой теме
Daria MSP430 - снова вопросы от чайника Jul 23 2008, 19:17      rezident Цитата(Daria @ Jul 26 2008, 03:05) И верс... Jul 25 2008, 21:38       Daria Цитата(rezident @ Jul 26 2008, 01:38) Ну ... Jul 26 2008, 12:38        rezident Цитата(Daria @ Jul 26 2008, 18:38) rezide... Jul 26 2008, 12:58         Daria Так вот. Галочка стоит. А состояние переменных все... Jul 28 2008, 20:14          rezident Цитата(Daria @ Jul 29 2008, 02:14) Так во... Jul 28 2008, 23:05           Daria Цитата(rezident @ Jul 29 2008, 03:05) Ну ... Jul 30 2008, 19:31           Daria Здравствуйте, снова я
Цитата(rezident @ Jul... Aug 7 2008, 20:43            rezident Цитата(Daria @ Aug 8 2008, 02:43) ЗКак бы... Aug 8 2008, 01:29             Daria Цитата(rezident @ Aug 8 2008, 05:29) Можн... Aug 8 2008, 20:28              rezident Цитата(Daria @ Aug 9 2008, 02:28) а вот п... Aug 9 2008, 01:10               Daria Цитата(rezident @ Aug 9 2008, 05:10) Коли... Aug 9 2008, 20:42                rezident Цитата(Daria @ Aug 10 2008, 02:42) Ну и п... Aug 9 2008, 22:10                 Daria Так. Ну вот, как-то не выходит ничего
Если в пре... Aug 11 2008, 20:19                  Dog Pawlowa Цитата(Daria @ Aug 11 2008, 23:19) Как бы... Aug 12 2008, 06:14                   Daria Цитата(Dog Pawlowa @ Aug 12 2008, 10:14) ... Aug 12 2008, 19:55 Т.Достоевский Может так?
Код#pragma vector=ADC_VECTOR
{
if ... Aug 11 2008, 21:52 rezident Все дело в том, что вы маски неверно накладываете.... Aug 11 2008, 23:19 rezident Daria, извините за откровенность, но у вас какой-т... Aug 12 2008, 23:30 Daria Цитата(rezident @ Aug 13 2008, 03:30)
Re... Aug 13 2008, 17:06  rezident Цитата(Daria @ Aug 13 2008, 23:06) Но - з... Aug 13 2008, 18:19   Daria Цитата(rezident @ Aug 13 2008, 22:19)
Яс... Aug 13 2008, 19:59  zhevak Ух-х, какие крутые виражи! Ух, как человека мы... Aug 14 2008, 08:09   Daria Цитата(zhevak @ Aug 14 2008, 12:09) Rezid... Aug 14 2008, 20:47    rezident Цитата(Daria @ Aug 15 2008, 02:47) Rezide... Aug 14 2008, 21:01     Daria Ага, будем считать с буфером приема разобрались ... Aug 17 2008, 11:13      zhevak О-хо-хо... Ну да ладно!
Даша, я предполагаю, ... Aug 17 2008, 14:49      rezident Цитата(Daria @ Aug 17 2008, 17:13) Запись... Aug 17 2008, 15:09       zhevak Цитата(rezident @ Aug 17 2008, 21:09) Изв... Aug 17 2008, 15:51        rezident Цитата(zhevak @ Aug 17 2008, 21:51) Не, н... Aug 17 2008, 15:56         zhevak Цитата(rezident @ Aug 17 2008, 21:56) Да ... Aug 17 2008, 16:38          Daria Да-а-а утром отправляю вопрос, иде себе спокойне... Aug 17 2008, 20:49           Daria здравствуйте снова. Такой вопрос - во время работ... Aug 19 2008, 17:42            rezident Цитата(Daria @ Aug 19 2008, 23:42) можно ... Aug 19 2008, 21:40             Daria Цитата(rezident @ Aug 20 2008, 01:40) А т... Aug 20 2008, 18:20              Daria Здравствуйте. rezident, по поводу примера буфера п... Aug 21 2008, 18:01               rezident Цитата(Daria @ Aug 22 2008, 00:01) для че... Aug 21 2008, 21:19                Daria Как всегда - большое спасибо! про выравниван... Aug 24 2008, 17:36                 Daria Здравствуйте снова.
Вот опять вопросы_
Делаю усред... Aug 29 2008, 18:53                  rezident Цитата(Daria @ Aug 30 2008, 00:53) Делаю ... Aug 29 2008, 20:16                   Daria Да знаю я, знаю, что долго сидеть в прерывании нех... Aug 30 2008, 18:33                    rezident Цитата(Daria @ Aug 31 2008, 00:33) Да зна... Aug 30 2008, 21:04                     Daria Цитата(rezident @ Aug 31 2008, 01:04) Ест... Aug 31 2008, 16:48                      rezident Цитата(Daria @ Aug 31 2008, 22:48) Нужно.... Aug 31 2008, 18:39                       Daria Цитата(rezident @ Aug 31 2008, 22:39) В п... Aug 31 2008, 20:29                        Daria Ну вот, отпуск кончился, пошли суровые будни
И в... Sep 12 2008, 18:04                         rezident Цитата(Daria @ Sep 13 2008, 00:04) Вот та... Sep 12 2008, 18:27                          Daria Цитата(rezident @ Sep 12 2008, 22:27)
re... Sep 18 2008, 13:34                           Daria Здравствуйте. Такие вопросы -
сейчас я прошиваю ... Sep 23 2008, 18:33                            rezident Цитата(Daria @ Sep 24 2008, 00:33) В даль... Sep 23 2008, 19:56                             Daria Ага, но мне, как пока неквалифицированному програм... Sep 23 2008, 20:12                              rezident Цитата(Daria @ Sep 24 2008, 02:12) Значит... Sep 23 2008, 20:47                               Daria Цитата(rezident @ Sep 24 2008, 00:47) Для... Sep 23 2008, 20:56                                rezident Цитата(Daria @ Sep 24 2008, 02:56) А UIF ... Sep 23 2008, 21:35                                Сергей Борщ Цитата(Daria @ Sep 23 2008, 23:56) Как-то... Sep 23 2008, 21:52                                 Daria Цитата(Сергей Борщ @ Sep 24 2008, 01:52) ... Sep 24 2008, 17:18                            Сергей Борщ Цитата(Daria @ Sep 23 2008, 21:33) мне ск... Sep 23 2008, 20:01                            LCD Цитата(Daria @ Sep 23 2008, 22:33) Не под... Sep 24 2008, 19:14                         MrYuran Цитата(Daria @ Sep 12 2008, 22:04) Как бы... Sep 13 2008, 10:53                          rezident Цитата(MrYuran @ Sep 13 2008, 16:53) И с ... Sep 13 2008, 16:48                           MrYuran Цитата(rezident @ Sep 13 2008, 20:48) А в... Sep 13 2008, 17:31                           Сергей Борщ Цитата(rezident @ Sep 13 2008, 19:48) А в... Sep 13 2008, 18:20                            rezident Цитата(MrYuran @ Sep 13 2008, 23:31) А во... Sep 13 2008, 20:13                             AHTOXA Цитата(rezident @ Sep 14 2008, 02:13) При... Sep 15 2008, 17:38 Kurt 2rezident: я восхищен силой вашего воображения )) Aug 13 2008, 04:41 _3m Цитата(Kurt @ Aug 13 2008, 08:41) 2rezide... Aug 13 2008, 06:34 rezident Я не вижу функции инициализации UART, но попробуйт... Sep 24 2008, 18:12 Daria Цитата(rezident @ Sep 24 2008, 22:12) Я н... Sep 25 2008, 18:43  rezident Цитата(Daria @ Sep 26 2008, 00:43) Ну, те... Sep 25 2008, 19:30   Daria Цитата(rezident @ Sep 25 2008, 23:30) Пок... Sep 26 2008, 15:21 VAI ЦитатаКварц, кстати, подходящий нашла у Murata - C... Sep 25 2008, 06:57 rezident Ну вот она и ошибка. Первой командой инициализации... Sep 26 2008, 15:33 Daria Цитата(rezident @ Sep 26 2008, 19:33) Ну ... Sep 29 2008, 19:16  rezident Цитата(Daria @ Sep 30 2008, 01:16) не-а, ... Sep 29 2008, 20:23   Daria Цитата(rezident @ Sep 30 2008, 00:23) Дел... Sep 30 2008, 19:00    rezident Цитата(Daria @ Oct 1 2008, 01:00) NData -... Sep 30 2008, 19:49     Daria Кодtypedef struct CharBuffer
{
unsigned char* Dat... Sep 30 2008, 20:26      rezident Цитата(Daria @ Oct 1 2008, 02:26) но так ... Sep 30 2008, 23:05       Daria Цитата(rezident @ Oct 1 2008, 03:05) Поче... Oct 1 2008, 18:23        rezident Цитата(Daria @ Oct 2 2008, 00:23) Да, но ... Oct 1 2008, 19:34         Daria Цитата(rezident @ Oct 1 2008, 23:34) Если... Oct 2 2008, 19:37 VAI Кстати, по уартам, я как-то выкладывал свои исходн... Oct 3 2008, 01:12 Daria Цитата(VAI @ Oct 3 2008, 05:12) Кстати, п... Oct 4 2008, 17:01  Daria Опять я теперь нужен еще буфер - для АЦП. посмот... Oct 5 2008, 15:42   Daria И еще Мне нужно обмениваться с двумя устройствам... Oct 5 2008, 19:35    Dog Pawlowa Цитата(Daria @ Oct 5 2008, 22:35) И еще ... Oct 6 2008, 06:04     Daria Цитата(Dog Pawlowa @ Oct 6 2008, 10:04) О... Oct 6 2008, 17:45      rezident Цитата(Daria @ Oct 6 2008, 23:45) одно ус... Oct 6 2008, 19:04       Daria Цитата(rezident @ Oct 6 2008, 23:04) Личн... Oct 7 2008, 17:09        rezident Цитата(Daria @ Oct 7 2008, 23:09) Ага, а ... Oct 7 2008, 17:41         Daria Цитата(rezident @ Oct 7 2008, 21:41) В IA... Oct 7 2008, 18:12          rezident Цитата(Daria @ Oct 8 2008, 00:12) Все же ... Oct 7 2008, 19:07           Daria Цитата(rezident @ Oct 7 2008, 23:07) Либо... Oct 10 2008, 20:23
3 страниц
1 2 3 >
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|