|
XMEGA: будущее, которого мы так долго ждали, наступило., XMEGA - лучший 8 битный микроконтроллер. |
|
|
|
May 18 2008, 14:12
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
XMEGA: будущее, которого мы так долго ждали, наступило. Итак, на сайте Atmel появились полноценные доки по семейству. Само семейство пока еще недоступно в виде чипов на складах дистрибуторов, но такая позиция уже есть в прайсах. Совсем скоро можно будет запаивать. Далее все рассматривается на примере ATxmega128A1 Что обращает на себя внимание. 1. ATxmega64A1/128A1/192A1/256A1 Preliminary (75 pages, revision B, updated 5/08) http://www.atmel.com/dyn/resources/prod_do...nts/doc8067.pdfСмотрим секцию errata  и видим - ATxmega128A1 rev. G. Т.е. предыдущие версии A-F сгинули в Atmel, так и не выйдя в свет. Вызывает уважение по сравнению с ситуацией на рынке ARM - там erratы к современным чипам просто вызывают депрессию. Сама errata вполне терпимая. Видно, что в предыдущих errata'х народ дожимал цифровые глюки, а теперь осталось некоторое количество аналоговых - нелинейности по напряжению и пр. То, что нет errat в части DMA, арбитража шин и т.д., и то, что это rev. G, дает некоторую надежду на вылеченность системных багов. 2. Накристальная периферия. То, ради чего все затевалось * RC генераторы - аж целых 4 штуки: 32 kHz Int. ULP; 32 kHz Int. Osc.; 2 MHz Int. Osc.; 32 MHz Int. Osc. Просто праздник какой-то. * 8 UART - это уже обсуждали * 16 битный RTC с прескалером (с коэф. от 1(!) до 1024), у которого есть Compare Match регистр - это просто праздник какой-то для всех, кто, например, делает коммуникационные протоколы * Event system - пока еще мною не познанная замолодь, но из описаний следует, что это эффективная шняга для обработки событий. AVR1001: Getting Started With the XMEGA Event System (8 pages, revision A, updated 2/08) http://www.atmel.com/dyn/resources/prod_do...nts/doc8071.pdf* DMA • The DMA Controller allows high-speed transfers with minimal CPU intervention – from one memory area to another – from memory area to peripheral – from peripheral to memory area – from peripheral to another peripheral Заметим, что DMA во всяких там SAM - "жалкое подобие левой руки" DMA XMEGA. И меговское DMA работает на всей SRAM - привет dsPIC. * 12 бит DAC (1 Мгц) и ADC (2 Мгц). Хоть в реальности они и получились 10 битными, все равно очень даже! * AWeX – Advanced Waveform Extension. Внушительный блок для всяких PWM приложений. * External Bus Interface for up to 128M bit SDRAM - токо в описании я что-то ничего про SDRAM не нашел  3. Жручесть. В варианте ULP, RTC,WDT, BOD Enabled обещают не более 2 мка при 3.3В. Типовой CR2016 имеет емкость 90 mAh, CR2032 - 230 mAh. 0,002*24*365*5=87.6 ма*ч энергии на 5 лет. 5 лет от CR2016 - большего на практике нафиг не надо. Т.е. дальнейшее уменьшение тока потребления суть маркетинговый развод, по технике это будет эффективно только для очень специфичных применений. To ensure safe operation it is always recommended to have a brown-out detector (BOD) enabled. This has to be either internal in the microcontroller or an external device. The brown-out detector will ensure that the microcontroller is held in reset if VCC is lower than minimum. The XMEGA BOD has a new and innovative sampling mode. In sampling mode, the BOD is turned on only once per ms to check status of VCC. If everything is OK, the BOD is turned off and remains off until next checkpoint. This gives XMEGA a max power consumption of 2 мкA in Power Save mode with a 32 kHz crystal running, Real Time Counter operating, Watchdog Timer enabled and BOD operative with max 1 ms reaction time. To achieve the same performance, TI MSP430 devices need to enable the System Voltage Supervisor that consumes up to 15 мкA. Тута все подробно расписано. Introducing a New Breed of Microcontrollers for 8/16-bit Applications (White Paper, 15 pages, revision A, updated 02/08) http://www.atmel.com/dyn/resources/prod_do...nts/doc7926.pdf"На ходу" жручесть тоже очень даже хороша: 2 MHz VCC = 1.8V All PRR Set Internal RC 720 мкА. Или в терминах CR2032 (230 mAh) 13 суток непрерывной работы! Для CR123A (1600 mAh) это 92 дня работы. По моему опыту - ATmega на 3.68 Мгц - это прием POCSAG 1200 бит/сек, включая 8 кратный oversampling, DPLL, БЧХ декодер и пр (C код без asm вставок! Но C код продуманный, конечно). Причем это без DMA. Так что 2 Мгц для XMEGA - это весьма немало. При питании 1.8В - до 12 Мгц, 32 Мгц - от 2.7В. Так что процык получился весьма зажигательный. MSP430 нервно курит (понятно, что 32Мгц XMEGA будет быстрее 16 Мгц MSP430, разве только что умножитель 16х16 спасет MSP430). 4. Цены - ABN Universal,Inc., например, дает для ATXMEGA128A1-AU 9,97 $ в розницу - достаточно обнадеживающе. Это на проц с 8К RAM, 4K EEPROM, 128K FLASH, 78 IO пинов. Для примера - MSP430F2618TPNR - FLASH 116K x 8 + 256B, SRAM 8Kx8, A/D 8x12b; D/A 2x12b, 64 IO пинов имеет в розницу цены $13.16 на www.digikey.com Выводы: Atmel таки сделал лучший 8 бит контроллер. И, уверен, будет заслуженно снимать с него сливки ближайшие лет 5. Конечно, будет ламье, которое с криками "32 лучше 16 лучше 8" убежит применять всякое многобитное барахло, но найдутся серьезные юзера, которые смогут выжать все из этого кристалла (а в серии 10к, я уверен, этот кристальчик даст фору по цене очень и очень многим) http://www.atmel.com/dyn/corporate/view_de...EC_NAME=ProductAvailability and Pricing. The first devices, ATxmega128A1 and ATxmega64A1 are both offered in 100-pin TQFP and BGA packages and are available now. Volume prices for 10k units are US$3.75 and US$3.50, respectively. Other XMEGA devices will be available during 2Q or 3Q of 2008. Что касается перспектив, то тут все просто замечательно! AVR XMEGA 8/16-bit High Performance Low Power Flash Microcontrollers (Flyer, 4 pages, revision B, updated 03/08) http://www.atmel.com/dyn/resources/prod_do...nts/doc7925.pdfATxmega384A1 384k FLASH, 4k EERPOM, 32k SRAM (!). Основной кайф от XMEGA следующий. В общем, по своим основным параметрам, он умеренно чемпионский - MSP430 уверенно дышит в спину. Кроме одного - соотношение цены и объема памяти. 64К команд (при очень эффективной системе команд, которая хорошо ложится под С) и 8 К ОЗУ - этого вполне достаточно, чтобы использовать вполне взрослую ОСьку типа uCOS. И комфортно писать очень сложные приложения, которые будут годами работать от CR2032. Наличие ОСьки позволяет по полной программе использовать технологию синтетических портов. Т.е., например, при разработе ZigBee девайса, можно взять платку с CPU + RF, один SPI канал, например, выделить на связь с "большим процессором", на втором XMEGA сделать конвертер SPI<->USB (FTDI), и вести разработку в Win32, при этом имея виртуальные драйвера периферии, полностью эквивалентные "боевой" периферии. При такой технологии отпадает необходимость в аццком симуляторе периферии XMEGA (такие симуляторы, как показывает практика, до конца отдебажить невозможно), а разрабатывать под Win32 (или под Linux - если профи, то без разницы), все таки куда приятнее, чем дебажить кристалл при помощи самого продвинутого джЫтага. В приведенной выше схеме за счет DMA в XMEGA можно организовать дуплексный канал связи порядка 1 Мбайт/сек (2 чипа FTDI на раные USB порты, дрова D2XX drivers дают 1 Megabyte / second ) с "большим процессором". В упомянутом выше документе http://www.atmel.com/dyn/resources/prod_do...nts/doc7926.pdfна 7 странице есть чудная табличка о загрузке проца. XMEGA UART communication with and without DMA. При 3500 бит/сек мы имеем 5.17% CPU load (непонятно, на какой тактовой, симплекс или дуплекс). Т.е. при организации 1 Мбайт/сек дуплексного канала можно ожидать загруки проца порядка 25% при тактовой 32 Мгц. Т.е. если внешняя периферия порождает поток данных не более 1 мбайт/сек, то у проца будет возможность "отогнать" его на "большой" процессор, принять обработанные данные, и потратить 75% своего времени на дополнительную обработку данных - приписать к блоку отсчетов ADC время, когда эти отсчеты были взяты, поймать время по таймеру и выплюнуть синхронного блок выходных отсчетов и т.д. В общем, читаем pdf моих старых постов по синтетическим портам и виртуальной разработке, и можно приступать к созданию конкурентов автономных радиоканальных девайсов типа ZigBee
Сообщение отредактировал Evgeny_CD - May 18 2008, 15:37
|
|
|
|
|
 |
