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

adnega

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    3

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


  1. Дополню: ничего не мешает в начале программы делать так ldi temp, (1 << CLKPCE) out CLKPR, temp ldi temp, 0 out CLKPR, temp ldi temp, 0x61 out OSCCAL, temp для точной установки частоты. При этом CKDIV8 fuse вам уже не важен будет. Тут на форуме много раз темы с CLKPR поднимались (1, 2, 3, 4).
  2. Сброшен в ноль - это "запрограммирован". У AVR с этим не так просто разобраться. Попробуйте установить его в "1".
  3. Я с физлицами вообще не работаю. Все заказчики - коммерческие фирмы. Не госконторы, не инвесторы, не стартаперы какие-нибудь. Если я понимаю нужду, то нет проблем описать это понимание в ТЗ. Ответственность не снимается, она фиксируется. И что? Не всем нужно стремиться в тренды, кому-то приходится работать на результат, создавать системы, станки и прочие приблуды. Прям разговор художника с работягой завода ;) Признавайтесь, ваш утюг?
  4. А смысл, когда на те же $3 можно купить нормальный МК. Заказчику нужен результат, он описывает его в требованиях. Вы либо беретесь их выполнять, либо нет. Если взялся, то будь добр сделать именно то, что нужно Заказчику. Причем тут позиция заложника? Т.е. вы готовы прервать работу с Заказчиком по своему настроению, т.е. в простонародье "кинуть", раз вы не заложник? Кто-то дорожит своей репутацией и берет на себя ответственность, у того и заказчики вменяемые. А кто-то тяп-ляп и готово, в крайнем случае можно сказать "не получилось". Ералаш напоминает про утюг. Тема ушла далеко за рамки топика, но теперь многое становиться понятным.
  5. Это расширитель?! Написано что это CAN-контроллер с SPI-интерфейсом. А чем вам как исполнителю четкость требований мешает? Или черный ход оставляете для бегства в случае чего.
  6. Видимо, мне с заказчиками повезло. ТЗ не всегда можно заранее составить, но без четких требований, оформленных на бумаге у меня не принято.
  7. Написал один раз хороший код и везде пользуешься. У меня все проекты братья-близнецы. Зачастую новое изделие это копипаста из существующего кода и раскомментирование нужных дефайнов в h-файле. "Маленький код - маленькая продуктивность". Маленькая продуктивность, прошу прощения, у чего? У программиста? У изделия говорят про функционал, дык, он описан в ТЗ и полностью выполняется. Если продуктивность это аналог КПД, то тут все в порядке. Маленький код - маленькие затраты (причем код как правило уже существующий), а функционал из ТЗ. Делим пользу на затраты, и ваш подход проигрывает т.к. затраты высоки. Чтоб определиться с терминами и не возбуждать телепатов, сообщу, что речь ведется о проектах порядка 10 тыс. строк кода. За существенно большие и за крошечные рассуждать не берусь. У ТС как раз задачка озвученного порядка.
  8. Основной объем занимают пользовательские звуковые файлы. Шрифты внутри МК. Для этого проекта шрифт один объемом 2К. Есть проект где фонтпак под 128К. Закидывешь новый фонтпак на карточку и он его заливает по внутреннюю флеш. uSD хороша дружественностью пользователю, типа USB-флешки. Обращаю внимание, что я различаю код, данные и полный объем ПЗУ у МК. Сервера разные бывают, в т.ч. и не HTTP. Конфигурирование ведется через отдельный софт, в котором не только заливка конфигураций и диагностика сети умного дома, но еще и разработка самих алгоритмов для умного дома, размещение элементов на плане, ведение кабельных журналов и т.п.
  9. Скажем так: я с вами не согласен. Кто каким инструментом умеет пользоваться, тот им и должен работать. Изучили вы много сторонних библиотек - молодец - пользуйтесь ими. У меня много своих библиотек и я хорошо ими пользуюсь. На старой работе попробовал разок использовать чужой велосипед, т.к. руководство запретило изобретать свой, что ж потратил времени больше на изучение FreeRTOS, uIP, StdLib. И что самое обидное - из коробки не работает - нужно допиливать. А править чужую библиотеку, на мой взгляд, крайне неправильный подход. Просто для общего развития: какие критерии "серьезного кризиса в личной продуктивности"? Вдруг он у меня действительно есть. Мы очень сильно отошли от темы. Не думаю, что ТС использует или планирует использовать в будущем сторонние библиотеки. Мнения высказаны. Я считаю, что для озвученной задачи вполне хватит STM32F042F4 (меньше просто уже нет). Кто-то считает, что нужно закладывать камень с 2МБ флеши. Истина будет где-то посередине. Защита от чтения встроена в МК и устанавливается загрузчиком. Образ обновления защищает от дурака (чтоб не залить какой-нить текстовый файл и не отдать его на исполнение) - просто чтоб неокирпичить девайс. Защищать от копирования - не тот уровень поделия, чтоб его ломали. У меня карта работает в read-only. Зачем мне эта надежность? Я могу выкинуть карту и вставить новую за 500 руб (раз в 5 лет).
  10. Дык, на Али этого товару полно (ST-LINK V2) по 150 руб/пучок (с доставкой).
  11. Все самописное. Ethernet только IP и UDP, FAT только чтение, никакой ОС нет. Вроде, ESP8266 должен еще работать. .isr_vector 0x0000000008040000 0x188 0x0000000008040000 . = ALIGN (0x4) *(.isr_vector) .isr_vector 0x0000000008040000 0x188 ./obj_sw/startup_stm32f407.o 0x0000000008040000 vectors 0x0000000008040188 . = ALIGN (0x4) .flashtext 0x0000000008040188 0x0 0x0000000008040188 . = ALIGN (0x4) *(.flashtext) 0x0000000008040188 . = ALIGN (0x4) .text 0x0000000008040188 0xabdc 0x0000000008040188 . = ALIGN (0x4) *(.text) .text 0x0000000008040188 0xecc ./obj_sw/main.o 0x0000000008040188 cb_on_item 0x0000000008040254 on_fat_search_event 0x0000000008040340 cb_init_search 0x000000000804038c on_fat_init_event 0x000000000804049c on_fat_open_update_event 0x0000000008040678 on_read 0x0000000008040760 on_init_search 0x00000000080407d0 on_init 0x00000000080408a4 on_fat_read_update_event 0x0000000008040cec i2c_delay 0x0000000008040d02 i2c_write 0x0000000008040d74 i2c_read 0x0000000008040e04 i2c_start 0x0000000008040e44 i2c_stop 0x0000000008040e80 oled_init 0x0000000008040fb8 oled_set_page_address 0x0000000008040fdc oled_set_column_address 0x0000000008041010 oled_picture .text 0x0000000008041054 0x50 ./obj_sw/startup_stm32f407.o 0x0000000008041054 Reset_Handler .text 0x00000000080410a4 0xf40 ./obj_sw/command.o 0x00000000080410a4 func_reboot 0x00000000080410c4 func_sn 0x00000000080410dc func_wifi_led 0x00000000080410e8 func_wifi_id 0x00000000080410ea func_rtc_get_param 0x0000000008041100 func_rtc_get_param_off 0x0000000008041110 func_who 0x000000000804113c func_help 0x00000000080411a4 func_file 0x00000000080411c8 func_get_volume 0x0000000008041240 func_can_stat 0x0000000008041308 func_rtc_list 0x0000000008041394 func_param 0x0000000008041614 func_mac 0x0000000008041718 func_ip 0x00000000080417cc func_mask 0x0000000008041880 func_gw 0x0000000008041934 func_volume 0x00000000080419a8 func_name 0x0000000008041a0c func_set_time 0x0000000008041a38 func_rtc_id 0x0000000008041cfc func_rtc_set_id 0x0000000008041d50 func_rtc_set_param 0x0000000008041dae func_rtc_update 0x0000000008041e2c func_rtc_prog_write 0x0000000008041eac func_rtc_prog_read 0x0000000008041f08 console_command_mainloop .text 0x0000000008041fe4 0xa6c ./obj_sw/define.o 0x0000000008041fe4 set_uart_txeie 0x0000000008041ff0 set_pin 0x00000000080420b8 set_volume 0x000000000804212c every2bit 0x000000000804214c con_ver 0x000000000804218c con_per 0x00000000080421ec con_datetime 0x0000000008042354 con_uptime 0x00000000080423cc rtc_get_datetime 0x0000000008042470 rtc_set_datetime 0x000000000804257c tick 0x0000000008042598 print_fault 0x00000000080426b4 rtc_on_sync 0x0000000008042858 rtc_timer .text 0x0000000008042a50 0x4e8 ./obj_sw/init.o 0x0000000008042a50 init_ETH 0x0000000008042b64 SDIO_power 0x0000000008042bd4 init_SDIO 0x0000000008042bf0 init_DAC 0x0000000008042bfc init_TIMER3 0x0000000008042c1c init_SYSTEM 0x0000000008042c5c init_GPIO 0x0000000008042da4 init_SYSTICK 0x0000000008042dc8 init_USART1 0x0000000008042df4 init_USART2 0x0000000008042e1c init_CLK 0x0000000008042e36 init_NVIC 0x0000000008042eb4 init_RCC 0x0000000008042ed4 init_RTC .text 0x0000000008042f38 0x102c ./obj_sw/isr.o 0x0000000008042f38 update_timer 0x000000000804357c CAN1_TX_IRQHandler 0x000000000804360c CAN1_RX0_IRQHandler 0x00000000080436b4 EXTI4_IRQHandler 0x000000000804380c ETH_IRQHandler 0x000000000804387c TIM3_IRQHandler 0x0000000008043898 wifi_timer 0x0000000008043c48 USART2_IRQHandler 0x0000000008043cb4 DoRCCStateCommand 0x0000000008043d44 RCC_IRQHandler 0x0000000008043d90 NMIException 0x0000000008043dbc USART1_IRQHandler 0x0000000008043e2c rcc_timer 0x0000000008043e8c workled_blink 0x0000000008043f28 SysTickHandler .text 0x0000000008043f64 0x538 ./obj_sw/serial_port.o 0x0000000008043f64 sp_init 0x0000000008043fb6 sp_tx_push 0x0000000008043fde sp_tx_pop 0x000000000804401e sp_str 0x0000000008044034 sp_start 0x000000000804404c sp_txen_timer 0x000000000804407e sp_rx_push 0x00000000080440a6 sp_rx_pop 0x00000000080440e6 sp_hex 0x0000000008044118 sp_dec 0x0000000008044178 sp_udec 0x00000000080441c8 command_exec .text 0x000000000804449c 0x3c ./obj_sw/exception.o 0x000000000804449c HardFaultException 0x00000000080444a8 my_memcpy 0x00000000080444c0 rbit8 0x00000000080444c8 get2pow 0x00000000080444d2 getIPSR .text 0x00000000080444d8 0xdc8 ./obj_sw/sdio.o 0x00000000080444d8 con_sdio_ans 0x000000000804455c SDIO_Test 0x0000000008044594 SDIO_Send 0x00000000080445bc SDIO_Read 0x000000000804466c SDIO_Delay 0x0000000008044684 SDIO_IRQHandler 0x00000000080450dc SDIO_Init 0x0000000008045134 SDIO_Write 0x0000000008045204 SDIO_CardPresend 0x0000000008045214 SDIO_timer .text 0x00000000080452a0 0xb6c ./obj_sw/fat.o 0x00000000080452a0 fat_open_async_on_item 0x00000000080452c0 fat_cluster_to_sector 0x00000000080452e0 fat_fs_info_test 0x0000000008045314 fat_MBR_test 0x000000000804535c fat_fill 0x0000000008045464 fat_init_callback 0x000000000804550c fat_get_dir_item 0x0000000008045664 sd_read_async 0x0000000008045668 fat_item 0x00000000080456ec fat_search_callback 0x0000000008045918 fat_read_async_callback 0x0000000008045ab0 fat_init_async 0x0000000008045b10 fat_search_async 0x0000000008045bc0 fat_open_async_on_event 0x0000000008045c58 fat_open_async 0x0000000008045d10 fat_read_async .text 0x0000000008045e0c 0x1e8 ./obj_sw/mstring.o 0x0000000008045e0c mmemset 0x0000000008045e1e mstrcmp 0x0000000008045e38 mstrcpy 0x0000000008045e4a mstrcat 0x0000000008045e66 mstrupr 0x0000000008045e82 mstrcmp_f 0x0000000008045ea4 mstrlen 0x0000000008045eb4 mstr2ip 0x0000000008045f22 mstradd_char 0x0000000008045f32 mstradd_int2 0x0000000008045f5c cp866_to_win1251 0x0000000008045fa2 unicode_to_win1251 .text 0x0000000008045ff4 0xa0 ./obj_sw/player.o 0x0000000008045ff4 player_irq .text 0x0000000008046094 0x354 ./obj_sw/arp.o 0x0000000008046094 arp_send_request 0x0000000008046130 arp_send_answer 0x00000000080461c8 arp_init 0x00000000080461f8 arp_timer 0x0000000008046274 arp_find 0x00000000080462a8 arp_add 0x0000000008046350 emac_arp .text 0x00000000080463e8 0x6ec ./obj_sw/emac.o 0x00000000080463e8 emac_init_tx 0x0000000008046404 emac_get_tx 0x0000000008046444 emac_send_tx 0x0000000008046474 emac_abort_tx 0x00000000080464a0 emac_send 0x0000000008046544 emac_rx_data 0x000000000804658c read_PHY 0x00000000080465b4 read_PHY_im 0x00000000080465c4 emac_timer 0x0000000008046a9c write_PHY 0x0000000008046ac0 write_PHY_im .text 0x0000000008046ad4 0xbc ./obj_sw/icmp.o 0x0000000008046ad4 emac_icmp .text 0x0000000008046b90 0x114 ./obj_sw/ip.o 0x0000000008046b90 emac_ip 0x0000000008046bcc ip_send .text 0x0000000008046ca4 0x340 ./obj_sw/udp.o 0x0000000008046ca4 get_hex 0x0000000008046ce2 udp_fill 0x0000000008046d0c udp_send_data 0x0000000008046d94 emac_udp .text 0x0000000008046fe4 0x420 ./obj_sw/nokia_1202.o 0x0000000008046fe4 nokia_1202_cs 0x0000000008046fe6 nokia_1202_send 0x0000000008046fe8 nokia_1202_set 0x0000000008047048 nokia_1202_init 0x000000000804713c nokia_1202_show_icon 0x00000000080471bc nokia_1202_str 0x00000000080472b4 nokia_1202_strto 0x00000000080473e4 nokia_1202_set_contrast .text 0x0000000008047404 0x238 ./obj_sw/datetime.o 0x0000000008047404 datetime_init 0x0000000008047406 date_to_int 0x0000000008047438 int_to_time 0x000000000804745e int_to_date 0x00000000080474dc datetime_update .text 0x000000000804763c 0x1034 ./obj_sw/can.o 0x000000000804763c can_message_load 0x00000000080476a4 can_pc_id 0x00000000080476a8 can_pc_conf 0x00000000080476ac can_pc_media 0x00000000080476b0 can_rtc_rt 0x00000000080476b4 can_rtc_id 0x00000000080476b8 can_rtc_media 0x00000000080476bc can_init_bus 0x000000000804776c can_init 0x00000000080477d4 can_start 0x0000000008047860 can_send 0x000000000804789c can_pc_rt 0x0000000008047924 can_rtc_conf 0x0000000008048640 can_exec .text 0x0000000008048670 0x5c ./obj_sw/crc32.o 0x0000000008048670 crc32 0x0000000008048698 crc32_init 0x00000000080486a2 crc32_next .text 0x00000000080486cc 0x44 ./obj_sw/irand.o 0x00000000080486cc rand_get 0x00000000080486e4 rand_init 0x00000000080486e8 rand_decode *(.text.*) .text.startup 0x0000000008048710 0x7e8 ./obj_sw/main.o 0x0000000008048710 main *(.rodata) .rodata 0x0000000008048ef8 0x10e ./obj_sw/command.o 0x0000000008048ef8 console_command_table 0x0000000008048fd8 s_undef 0x0000000008048ffd s_reset .rodata 0x0000000008049006 0x94 ./obj_sw/define.o 0x0000000008049006 param_list 0x000000000804902c param_default 0x000000000804906c s_who .rodata 0x000000000804909a 0x43 ./obj_sw/isr.o 0x000000000804909a GET_PAGE1 0x00000000080490bc GET_PAGE2 .rodata 0x00000000080490dd 0x11 ./obj_sw/serial_port.o 0x00000000080490dd Hex *fill* 0x00000000080490ee 0x2 .rodata 0x00000000080490f0 0x14 ./obj_sw/emac.o 0x00000000080490f0 br_mac 0x00000000080490f8 br_ip 0x00000000080490fc zr_mac .rodata 0x0000000008049104 0x7f0 ./obj_sw/font.o 0x0000000008049104 Font_Single .rodata 0x00000000080498f4 0x400 ./obj_sw/crc32.o 0x00000000080498f4 crc_table *(.rodata*) .rodata.str1.1 0x0000000008049cf4 0x452 ./obj_sw/main.o 0x468 (size before relaxing) .rodata.str1.1 0x000000000804a146 0x3b2 ./obj_sw/command.o 0x3c6 (size before relaxing) .rodata.str1.1 0x000000000804a4f8 0x112 ./obj_sw/define.o 0x11c (size before relaxing) .rodata.str1.1 0x000000000804a60a 0x1d8 ./obj_sw/isr.o 0x1f6 (size before relaxing) .rodata.str1.1 0x000000000804a7e2 0x282 ./obj_sw/sdio.o 0x298 (size before relaxing) .rodata.str1.1 0x000000000804aa64 0x18 ./obj_sw/fat.o 0x1b (size before relaxing) .rodata.str1.1 0x000000000804aa7c 0xa ./obj_sw/player.o .rodata.str1.1 0x000000000804aa86 0xf9 ./obj_sw/emac.o 0x101 (size before relaxing) .rodata.str1.1 0x000000000804ab7f 0x15 ./obj_sw/udp.o .rodata.str1.1 0x000000000804ab94 0x1cd ./obj_sw/can.o 0x1eb (size before relaxing) *(.glue_7) .glue_7 0x0000000000000000 0x0 linker stubs *(.glue_7t) .glue_7t 0x0000000000000000 0x0 linker stubs 0x000000000804ad64 . = ALIGN (0x4) *fill* 0x000000000804ad61 0x3 0x000000000804ad64 _etext = . 0x000000000804ad64 _sidata = _etext .vfp11_veneer 0x000000000804ad64 0x0 .vfp11_veneer 0x0000000000000000 0x0 linker stubs .v4_bx 0x000000000804ad64 0x0 .v4_bx 0x0000000000000000 0x0 linker stubs .iplt 0x000000000804ad64 0x0 .iplt 0x0000000000000000 0x0 d:/gcc/arm-kgp-eabi-procyon/bin/../lib/gcc/arm-kgp-eabi/4.9.0/thumb/cortex-m3/crtbegin.o .rel.dyn 0x000000000804ad64 0x0 .rel.iplt 0x0000000000000000 0x0 d:/gcc/arm-kgp-eabi-procyon/bin/../lib/gcc/arm-kgp-eabi/4.9.0/thumb/cortex-m3/crtbegin.o .ccmram *(.ccmram) .bkpsram *(.bkpsram) .bootloader *(.bootloader) .eeprom *(.eeprom) .image *(.image)
  12. Картинки, шрифты, звуковые файлы, обновления прошивок, пользовательские скрипты - это все лежит на uSD-карте. Я говорил про сам код - 64К хватит каждому ;) Для простого что-то многовато. У меня загрузчик и образы расшифровывает, и CRC32 считает, и в приложение функции экспортирует.
  13. С чего вы взяли? С того, что без шишек умею работать? Контроллеры выпускаются серийно с конца 2011 года. Примерно 100 штук ежемесячно. Изделия очень разные, Заказчиков множество. В техподдержке один человек, который часто привлекается к другим задачам. Конкретно за STM32F042F4 скажу, что это делал себе для умного дома. Использую одну прошивку с базовым функционалом. Один работает в подсветке кухни, второй рулит санузлом. Логика элементарная: плавно включить-выключить свет, по датчику дверцы или движению. При этом по CAN можно узнать и температуру МК, и напряжение питания, максимальную глубину стека, uptime, хеши объектов и т.п. Для решения основной задачи это все не нужно, и добавил только потому, что место оставалось. За вечер превратил аналогичный контроллер в 9-канальный измеритель температуры. По CAN рассылает сообщения с температурой датчиков, ID которых заданы в энергонезависимых переменных. Еще делал какую-то прошивку для управления кондиционером, а другую со сбором показаний весов с ИК-выходом, но подробностей уже не помню. Есть STM32F042F6 с 32К ПЗУ, можно их поставить, но зачем, если и в 16К все влезает? Сенсорные выключатели я делаю на STM32F042K6, дык, фулфарш-прошивка занимает около 11К, при выделенных 20К. Там функционал тот же, только всего больше, плюс обработка емкостных сенсоров. Самый крутой контроллер для умного дома на STM32F407 использует 42К из выделенных 128К. По функционалу там и Ethernet, и uSD, дисплей, GPS для часов, датчики давления/влажности/температуры, сервер времени и конфигураций в добавку ко всему ранее сказанному. Я не могу придумать код на 64К - факт, подтвержденный временем.
  14. ОЗУ 6К и ПЗУ 16К это минимум? В эти объемы можно уложить нехилый функционал (пример я привел), а не то что 4 реле по CAN. Я не знаю как ваши фирмы работают, но у нас есть пример: толстый контроллер на базе STM32F407VG. На нем можем сделать все что угодно и нет никаких проблем с памятью, скорости разработки, отладки и т.п. А есть задачки, для которых вполне хватает STM32F030K6 (причем основные расходы ПЗУ на шрифты). Правда, затем заменили на STM32F051K8 именно из соображений, чтоб по памяти не упираться. Зачем использовать дорогой, трудоемкий, габаритный контроллер, когда задачу прекрасно решает мелкий во всех смыслах контроллер? Нужно понимать, что если мы не можем решить задачу на мелкоте, то на фулфарше она решается гарантированно, поэтому развиваем оба. Кста, сейчас появился промежуточный контроллер с плюсами обоих на STM32F030CC. По скорости разработки никогда описываемых вами ужасов не было, типовая задачка занимает 2-4 часа вместе со сборкой стенда и документированием. На той неделе был на совещании - предлагают мини-ПК в довесок к STM32 ставить, чтоб был WiFi, в устройстве типа, получил-отправил пакет по CAN (авто-диагностика). Так что с оверхэдом у нас все в порядке ;).
  15. Тяжело. А какие варианты? Причем в части софта нет никаких проблем, а вот документация - самое слабое место.
  16. Я написал все что надо, а потом дополнил тем, на что памяти хватило. Есть несколько вариантов приложений с поддержкой ИК-пультов, датчиков температуры DS и т.п. В одну прошивку все не влезает, но ключиками можно собрать прошивку под свою задачу и без хлопот обновиться. Там где нужно ВСЕ, есть решение где есть все и куча памяти свободной.
  17. Многовато. У меня есть контроллер на STM32F042F4. Распределение памяти такое: - 5К - загрузчик; - 10К - приложение; - 1К - пользовательский скрипт. Контроллер работает по CAN со своим протоколом. Можно обновлять прошивку, можно переписывать пользовательский скрипт. Скрипты сложные, на основе графов. Выполняются параллельно. Много диагностических функций. На борту 5 аналоговых входов, 7 дискретных выходов, 5 из который с ШИМ-управлением. В загрузчике сейчас примерно 270 байт еще свободно. В приложении - чуть больше 900 свободных байт. Код на Си без асм-вставок. Да, ОЗУ всего 6К.
  18. Пользуюсь EAT в модулях SIM800C. Никаких проблем никогда не было. Нужно внимательно читать рекомендации, вроде, не все функции можно использовать где угодно - есть ограничения.
  19. CMSIS == Cortex Microcontroller Software Interface Standard CMSIS - это стандартные библиотеки для Cortex-микроконтроллеров. Т.е. и для m4, и всех других m-профилей. Вопрос: Почему там есть core_cm3, core_cm4 и core_cm7? Ответ: это стандартный набор библиотек для Cortex-M. Вам нужно плотнее ознакомиться с архитектурой стандартной библиотеки. Обычно со всеми библиотеками в комплекте есть chm-файл. В нем можно найти архитектуру библиотеки ("Standard Peripheral's Library Architecture"). Вы прочитали этот chm-файл? Если не читали, а в планах есть желание использовать стандартную библиотеку, то я бы советовал начать со знакомства с xx_stdperiph_lib_um.chm
  20. Может, это в папке CMSIS лежит?
  21. Как вариант: окошко вырезать грубо лобзиком, а у рекламщиков заказать декоративные накладки поверх этого безобразия. Я так иногда делаю, правда, накладки печатаю на 3d-принтере.
  22. Думаю, в случае чего есть кому предъявить. микрочипДирект, вроде, представлен в РФ. Попробуйте закупиться напрямую или узнайте дилеров в РФ. Я atmel/microchip сейчас не использую, но в ЧиД когда-то давно закупался тиньками и мегами - проблем не было.
  23. Идем на сайт производителя. Там видим для ATMEGA328P-AU цены: 1-25 шт - $2.01 26-99 шт - $1.84 100+ шт - $1.67 При текущем курсе это порядка 135 руб/шт, без налогов, сборов и жадности продавца. Выбираем: - ЧиД от 130 руб; - Терра от 220 руб.
×
×
  • Создать...