Jump to content

    

tier

Участник
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

0 Обычный

About tier

  • Rank
    Участник
  1. ATxMega32D4

    Все заработало, скомпилировал другой студией и все измеряет... У меня была 4.18 поставил 4.19 с тулчейном на другой машине, скомпилировал, прошил и все измеряет.... Тот же код компилю в 4.18 - не работает....... Всем спасибо......
  2. ATxMega32D4

    спасибо, это у меня повылазило....)))) спасибо за советы.... исправил и исправлю.... кстати в апноте AVR1314 атмеловцы сначала запускают RTC, а потом настраивают регистры..... делал.... не помогает так вот в том и проблема, что в отладчике то по нолям было.... в основном проекте используется и прием, когда переносил не убрал.... тем более тут не принципиально, но убрал.... как бы АЦП вообще не хочет ничего измерять, хочу попробовать еще другие чипы, может что-то с чипами моими....
  3. ATxMega32D4

    использую 16-разрядный регистр, пробовал по отдельности младший и старший (складывая со сдвигом), безрезультатно Вот сделал отдельно проектик только для АЦП.... По прерыванию RTC (раз в секунду) вызывается функция ADC_GetValue, результат в USART, все время по нолям..... USART 9600bps, CPU clock 32MHz ADC_test.zip
  4. ATxMega32D4

    да сейчас попробую.... оставлю в проекте только АЦП и USART, чтобы результаты видеть.... меня ввело в заблуждение, что если я не разрешу прерывания по готовности, то и флаг не будет устанавливаться, регистр то Interrupt Flag registers собственно мне что так, что так не помогает, я многое уже перепробовал... Чтение производится просто по готовности измерений, прерывания АЦП я нигде не использую.....
  5. ATxMega32D4

    сделал, в ADC_Init добавил PORTA.PIN6CTRL = PORT_ISC_INPUT_DISABLE_gc; тоже не помогает не пробовал, потому как тут непосредственно с перефирией работаю, кода мизер у кого-нибудь есть эта самая 32d4 ревизии A, просто errata конечно большая, но не вообще ж не работать АЦП...
  6. ATxMega32D4

    На входе контролирую мультиметром, напряжение есть 1.22В да , там где инициализация делаю разрешение уровней прывания PMIC.CTRL |= PMIC_MEDLVLEN_bm; PMIC.CTRL |= PMIC_HILVLEN_bm; JTAGa нет. Я уже пробовал и в дифференциальном режиме измерять подключая Negative Pin к земле. Ничего не меняется. Такое впечатление что АЦП вообще не работает, не пойму....
  7. ATxMega32D4

    Подскажите кто чем сможет, что-то бьюсь а результата нет. Есть ATxMega32D4, на начальном этапе пытаюсь просто измерить постоянное напряжение (~1.2В) которое подается к Pin2. Ф-я ADC_GetValue() вызывается по требованию программы (необходимость измерения в данный момент) Независимо от подключенного измеряемого напряжения выдает 0xC0...0xC3 в случае UnsignedMode и 0x02...0x06 в случае SignedMode (ADC_CONMODE_bm) void ADC_Init(void) { PORTA.DIRCLR = PIN6_bm; // Настраиваем нужный вход // Устанавливаем разрядность и режим Signed Mode ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc | ADC_CONMODE_bm; ADCA.REFCTRL = ADC_REFSEL_AREFB_gc; // Внешний ИОН 2,36В, подключен к PB0 Pin4 // Настраиваем мультиплексор - Канал 0 ADCA настроен на внешний несимметричный вход ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc; ADCA.CH0.MUXCTRL |= ADC_CH_MUXPOS_PIN6_gc; // Positive Input ADC6 PA6 Pin2 ADCA.CTRLA |= ADC_ENABLE_bm; // Включаем АЦП ADCA.PRESCALER = ADC_PRESCALER_DIV256_gc; // Делитель частоты (32МГц/256=125кГц) // Прерывание по завершению преобразования, уровень прерываний - средний ADCA.CH0.INTCTRL = ADC_CH_INTMODE_COMPLETE_gc | ADC_CH_INTLVL_MED_gc; } uint16_t ADC_GetValue(void) { uint16_t i, tmp, sum = 0; for (i=0; i<16; i++) // Number of samples { ADCA.CTRLA |= ADC_CH0START_bm; // ADC Start Conversion while(ADCA.CH0.INTFLAGS & ADC_CH_CHIF_bm); ADCA.CH0.INTFLAGS |= ADC_CH_CHIF_bm; // Clear interrupt flag tmp = ADCA.CH0RES; sum += tmp; } sum /= 16; return sum; } в чем может быть проблема
  8. xMega D PORTA & PORTB

    Я его пока и не трогал, потому как АЦП или компаратор пока не настраивал, смутил просто тот факт что на других портах все норм, а эти два что получается от AVCC полностью частично питаются, я думал, что если использовать АЦП тогда да, попробую... Действительно, вот это да.....
  9. xMega D PORTA & PORTB

    Подскажите пжл почему на хMega если использовать PORTA и PORTB как GPIO, лог. единица - 2.4V (при питании 3.3V). Подозреваю, что это связано с АЦП а точнее с Voltage Reference, которое не должно быть больше чем Vcc - 0.6V. Или есть еще что-то? Или я не прав....
  10. Вопрос по EEPROM

    Сергей, спасибо Вам большое.... помогли разобраться, вопрос исчерпан.... и Вам тоже спасибо, сразу просто не понял....
  11. Вопрос по EEPROM

    так тоже нельзя, т.к. temp - это указатель типа EData_t и компилятор выдаст варнинг о несовместимости типов как минимум....
  12. Вопрос по EEPROM

    то я специально закоментил, потому как если раскоментировать то не скомпилится.... в этом и вопрос собственно.....
  13. Вопрос по EEPROM

    Всем Добрый день. Ребята, подскажите как мне можно поступить в этом случае: #include <avr/io.h> #include <avr/pgmspace.h> typedef struct { void *FPointerStruct; // указатель на следующую структуру uint8_t FVariable; } FData_t; FData_t FData1, FData2; // объявим структуры FData_t PROGMEM FData1 = {(void*)&FData2, 0xAA}; // поместим во Flash FData_t PROGMEM FData2 = {(void*)&FData1, 0xBB}; uint8_t u08_Data1, u08_Data2; int main(void) { FData_t *temp; temp=(FData_t *)&FData1; // текущая структура FData1 u08_Data1=pgm_read_byte(&(temp->FVariable)); // читаем 0xAA temp=(FData_t *)pgm_read_word(&temp->FPointerStruct); // текущая структура FData2 u08_Data2=pgm_read_byte(&(temp->FVariable)); // читаем 0xBB } а вот в EEPROM у меня так же не получается #include <avr/io.h> #include <avr/eeprom.h> typedef struct { void *EPointerStruct; uint8_t EVariable; } EData_t; EData_t EData1, EData2; // объявим структуры EData_t EEMEM EData1 = {(void*)&EData2, 0xAA}; // поместим в EEPROM EData_t EEMEM EData2 = {(void*)&EData1, 0xBB}; uint8_t u08_Data1, u08_Data2; int main(void) { EData_t *temp; temp=(EData_t *)&EData1; // текущая структура EData1 u08_Data1=eeprom_read_byte(&(temp->EVariable)); // читаем 0xAA //temp=(EData_t *)eeprom_read_word(&temp->EPointerStruct); // вот здесь проблема u08_Data2=eeprom_read_byte(&(temp->EVariable)); // опять читаем 0xAA } Конечно можно просто сделать ++temp, но это не подходит, потому что перейдет на структуру после последней.... и попадем в область где уже нет ничего.... Компилятор avr-gcc. Спасибо.
  14. Есть функциональный аналог, сам им пользуюсь.
  15. Кабель USB-JTAG для FPGA и CPLD Xilinx. Функциональный аналог Полная поддержка ISE (включая версию 11.4), Chipscope, EDK 11.3. Автоматическое обновление. Поддержка 5V(TTL), 3.3V(LVCMOS), 2.5V, 1.8V и 1.5V. Поодержка всех Xilinx микросхем: Virtex FPGA Spartan FPGA XC9500/XC9500XL/XC9500XV CPLD CoolRunner XPLA3/CoolRunner-II CPLD XC18V00 ISP PROM Series Platform Flash XCF00S/XCF00P/XL PROM Series XC4000 Series FPGA. Протестирован. В комплекте кабель USB и кабель для JTAG. Цена 550грн.