Ответов
(180 - 194)
|
Jul 10 2008, 19:01
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(aesok @ Jul 10 2008, 19:09)  Atmel пишет что в AVR архитектуре 70% инструкций выполняються между регистрами... Так можно и 100% сделать, только тогда зачем вообще DMA которое пересылает что-то в память к которой потом не обращаются. А еще пишут, что новые зубные пасты на 72% уменьшают заболевания страшным кариесом  .... Почему Atmel точнее не посчитал  DMA, естественно, лучше иметь, чем не иметь, только не панацея это, совсем не панацея, особенно в надеющихся на то, что оно "само работает", но не слишком умелых руках  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 10 2008, 19:23
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(zltigo @ Jul 10 2008, 23:01)  Так можно и 100% сделать, только тогда зачем вообще DMA которое пересылает что-то в память к которой потом не обращаются. А еще пишут, что новые зубные пасты на 72% уменьшают заболевания страшным кариесом  .... Почему Atmel точнее не посчитал  DMA, естественно, лучше иметь, чем не иметь, только не панацея это, совсем не панацея, особенно в надеющихся на то, что оно "само работает", но не слишком умелых руках  . Зачем тк зло? AVR - это риск процессор которай загружает данные в регистры, а все вычисления выполняет между регистрами. Вот в эти моменты DMA и может работать с шинной данных не мешая процессору. Давайте возмем какой нибудь реальный проект и посчитаем соотношение инструкций которые работают только с регистрами к тем которые работают с памятью (in/out/ld*/st*/pop/push/call...) Тогда и можно будет понять 70 это процентов, 72 или 68. ну уж точно не 100 и не 0. Вам нахаляву добавили DMA, эффективность работы которого в реальных приложениях которого примерно 70 процентов, и при этом никакого замедления в работе ядра, что в этом плохого? Что его эффективность не 100 прочентов? А говорить что можно написать программу состоящию только из одних out ... можно, только зачем этой програме DMA??? Анатолий.
Сообщение отредактировал aesok - Jul 10 2008, 19:27
|
|
|
|
|
Jul 10 2008, 19:39
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(GetSmart @ Jul 10 2008, 21:27)  ЗЫ. В IBM PC ещё на ISAшных слотах чудесно работал DMA на звуковухе например А еще первые HDD контроллеры работали на DMA, а потом перестали, ибо мееедленно, а потом опять стали, когда 386 c кэшами появились и на PCI c busmaster-ами переползли. Цитата(SasaVitebsk @ Jul 10 2008, 21:30)  Регистры это же тоже RAM... Обычно они не за шиной находятся, посему это не проблема. Опять-таки шины данных и команд у AVR разные, посему польза есть. Я только супротив чрезмерной эйфории, типа "DMA это наше все" выступаю. По энергопотреблению от DMA, при грармотной архитектуре и правильном применении есть несомненная польза.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 10 2008, 20:15
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(SasaVitebsk @ Jul 10 2008, 23:30)  Да нет в общем то я надеялся на лучшее. zltigo всётаки прав. Получается, что они даже при работе с IO областью не разрулили. Чтож - ладно. Я взял реальный проект, MP3 плеер, размер секци кода 11968 байт или 5984 инструкций. При этом количесто инструкций OUT - 59 и IN - 84, тоесть разруливание ситуации с адресным пространством 0-3F, даст повышение эффективности работы DMA только на 2,5%. Со всем адресным пространством IO примерно процентов на 5. Анатолий. Цитата(SasaVitebsk @ Jul 10 2008, 23:30)  Регистры это же тоже RAM. Вы не читали описание Xmega. В ней регисры не отражаются в RAM. Цитата(zltigo @ Jul 10 2008, 23:27)  Про халяву  поговорим, если цена будет на конкурентном уровне. На данный момент дешевле обходится без "халявы" от Atmel. Говоря про халяву я имел ввиду не деньги, а то что DMA не оказывает влияния на производительность ядра. А сколько денег захочет с нас взять за это атмел, это другой вопрос. Анатолий.
Сообщение отредактировал aesok - Jul 10 2008, 20:15
|
|
|
|
|
Jul 11 2008, 07:38
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
+ мои 5 копеек
Господа, не следует забывать о том, что АТМЕЛ уже сформировал поколение AVR-разрабочиков.
Каким бы старым ни было 51-е ядро, его все еще продолжают выпускаить (и улучшать) только лишь потому, что целый слой разработчиков (и море разработок) невозможно вот так взять и перенести на другие ядра. А раз нельзя, и есть спрос, то почему бы не продолжать продавать 51-е ядра?
Я про себя скажу. Я периодически пытаюсь переползти на АРМ. Примерно уже год, как пытаюсь. (Смейтесь на здоровье!) Что мне мешает? -- А мешает мне как раз та текучка, которая не дает "поиграться" с новым МК. Мешает риск (связанный с не знанием новой архитектуры) не уложится в сроки или вообще (о, ужас!) провалить проект. Поэтому, приходится опираться на проверенные решения. Поэтому, при повышенных требованиях к вычислительной мощности ядра я буду все-таки ориентироваться на Х-Мега, а не на АРМы. Ну или разбивать процессы на несколько МК -- Мастер-камень и несколько слейв-камней.
Вывод прост -- мы все во власти времени, мы рабы времени. Недостаток времени делает нас заложниками того или иного ядра. Понимая это, АТМЕЛ создает ядро максимально похожее на AVR, но с навовротами, которые можно постепенно в процессе работы "доучить". В целом же, какртина для АВР-щиков не сильно изменилась. По крайней мере переползти с Мага/Тайни на Х-Мега быстрее и легче, чем на тот же АРМ7/9, ПИКи и другие ядра.
И еще, Х-Мега -- это не заменитель какого-то продукта, это -- еще одна консерва на полке в супермаркете. А покупать или не покупать -- это дело вкуса. Спорить о вкусах -- только время тратить. А тем более навязывать свой вкус.
Наверно много банально сказал, да?
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Jul 11 2008, 17:11
|
Местный
  
Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621

