Перейти к содержанию
    

AlHakim

Участник
  • Постов

    65
  • Зарегистрирован

  • Посещение

Весь контент AlHakim


  1. в принципе дальше в коде стоят ADC1->SQR1 |= (uint32_t)((6-1) << 20); ADC1->CR2 |= ADC_CR2_SWSTART | ADC_CR2_DMA; //ADC_CR2_ADON| //первый старт, н нужен, потому что как только разрешил DMA оно сразу стартует но вы не поверите. и без них работает, потому что ранее записано кол-во перобразований, осуществяемых через DMA и выставлено прерывание. А может быть это просто мистика, но оно работает :) DMA1_Channel1->CNDTR = 18; DMA1_Channel1->CCR |= DMA_CCR_EN | DMA_CCR_TCIE
  2. вот недавно сам столкнулся с таким же. Нашел решение на этом же форуме. А именно сбрасывать регулярные каналы. И все заработал вот мой код //=== Прерывания DMA ADC1 ===// void DMA1_Channel1_IRQHandler(void) { ADC1->CR2 &= ~ADC_CR2_DMA;// | ADC_CR2_ADON); // выключаем DMA запросы АЦП ADC1->SR &= ~(ADC_SR_STRT); // сброс флага Overrun и старта преобразования ADC1->SQR1 &= ~ADC_SQR1_L; // сброс количества последовательных преобразований [сброс указателя канала] DMA1_Channel1->CCR &= ~ (DMA_CCR_EN |DMA_CCR_TCIE); //// деактивация 1го потока DMA1 if(DMA1->ISR & DMA_ISR_TCIF1) EventFlags.Bit.ADCConvFinish = 1; // проверяем прерывание по завершению передачи блока DMA1->IFCR=DMA_IFCR_CGIF1|DMA_IFCR_CTCIF1|DMA_IFCR_CHTIF1|DMA_IFCR_CTEIF1; //снимаем биты в DMA1->ISR (пока все) } //=== Прерывания TMR2 ===// void TIM2_IRQHandler(void){ // Период - 160 мксек при частоте сети 50 Гц. vu32 aa, cosa, cosb, cosc; vu8 i; TIM2->SR &= ~TIM_SR_UIF; // Снять флаг прерывания. DMA1_Channel1->CNDTR = 18; // указываем число пересылаемых данных 3 канала по 6-и перобразовании DMA1_Channel1->CCR |= DMA_CCR_EN | DMA_CCR_TCIE;// запустили очередное преобразование ADC (должны успеть,ааа)
  3. HI-TECH C

    Если доступа нет читай внимательно http://electronix.ru/forum/index.php?showt...=17862&st=0 пост 65 от LordN
  4. Миша поспрашивай Диму Насырова, он там работал, вот, я телефон в личку скину
  5. Fargo Maestro 100 (внутри модем q2406), а наружу выдается 15-и контактный разъем
  6. Замкнул вывод Boot на землю через резистор 1кОм (вывод 3 на 9 PIN D-SUB connector) в программе DWLWin скорость 115200 (ниже нет), Type CPU: Wismo 2-3(q2406B) нажимаю старт ( кнопку Reset тоже замыкал кратковременно на землю во время процесса) и через несколько попыток выдает сообщение: "Boot failure: connotconnect with target" Что я не так делаю, подскажите, плиз.... А еще просьба ко все, у кого есть полный комплект прошивок под q24006B
  7. так проще зайти и самому проверить :), а еще можно рецензию на сайте poufe.ru почитать, если есь :) отзывов нет :(
  8. попробую, на всех доступных скоростях проверял. результат один и тотже
  9. досталась работа, восстановить работоспособоность двух-трех модемов, ни на одну команду он не отвечает, вернее шлет мусор и, судя по всему boot-a в них нет... как реанимировать или какая хотя бы последовательность проверки должна быть ??
  10. эх у меня в четверг волейбол, неужели придется пропустить
  11. а можно отредактировать схему переведя ее в ASCII, вроде бы просто скопом в любом редакторе :), не забыв, конечно , копию сделать на всякий случай
  12. есть еще Kurt Вот вроде бы утреннюю перекличку произвели :)
  13. ну так кредита не взять, при официальной ЗП 8-9т, да к тому же кто сказал что тебе вот так сразу дадут тот максимум , который был озвучен :), работодатель всегда оставит для себя возможность увеличить ЗП работника в указанных рамках, т.е. реально можно ожидать 18т А научится работать и навыка набрать, можно в Солитоне, в Полигоне, где еще, в Геофизике, больше я не знаю, ну разве еще ГА Телеком.
  14. Урал-Софт, работа конечно интересная но как всегда надо выбирать между "Интересно" и деньгами, но честно сказать не хочется опять получать на испытательный срок маленькую ЗП, выкладываясь по полной и к тому же ЗП ограничена до 22т и ни-ни выше, к тому же она серая, насколько я понял 30%только объявляется, но это секрет, поэтому тсс-с да для war4one и для всех из Уфы, работа на территории завода Промсвязь. я и сам чуть не повелся из-за этого... Вот если бы условия как-то пересмотрели. то и работника бы нашли, и проект бы быстрее закрутился. а получается, что не шибко нужно.
  15. Modbus master

    можно посмотреть в сторону https://savannah.nongnu.org/projects/modblib/ http://www.protocessor.com/techsupport/signup.asp http://www.edaboard.com/ftopic27431.html хотя и не под LPC, но... переделать то легко
  16. текучка есть как и везде, разработки мало... да и не треба разработчики. как я понял, программисты на c# вроде бы набирают. ну и программисты - эмбедеры тоже не помещали бы...
  17. Предполагаемый уровень месячного дохода: от 1 000 до 1 500 USD ...ну тут не все так радужно, пообещать то могут много... Надо будет мне выбивать такую ЗП :), н езря же пишут, значит могут и дать.
  18. а вот ругаться не стоит... это мы все умеем, дай только волю
  19. да все этоя знаю. просто если сравнивать с др. отладочными средствами. каким-то убогим показался этот icd2. ну это мое мнение, и особо не настаиваю на нем
  20. кварц работает, плата - отладочный kit от microchip? в калодку установлен проц watch пустой, хождение по "шагам" - происходит очень и очень медленно, это у всех так или же ...? Если говорить субъектино, то при такой работе icd2 надо иметь крепкие нервы и усидчивость :). Вообщем забросил я ICD2, как неспособствующий отладке хлам..., хотя кто-то в конференции говорил, что отлаживает на полной скорости, без ограничений
  21. тормоза при отладке с ICD2

    Это у всех так или я что-то не то делаю ??, как можно это исправить, если это в наших силах :)
  22. не удается запустить модуль захвата CCP2. А вот CCP1 можно, но нужен второй, как быть где непонимание ?? компилятор HI-Tech 9.5PL3 __CONFIG(1,IESODIS & FCMDIS & ECCLKO & XT); //HS/HSPLL-HS with PLL enabled // #define ECCLKO 0xF4FF // EC, RA6=CLKOUT __CONFIG(2,BORDIS & PWRTEN & WDTDIS);// & WDTEN & WDTPS128); //BORDIS __CONFIG(3,CCP2RB3 & PBDIGITAL & LPT1DIS & MCLREN); __CONFIG(4,XINSTEN & STVREN & DEBUGDIS & LVPDIS); __CONFIG(5,CP0 & CP1 & CP2 & CP3); //__CONFIG(6,WP0 & WP1 & WP2 & WP3 & WPB & WPC); //__CONFIG(7,TRU); volatile unsigned char str1[10]; volatile near unsigned char EventFlags,EventFlags2, EventFlags3; // // переменные датчика температуры // unsigned int new_cap, old_cap, OldTemp; unsigned char IndexTemp = 0; float ArrayTemp[8]; //массив значений с термодатчика для усреднения скользящим средним void main(void) { InitPeripherial(); while(1){} } void interrupt low_priority LOW_ISR(void) { unsigned char TmpByte,TmpByte1; float TempSensor; // // прерывание по SPI (обслуживание АЦП) // #if (_TempSensorUseCCP2_ == 1) if(CCP2IE && CCP2IF){ asm("btg latd,1"); new_cap = CCPR2; TMR3 = 0; CCP2IF = 0; //cсбрасываем флаг возникновения завхвата CCP2CON ^= 0x01; //захват по каждому переднему/заднему фронту 0x05/0x04 if (CCP2M0){ //после принятия паузы вычисляем температуру #else if(CCP1IE && CCP1IF){ new_cap = CCPR1; TMR3 = 0; CCP1IF = 0; //cсбрасываем флаг возникновения завхвата CCP1CON ^= 0x01; //захват по каждому переднему/заднему фронту 0x05/0x04 if (CCP1M0){ //после принятия паузы вычисляем температуру #endif asm("btg latd,2"); TempSensor = 400*(unsigned long)new_cap; // T=(235-(400*T1/T2)); TempSensor/= old_cap; TempSensor = 235.0 - TempSensor; ArrayTemp[IndexTemp] = TempSensor; IndexTemp = ++IndexTemp & 0x07; // EventFlags3 |= fRxCaptureTermo; } else // после принятия импульса old_cap = new_cap; // store this capture value } } void InitPeripherial(void) { ////////////////////////////////////////////////////////////////////////// // Настройка регистров для задание режима работы (послед по мануалу :)) ////////////////////////////////////////////////////////////////////////// // OSCCON = 0x70; //Настройка рабочего генератора процессора с частотой 8 МГц с выходом Fosc/4 на RA6 INTCON = 0; ADCON1 = 0x0F; //All PORTB pin - is digital (PB3..PB0) #if (_TempSensorUseCCP2_ == 1) //CCP1 используем для датчика тепературы TRISA = 0x09; TRISB = 0x0F; TRISC = 0xD7; TRISD = 0x00; TRISE = 0x00; #else TRISA = 0x09; TRISB = 0x0F; TRISC = 0xD3; TRISD = 0x00; TRISE = 0x00; #endif PORTA = 0xFF; PORTB = 0x00; PORTC = 0x90; PORTD = 0x00; PORTE = 0xFF; LATA = 0xFF; LATB = 0x00; LATC = 0x90; LATD = 0x00; LATE = 0xFF; //---- Initialise ADC ---- //выравнивание Result-а по левому. краю, (не запол. млад. разряды ADRESL) и режим 0xb - три аналоговых вх. AI0..AI3) ADCON0 = 0x00; //-- Reset to defaults fosc/32 AN0 ADCON1 = 0x1B; //VCFG0 | PCFG3 | PCFG1 | PCFG0; //RA1 и RA3 - аналоговый, RA3 - REF // ADCON2 = 0x08; //ADFM | ACQT1 | ACQT0; //время заряда кондера 6Tad Tconv = Fos/2 ADCON2 = 0x3E; ADIE=0; // not interrupt driven ADON=0; //-- Turn ADC ON INTCON2 = 0x00; INTCON3 = 0x00; //запретили прерывания по вх. Int 1,2 PIR1 = 0x00; //флаги периферийных прерываний. PIR2 = 0x00; //флаги периферийных прерываний. #if (_TempSensorUseCCP2_ == 1) //CCP2 используем для датчика тепературы PIE1 = 0x60; //разрешения периферийных прерываний. //b.7 PSPIE : Parallel Slave Port Read/Write Interrupt Enable bit(1) //b.6 ADIE : A/D Converter Interrupt Enable bit //b.5 RCIE : Разрешение прерывания от приемника USART //b.4 TXIE : Разрешение прерывания от передатчика USART //b.3 SSPIF : Флаг прерываний от модуля MSSP //b.2 CCP1IE: CCP1 Interrupt Enable bit //b.1 TMR2IE: Разрешение прерывания по переполнению таймера TMR2 //b.0 TMR1IE: Разрешение прерывания по переполнению таймера TMR1 PIE2 = 0x01; //разрешения периферийных прерываний. //b.7 OSCFIE: Oscillator Fail Interrupt Enable bit //b.6 CMIE : Comparator Interrupt Enable bit //b.5 Reserved 0 //b.4 EEIE: Data EEPROM/Flash Write Operation Interrupt Enable bit //b.3 BCLIE: Bus Collision Interrupt Enable bit //b.2 2 HLVDIE: High/Low-Voltage Detect Interrupt Enable bit //b.1 TMR3IE: TMR3 Overflow Interrupt Enable bit //b.0 CCP2IE: CCP2 Interrupt Enable bit #else PIE1 = 0x64; //разрешения периферийных прерываний. PIE2 = 0x00; //разрешения периферийных прерываний. #endif IPR1 = 0x20; //приоритета периферийных прерываний. //b.7 PSPIP : Parallel Slave Port Read/Write Interrupt Priority bit(1) //b.6 ADIP : A/D Converter Interrupt Priority bit //b.5 RCIP : Выбор приоритета прерывания от приемника USART //b.4 TXIP : Выбор приоритета прерывания от передатчика USART //b.3 SSPIP : Выбор приоритета прерывания от модуля MSSP //b.2 CCP1IP: CCP1 Interrupt Priority bit //b.1 TMR2IP: Выбор приоритета прерывания TMR2 (низкий) //b.0 TMR1IP: Выбор приоритета прерывания TMR1 (высший) IPR2 = 0x00; //приоритета периферийных прерываний. //b.7 OSCFIP: Oscillator Fail Interrupt Priority bit //b.6 CMIP : Comparator Interrupt Priority bit //b.5 Reserved 0 //b.4 EEIP : Data EEPROM/Flash Write Operation Interrupt Priority bit //b.3 BCLIP : Bus Collision Interrupt Priority bit //b.2 HLVDIP: High/Low-Voltage Detect Interrupt Priority bit //b.1 TMR3IP: TMR3 Overflow Interrupt Priority bit //b.0 CCP2IP: CCP2 Interrupt Priority bit RCON = 0x80; //b.7 IPEN : приоритетная система прерываний включена // TMR1 - обладает высшим приоритетом // // Настраиваем модуль захвата ССP2 для работ ы с темп. датчиком TMP04 // #if (_TempSensorUseCCP2_ == 1) //CCP1 используем для датчика тепературы CCP2CON = 0x05; //захват по каждому переднему фронту //0100 = захвата по каждому заднему фронту сигнала //0101 = захват по каждому переднему фронту сигнала //0110 = захват по каждому 4-му переднему фронту сигнала #else //0111 = захват по каждому 16-му переднему фронту сигнала CCP1CON = 0x05; #endif T3CCP2 = 1; //Fos/4, модуль используется для модулей CCP1 и CCP2 TMR3 = 0; //таймерный тик по ... мкс TMR3ON = 1; // и включили таймер 3 INTCON = 0xC0; //allow interrupts !!!!! вкл. INT0IE }
  23. Вообщем-то разобрался :), как всегда все самому приходится делать но вопрос о других вариантах преобразования их HEX в Десятичный формат отстался
  24. в основной программе вызывается функция Bin2BCD16(), и компилятор выдает ошибки syntax erroк к примеру на строчку asm("swapf _ValLo,w,0"); В чем ошибка, или может у кого есть функция перевода двухбайтного значения в двоично-десятичное, желательно с небольшим верменем исполнения (этот исходник конвертит 0xffff в 65535 меньше чем за 200 циклов CPU) переманные объявлены след. образом: near unsigned char ValLo, ValHi, TenK, Thou, Hund, Tens, Ones; <code> //////////////////////////////////////////////////////////////////////// // Binary-to-BCD. Written by John Payson. // Take number in AARGB0:AARGB1; Result decimal in TenK:Thou:Hund:Tens:Ones /////////////////////////////////////////////////////////////////////// void Bin2BCD16() { //TenK ds 1 ;яЁхфёЄртыхэшх 1-Єш сшЄ-юую ўшёыр т ЇюЁьрЄх 2.5 //Thou ds 1 ;срщЄ фтюшўэю-фхё Єшўэюую //Hund ds 1 //Tens ds 1 //Ones ds 1 asm("swapf _ValLo,w,0"); asm("iorlw 0xf0"); asm("movwf _Thou,0"); asm("addwf _Thou,f,0"); asm("addlw 0xE2"); asm("movwf _Hund,0"); asm("addlw 0x32"); asm("movwf _Ones,0"); asm("movf _ValLo,w,0"); asm("andlw 0x0F"); asm("addwf _Hund,f,0"); asm("addwf _Hund,f,0"); asm("addwf _Ones,f,0"); asm("addlw 0xE9"); asm("movwf _Tens,0"); asm("addwf _Tens,f,0"); asm("addwf _Tens,f,0"); asm("swapf _ValHi,w,0"); asm("andlw 0x0F"); asm("addwf _Tens,f,0"); asm("addwf _Ones,f,0"); asm("rlncf _Tens,f,0"); asm("rlncf _Ones,f,0"); asm("comf _Ones,f,0"); asm("rlncf _Ones,f,0"); asm("movf _ValHi,w,0"); asm("andlw 0x0F"); asm("addwf _Ones,f,0"); asm("rlncf _Thou,f,0"); asm("movlw 0x07"); asm("movwf _TenK,0"); //; At this point, the original number is equal TenK*10000+Thou*1000+Hund*100+Tens*10+Ones //;if those entities are regarded as two's compliment binary. To be precise, all of //;them are negative except TenK. Now thenumber needs to be normal- ized, but this //;can all be done with simple byte ; arithmetic. asm("movlw 0x0A"); //; Ten //Lb1: asm("_Lb1: "); asm("addwf _Ones,f,0"); asm("decf _Tens,f,0"); asm("btfss status,c"); asm("goto _Lb1"); //Lb2: asm("_Lb2: "); asm("addwf _Tens,f,0"); asm("decf _Hund,f,0"); asm("btfss status,c"); asm("goto _Lb2"); //Lb3: asm("_Lb3: "); asm("addwf _Hund,f,0"); asm("decf _Thou,f,0"); asm("btfss status,c"); asm("goto _Lb3"); //Lb4: asm("_Lb4: "); asm("addwf _Thou,f,0"); asm("decf _TenK,f,0"); asm("btfss status,c"); asm("goto _Lb4"); // asm("retlw 0"); } </code>
  25. нужена фирма производитель и марка dc/dc преобразователя мощностью от 5 до 30Вт диапазон входных напряжений 10-70(80) теператур -40+85, размер не больше 40х50 желательно с поверхностным монтажем на плату Ну так же по цене приемлимый. Предвижу посылы :) на Александр электрик, может что другое есть ??
×
×
  • Создать...