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

Dx!

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

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

  • Посещение

Весь контент Dx!


  1. USB Virtual COM mega32u4

    Апноты атмела не очень хорошы. Точнее очень нехороши. Рекомендую пощупать LUFA - там получше почти всё.
  2. ATmega32U4 - работа с ШИМ

    Да. Синхронный вырпямитель с USB? 8)
  3. Оно - обычный AVR. Чем угодно.
  4. Я тоже думаю что всё на одном чипе будет лучше - но рекомендую не 90USB а всёже u2/u4 (mega32u4 например) - они поновее, подешевле, получше.
  5. modbus и avr

    Успешно его применяю. Тяжеловат для младших AVR и не всё нужно, но в 16+кб камни ложится хорошо.
  6. avreal и win7 64-бит

    Пробуйте не номер порта а адрес порта. У меня в XP также не работало по номеру с PCI-LPT
  7. avreal

    У меня была поджаренная высоким напряжением (27 пришло на INT1) m162 - читалась, писалась, верифицировалась. Но где-то в самом начале программы мертво висла. Замена вопрос решила.
  8. Нет. ATmega128RFA1 уникальна по многим параметра. 16MHz у ней с 1.8V.
  9. avreal

    Да, согласен. Возможно даже эти моменты хорошо бы настраиваемыми делать (джамперами или ещё как) - много всякого софта поддерживает ft2232 но почти весь он не позволяет свободно настраивать ножку включения шинника. Тот же OpenOCD - ну почему бы не сделать настройку как в сабже? Зачем эти непонятные названия коробочек разных? Тогда бы нужно было менять только конфиг, он так и так нужен, а не перекомпилировать 8) (А кроме программаторов ещё есть куча софта под Boundary scan и там те же виллы - ft2232 есть, настройки нет.) И да - про мой проект - там цепочка слишком длинная получилась. На 3MHz ещё работает, а вот на 6MHz уже нет. Идет сдвиг на один бит, и, соответственно, житагу рвёт крышу. Так что задержки тоже нужно иметь в виду. Както он игнорит эти параметры. Можно совсем убрать, можно левые написать - один фиг работает. interface ft2232 ft2232_device_desc "AVR SPI Programmer A" ft2232_layout avr_spi jtag_khz 3000
  10. avreal

    Я в своё время это дело промухал, но и пересобрать OpenOCD с поддержкой моей (да и любой) коробочки оказалось не так сложно как кажется. Один фиг его собирать если не хочется ставить левый драйвер (а его ставить не хочется ну совсем) Проект под PCAD http://xdevs.com/kb/dx/ft2232/FT2232.AVReaL.rar Тупо копировать наверно не следует, но вполне себе вариант для начала. Делал бы я его сейчас - ещё бы и драйвер 485-го на второй канал привинтил бы - часто нужен.
  11. Прошу прощения, ошибся. http://www.analog.com/en/interface/rs-485/...ts/product.html <- этот со своим интегрированным питанием. Если вопрос бюджета не стоит остро - очень удобное решение.
  12. http://www.analog.com/en/interface/rs-485/...ts/product.html Изолированный 485 со своим питанием. Удобно и надёжно.
  13. DS18b20 и Atmega128

    Или выделить четыре ножки а не одну, если предполагается замена.
  14. DS18b20 и Atmega128

    И ещё - а какие адреса у "призраков"? Это может помочь найти грабли - один фиг вам нужно эти адреса запоминать, как заметили выше. Я эти датчики опрашивал по одному через SKIP ROM для определения адреса. Если геморрой с адресами не нужен, и датчиков не много - можно их по одному повесить, каждый на свою шину.
  15. DS18b20 и Atmega128

    А что мешает работать прямо по адресам и не использовать неработающую функцию поиска?
  16. Avreal32 - не пашет

    А не мог сам кабель маленько подгореть? Там же шинник - может ему питания не хватает, или какая особенность в самом LPT? Осциллоскопом посмотреть до и после. Ну и тестовый переходничёк для BB сделать, не долго же.
  17. Проблемы с DS18B20

    Писать вам ни кто ничего не будет. В интернете полно приличных сорцов. Отдаю то, с чем работаю я. Имхо - опросы в основном теле программы а динамическую индикацию делать через прерывания по таймеру. Из вашего кода непонятно что вы делаете со считанной и проверенной CRC? Выкидываете ли вы неверные значения? Даже если бы чтение удавалось читать раз из десяти - с проверкой CRC работало бы прилично. //-------------------------------------------------------------------------------------------- // Безадресно запускаем преобразование во всех DS18b20 на линии if (!OW_DetectPresence()) { OW_SendByte(OW_Net_SkipNetAddress); OW_SendByte(OW_DS18B20_Func_CONVERT_T); } //-------------------------------------------------------------------------------------------- // По адресу (если датчик всего один то можно и безадресно) считываем. Если CRC8 Не совпадает, // то вместо температуры передаем "код ошибки" 0x4000 SomeVarT = 0x4000; if (!OW_DetectPresence()) { uint8_t i; OW_SendByte(OW_Net_MatchNetAddress); for (i=0; i!=8; i++) { OW_SendByte(pgm_read_byte( &DS18B20_Addr[i] )); } OW_SendByte(OW_DS18B20_Func_READ_SCRATCHPAD); for (i=0; i!=4; i++) { Some16bitBuf[i] = (OW_ReceiveByte()) + (OW_ReceiveByte()<<8); } Some16bitBuf[i] = OW_ReceiveByte(); //CRC8 if ((crc8( (uint8_t *)&Some16bitBuf[i-4], 8)) == Some16bitBuf[i]) SomeVarT = usRegInputBuf[i-4]; } //-------------------------------------------------------------------------------------------- // Пример вывода на текстовый LCD // Выводим для 16.25 градусов цельсия цифру 1625 if(SomeVarT!=0x4000) LCD_PrintfS16Dec6_100(((int32_t)((int16_t)SomeVarT)*100)/16); DS18b20.rar
  18. Проблемы с DS18B20

    -1 приходит без ошибок в CRC ? Видимо помеха не в интерфейсе а в питании. UPD: Программа ужасна... что вы считаете и с чем сравниваете? !w1_dow_crc8(&__ds18b20_scratch_pad,9); <-- это что? Ужас ужас... Есть же приличные соры в сети...
  19. Проблемы с DS18B20

    Помеха. Смотреть осциллоскопом. CRC8 не считаем раз -1 ? Зря, зря.
  20. gcc для AVR

    А чем макросы _delay_ms() и _delay_us() что идут с WinAVR плохи?
  21. PORTB = (PIND^0xFF) >> 4; 80: 89 b1 in r24, 0x09; 9 82: 80 95 com r24 84: 82 95 swap r24 86: 8f 70 andi r24, 0x0F; 15 88: 85 b9 out 0x05, r24; 5 Оптимизация 8)
  22. Как заключение - остановился на варианте somevar = (uint8_t)(~PIND) >> 4; ибо ---------------------------------------------------- PORTB = (~PIND) >> 4; 80: 89 b1 in r24, 0x09; 9 82: 90 e0 ldi r25, 0x00; 0 84: 80 95 com r24 86: 90 95 com r25 88: 95 95 asr r25 8a: 87 95 ror r24 8c: 95 95 asr r25 8e: 87 95 ror r24 90: 95 95 asr r25 92: 87 95 ror r24 94: 95 95 asr r25 96: 87 95 ror r24 98: 85 b9 out 0x05, r24; 5 ---------------------------------------------------- PORTB = ((~PIND) >> 4)&0xf; 80: 89 b1 in r24, 0x09; 9 82: 90 e0 ldi r25, 0x00; 0 84: 80 95 com r24 86: 90 95 com r25 88: 95 95 asr r25 8a: 87 95 ror r24 8c: 95 95 asr r25 8e: 87 95 ror r24 90: 95 95 asr r25 92: 87 95 ror r24 94: 95 95 asr r25 96: 87 95 ror r24 98: 8f 70 andi r24, 0x0F; 15 9a: 85 b9 out 0x05, r24; 5 ---------------------------------------------------- PORTB = ((~PIND)&0xff) >> 4; 80: 89 b1 in r24, 0x09; 9 82: 80 95 com r24 84: 90 e0 ldi r25, 0x00; 0 86: 95 95 asr r25 88: 87 95 ror r24 8a: 95 95 asr r25 8c: 87 95 ror r24 8e: 95 95 asr r25 90: 87 95 ror r24 92: 95 95 asr r25 94: 87 95 ror r24 96: 85 b9 out 0x05, r24; 5 ---------------------------------------------------- PORTB = ((uint8_t)(~PIND)) >> 4; 80: 89 b1 in r24, 0x09; 9 82: 80 95 com r24 84: 82 95 swap r24 86: 8f 70 andi r24, 0x0F; 15 88: 85 b9 out 0x05, r24; 5 ---------------------------------------------------- PORTB = (uint8_t)(~PIND) >> 4; 80: 89 b1 in r24, 0x09; 9 82: 80 95 com r24 84: 82 95 swap r24 86: 8f 70 andi r24, 0x0F; 15 88: 85 b9 out 0x05, r24; 5 ---------------------------------------------------- uint8_t tmpD; tmpD = PIND; 80: 89 b1 in r24, 0x09; 9 tmpD = ~tmpD; PORTB = tmpD >> 4; 82: 80 95 com r24 84: 82 95 swap r24 86: 8f 70 andi r24, 0x0F; 15 88: 85 b9 out 0x05, r24; 5 ---------------------------------------------------- Даже swap а не тупо сдвиг. Компиленно с -O2.
  23. Неужели в IAR или кейле этот (или любой другой стандартный) регистр имеет другое имя или не восемь бит без знака? 0_0
  24. Просто мы же в разделе AVR, мне казалось что особо указывать что есть PIND не нужно. Хотя (*(volatile uint8_t *)(mem_addr)) я не нашёл - оно где?
  25. Да, всё так, большое спасибо. Теперь всё встало на свои места, всё понятно. Прошу прощения за причинённые неудобства 8)
×
×
  • Создать...