|
Цитата(SasaVitebsk @ Jul 10 2008, 19:56)  По крайней мере в AVR проблем при работе с переферией просто не наблюдаю. Наводит на мысль "не ошибается тот. кто ничего не делает". В общем - они есть. Цитата(SasaVitebsk @ Jul 10 2008, 19:56)  Приведу пример возможного использования. Ввожу странично данные из внешнего EEPROM в ОЗУ (буфферизую) и с помощью DMA вывожу значение в ЦАП. Пока нет реального устройства говорить возможно ли первую часть реализовать на DMA не приходится, но вторая часть явно реализуется просто. Эффективность такой работы, опять же, зависит от реализации ПДП в данном МК, но удобство - совершенно для меня очевидно. Чем то напоминает абстрактную аппликуху, которая красиво выглядит, но реально приткнуть ее совершенно некуда. Цитата(GetSmart @ Jul 10 2008, 22:27)  ЗЫ. В IBM PC ещё на ISAшных слотах чудесно работал DMA на звуковухе например. Все поголовно были счастливы. Тока что этой МЕГЕ делать, если у нее нет звуковой карты, а шина 8-битная и наружу не выходит. Цитата(zltigo @ Jul 10 2008, 22:01)  А еще пишут, что новые зубные пасты на 72% уменьшают заболевания страшным кариесом  .... Эт немного не по теме, но программистам будет интересно, зачем пишут такие надписи. Это - как бы я назвал - "кумулятивная мотивация" - говоря техническим сленгом. элементарный троян. Эта фраза оборачивается спереди фразой - утверждением, типа - "Специалисты утверждают - ", обычно выделяемой каким нить способом. Как это работает? При прочтении моск, пытаясь выделить смысл фразы, определяет. что она смысла не имеет ( вдумайтесь сами о 72% - особенно мне нравятся фразы типа "делают ваши волосы сильнее на 80%"), на крайняк будет немного смешно. Как следствие - пропускает ее. Но настроение, заключенное во фразах - утверждениях, остается и попадает напрямую в подсознание и, когда перед вами будет выбор купить ту или эту зубную пасту подсознательно вы выберете именно эту.
|
|
|
|
|
Jul 11 2008, 19:24
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(SasaVitebsk @ Jul 10 2008, 23:30)  Да нет в общем то я надеялся на лучшее. zltigo всётаки прав. Получается, что они даже при работе с IO областью не разрулили. Чтож - ладно. Оказываеться разрулили. ATxmega A MANUAL, страница 37, и рис 4-3. Цитата 4.10 Data Memory and Bus Arbitration
As the Data Memory organized as four separate sets of memories, the different bus masters (CPU, DMA Controller read and DMA Controller write) can access different memories at the same time. As Figure 4-3 on page 38 shows, the CPU can access the External Memory while the DMA Controller (DMAC) is transferring data from Internal SRAM to I/O Memory. Анатолий.
|
|
|
|
|
Jul 13 2008, 10:03
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Да что вы не видите, человек работает с PICами и наслушился страшных сказок от таких же как сам. Да пусть приведёт пример ошибки переферии озвученной в errate. Для совершенно новой atmega2560 - две строчки незначительных. Я сейчас просмотрел несколько камней ходовых - это же слёзы просто. Давече вон с at90can128 работал. У кристаллов с CAN интерфейсом традиционно большие ерраты. А здесь - пару строчек. При разработке мне дали в виде основы аналогичный текст для 18fxx8x кристалла. Когда реализовал его на can128 - я плакалъ. Исходный текст несколько страниц - результирующий - десяток строк инициализации да два обработчика прерываний по пять строк. Что и говорить - зато кристалл простой.  PS: Даю выдержку из даташита на at90can128 (разработанную во времена былинные и до сих пор выпускающуюся) и прилагаю оффициальную еррату (последнюю) с сайта микрочипов на серию can контроллеров. Не будем обращать внимание на такую мелочь как ошибки ядра - просто бегло просмотрите. Код Errata The revision letter in this section refers to the revision of the AT90CAN128 device. Rev A & B - Rev A (Part marked M128CAN11-EL) - Rev B (Part marked 90CAN128-EL) • Sporadic CAN error frames • Spike on TWI pins when TWI is enabled • ADC differential gain error with x1 & x10 amplification • Asynchronous Timer-2 wakes up without interrupt • SPI programming timing • IDCODE masks data from TDI input 6. Sporadic CAN error frames When BRP = 0 the CAN controller may desynchronize and send one error frame to ask for the retransmission of the incoming frame, even though it had no error. This is likely to occur with BRP = 0 after long inter frame periods without synchronization (low bus load). The CAN macro can still properly synchronize on frames following the error. Problem Fix/Workaround Set BRP greater than 0 in CANBT1 5. Spike on TWI pins when TWI is enabled 100 ns negative spike occurs on SDA and SCL pins when TWI is enabled. Problem Fix/Workaround No known workaround, enable AT90CAN128 TWI first versus the others nodes of the TWI network. 4. ADC differential gain error with x1 & x10 amplification Gain error of - 4 lsb has been characterized on the part. Problem Fix/Workaround Software adjustment. 3. Asynchronous Timer-2 wakes up without interrupt The asynchronous timer can wake from sleep without giving interrupt. The error only occurs if the interrupt flag(s) is cleared by software less than 4 cycles before going to sleep and this clear is done exactly when it is supposed to be set (compare match or overflow). Only the interrupts flags are affected by the clear, not the signal witch is used to wake up the part. Problem Fix/Workaround No known workaround, try to lock the code to avoid such a timing. 2. SPI programming timing When the fuse high byte or the extended fuse byte has been written, it is necessary to wait the end of the programming using “Poll RDY/BSY” instruction. If this instruc384 AT90CAN128 4250D–CAN–07/04 tion is entered too speedily after the “Write Fuse” instruction, the fuse low byte is written instead of high fuse /extended fuse byte. Problem Fix/Workaround Wait sometime before applying the “Poll RDY/BSY” instruction. For 8MHz system clock, waiting 1 μs is sufficient. 1. IDCODE masks data from TDI input The JTAG instruction IDCODE is not working correctly. Data to succeeding devices are replaced by all-ones during Update-DR. Problem Fix / Workaround – If AT90CAN128 is the only device in the scan chain, the problem is not visible. – Select the Device ID Register of the AT90CAN128 by issuing the IDCODE instruction or by entering the Test-Logic-Reset state of the TAP controller to read out the contents of its Device ID Register and possibly data from succeeding devices of the scan chain. Issue the BYPASS instruction to the AT90CAN128 while reading the Device ID Registers of preceding devices of the boundary scan chain. – If the Device IDs of all devices in the boundary scan chain must be captured simultaneously, the AT90CAN128 must be the first device in the chain.
Прикрепленные файлы
80161j.pdf ( 196.25 килобайт )
Кол-во скачиваний: 41
|
|
|
|
|
Jul 14 2008, 06:19
|
Местный
  
Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621

|
Цитата(singlskv @ Jul 13 2008, 01:09)  Огласите пожалуйста хоть одну багу в переферии AVR которая не описана в еррате... И желательно с исходным кодом который ее(ошибку) продемонстрирует... Пожалуйста - аппаратное зависание TWI. Исходный код - возьмите прямо из даташита. Конфигурация - АВР мастер. Схематически не подключите слэйв, или сделайте так, чтобы онгенерил NACK. Все. При генерации старт условия узел возвращает ошибку, что слэйв занят. Если тут же сгенерить повторное старт условие, узел подвиснет наглухо. Описанный в даташите сброс ошибок не работает. Вторая - это, возможно уже из серии "кто старое помянет, тому глаз вон". УАРТ. На первых МЕГАХ УАРТ начинал прием байта не по заднему фронту, а по низкому уровню. Это позволяло выгодно пользоваться этой ошибкой при приеме DMX. Атмел так и не признал свою ошибку, а тихонечко исправил. Во всяком случае, на МЕГЕ162. Третье - эта ошибка описана в еррате, но предложение по ее решению мне очень нравится. МЕГА48/88/168. Прерывание, вызываемое генератором собаки. Оказывается, оно может не срабатывать. Решение, предлагаемое Атмелами - это разрешать это прерываение перед его срабатыванием. Просто писк. Цитата(SasaVitebsk @ Jul 13 2008, 13:03)  Да что вы не видите, человек работает с PICами и наслушился страшных сказок от таких же как сам. С Атмелами по причине их дешевизны и доступности просто приходится работать.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|