AVR vs PIC

Jun 20, 2004 Last reply: 21 years ago 988 Replies

Yuriy, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

ðÏÎÅÄÅÌØÎÉË éÀÌØ 12 2004 15:25, Yuriy K wrote to Maxim Polyanskiy:

MP>> âÅÒÅÍ ÐÉË 16c620a - ÔÁËÔÏ×ÁÑ 40ÍÇà (ÚÁ×ÏÄÓËÏÊ ÐÒÅÄÅÌ) , YK> ïÔ Ë×ÁÒÃÁ.

MP>> 40/24=1.6666 MP>> õ attiny ÔÁËÔÏ×ÁÑ 8ÍÇà (ÚÁ×ÏÄÓËÏÊ ÐÒÅÄÅÌ). YK> ATtiny26 - 16íçà ÏÔ Ë×ÁÒÃÁ.

MP>> 8/6=1.3333 YK> 16/6 = 2,666

MP>> ëÕ ÉÌÉ ÎÅ ëÕ? ;) YK> þÔÏ ÂÏÌØÛÅ, 2,66 ÉÌÉ 1,66?

á ÄÁ×ÁÊ ÔÅÐÅÒØ ×ÏÚØͣÍ Scenix. PIC'Ï×ÓËÁÑ ÓÉÓÔÅÍÁ ËÏÍÁÎÄ, 100 íçÃ, 1 ÔÁËÔ ÎÁ ËÏÍÁÎÄÕ...

100/6 = 16,7 íçÃ.

þÔÏ ÂÏÌØÛÅ, 16,7 ÉÌÉ 2,66? ;)

çÅÏÒÇÉÊ

P.S. é ÏÞÅÎØ ÐÒÉÑÔÎÁÑ ÆÕÎËÃÉÑ Á×ÔÏÓÏÈÒÁÎÅÎÉÑ ËÏÎÔÅËÓÔÁ × ÐÒÅÒÙ×ÁÎÉÑÈ...

Alexey, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

ðÏÎÅÄÅÌØÎÉË éÀÌØ 12 2004 17:33, Alexey Krasnov wrote to George Shepelev:

AB>>> ... ÆÕ, ËÁËÉÅ ÚÁÍÏÒÏÞËÉ. ÷ AVR ÜÔÏÇÏ ÎÅÔ. GS>> äÁ, × AVR Ó ÜÔÉÍ ÇÏÒÁÚÄÏ ÈÕÖÅ. âïÌØÛÁÑ ÞÁÓÔØ SRAM É ×ÓÅ ÐÏÒÔÙ GS>> ÎÁÐÒÑÍÕÀ ÎÅÄÏÓÔÕÐÎÙ. AK> þÅÇÏ ??? ôÙ ÈÏÔØ ÚÎÁÅÛØ Ï ÞÅÍ ÇÏ×ÏÒÉÛØ ?

úÎÁÞÉÔÅÌØÎÏ ÌÕÞÛÅ ÔÅÂÑ!

éÚÏÂÒÁÚÉ ×ÙÄÁÞÕ Ä×ÕÈ ÐÒÏÔÉ×ÏÆÁÚÎÙÈ ÍÅÁÎÄÒÏ× ÎÁ ÎÏÖËÁÈ ÐÏÒÔÁ. ÷ÏÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ËÏÄ ÄÌÑ PIC.

MOVLW 01b MOVWF PORTx ; ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÐÏÒÔÁ "ÐÒÏÔÉ×ÏÆÁÚÎÙÍÉ" ÂÉÔÁÍÉ

MOVLW 11b ; ÍÏÄÉÆÉÃÉÒÕÅÍÙÅ ÂÉÔÙ loop1: XORWF PORTx,1 ; ÍÏÄÉÆÉËÁÃÉÑ Ó ÐÒÑÍÙÍ ÄÏÓÔÕÐÏÍ Ë ÐÏÒÔÕ ; 1 ÃÉËÌ GOTO loop1 ; 2 ÃÉËÌÁ

çÅÏÒÇÉÊ

Vladislav, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

ðÏÎÅÄÅÌØÎÉË éÀÌØ 12 2004 20:22, Vladislav Baliasov wrote to Alexey Boyko:

RM>>> éÎÔÅÒÅÓÎÏ. þÔÏ ÚÁ ÐÒÉÂÏÒÞÉË É ÓËÏËÁ ÓÏÉÔ? AB>> UNI-T UT70B, ÏËÏÌÏ 80$

á ÍÎÅ ÎÁÐÉÓÁÌ - $70. þÔÏ ÜÔÏ ÏÎ ÓÌÅÄÙ ÐÕÔÁÅÔ? ;)

RM>>> é ËÁËÏ×Á ÔÏÞÎÏÓÔØ ÉÚÍÅÒÅÎÉÊ? AB>> Frequency 4kHz - 200MHz 0.1% + 3 dgt VB> úÁÂÁ×ÎÏ. ôÏÌØËÏ ÞÔÏ ÂÙÌÏ 400 MHz ;)

"úÁ ×ÒÅÍÑ ÐÕÔÉ ÓÏÂÁÞËÁ ÍÏÇÌÁ ÐÏÄÒÁÓÔÉ" (c) ;-)

VB> HÅ, ÜÔÏ ÎÅ ÞÁÓÔÏÔÏÍÅÒ, ÜÔÏ ÐÒÏÓÔÏ ÐÏÒÎÏÇÒÁÆÉÑ ËÁËÁÑ-ÔÏ... ïÓÏÂÅÎÎÏ ÐÏ VB> ÎÉÖÎÅÍÕ ÐÒÅÄÅÌÕ (ÄÌÑ ÷þ ÔÁËÁÑ "ÔÏÞÎÏÓÔØ" ÐÒÏÓÔÏ ÎÅÐÒÉÅÍÌÅÍÁ, Á ×ÏÔ × VB> Ú×ÕËÏ×ÏÍ ÄÉÁÐÁÚÏÎÅ ÉÍÅÌÏÂÙ ÈÏÔØ ËÁËÏÊ-ÔÏ ÓÍÙÓÌ - ÎÏ ÏÔ DC ÉÌÉ ÈÏÔØ VB> ÅÄÉÎÉÃ-ÄÅÓÑÔËÏ× Hz.)

HÁ ÕÎÉ×ÅÒÓÁÌØÎÙÊ ÐÒÉÂÏÒ ÜÔÏ ÞÕÄÏ ÔÅÈÎÉÞÅÓËÏÊ ÍÙÓÌÉ ÎÉËÁË ÎÅ ÔÑÎÅÔ :-(

AB>> HÅ. üÔÏ ÐÒÏÓÔÏ ÕÄÏÂÎÙÊ ÍÕÌØÔÉÍÅÔÒ. ëÓÔÁÔÉ, ÉÚ ÓÅÒÉÉ UT70 - ÔÏÌØËÏ AB>> UT70B ÉÍÅÅÔ ÔÁËÏÊ ÞÁÓÔÏÔÏÍÅÔÒ. HÏ ÅÓÔØ ËÁËÏÊ-ÔÏ UT70(ÎÅ ÐÏÍÎÀ AB>> ËÁËÁÑ ÂÕË×Á) ËÏÔÏÒÙÊ ÉÍÅÅÔ ÂÏÌØÛÅ ÃÉÆÒ ÎÁ ÜËÒÁÎÅ É ÔÏÞÎÏÓÔØ ×ÒÏÄÅ AB>> 0.1% VB> äÌÑ _ÞÁÓÔÏÔÏÍÅÒÁ_ ÈÕÖÅ 1E-6 - ÐÒÏÓÔÏ ÎÅ ÓÅÒØÅÚÎÏ. ÷ ÐÒÉÎÃÉÐÅ.

íÅÎÑ × ÐÒÉÎÃÉÐÅ É 4 ÚÎÁÞÁÝÉÈ ÃÉÆÒÙ ÕÓÔÒÁÉ×ÁÀÔ. HÏ ÞÅÓÔÎÙÈ! á ÅÓÌÉ ÕÖ Ï ÕÎÉ×ÅÒÓÁÌØÎÏÍ ÐÒÉÂÏÒÅ ÇÏ×ÏÒÉÔØ, ÔÁË ÔÁÍ Åݣ ÐÅÒÉÏÄÏÍÅÒ ÎÕÖÅÎ. þÔÏÂÙ ÞÁÓÔÏÔÙ × ÅÄÉÎÉÃÙ-ÄÅÓÑÔËÉ ÇÅÒà ÔÏÞÎÏ ÍÅÒÑÔØ...

çÅÏÒÇÉÊ

Oleksandr, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

÷ÔÏÒÎÉË éÀÌØ 13 2004 00:24, Oleksandr Redchuk wrote to "Alexander Golov":

AG>> úÄÅÓØ ÞÔÏ-ÔÏ Ñ ÎÅ ÐÏÎÑÌ, ÐÏÞÅÍÕ ÄÌÑ PIC18 ÔÏÌØËÏ 2 ÕËÁÚÁÔÅÌÑ? HÁ AG>> PIC18: OR> ðÏÞÅÍÕ-ÔÏ Õ ÍÅÎÑ × ÐÁÍÑÔÉ ÓÉÄÉÔ "Ï, ËÌÁÓÓÎÏ, × ÐÉË18 ÕÖÅ Ä×Á OR> ÕËÁÚÁÔÅÌÑ" :-)

ôÒÉ.

çÅÏÒÇÉÊ

Привет!

Tue Jul 13 2004 00:24, Oleksandr Redchuk wrote to "Alexander Golov":

...

OR> Тут одня задачка с год (а то и два уже) назад вылазила. Заглохла, OR> правда, так две игральных платки под столом и валяются). Потребление OR> процессора весит немного - режим работы непрерывный, постоянно есть OR> индикация на 7-сегментном светодиодном. Быстродействие в широких OR> пределах по барабану - т.е. pic18 я бы поставил, вероятно, с тем же OR> кварцем (3.6864), что и AVR или MSP.

...

OR> Точных цен не помню, но по сравнению с соответствующими pic18 OR> MSP430F149 и F147 оказались ощутимо дешевле. При этом цены запрашивались OR> у местной Гаммы (у ещё какого-то перепродавца как обычно было дороже) OR> и у местного Пульсара (при том, что MSP потом нашли дешевле). Сейчас я OR> бы не глядя поставил ATmega64 - ещё дешевле.

Тут спорить не о чем, если фактор цены важен то его необходимо учитывать. Изначально же разговор начался что де легко/никак можно заменить PIC на AVR. Ну нет этого.

Я уже несколько раз брался за устройства с экстремальными требованиями к аппаратуре и рассматривал всё, до чего реально могу дотянуться (от AVR и MSP, до TMS320) и каждый раз мне в последний момент Microchip подкидывает новое решение полностью меня удовлетворяющее. Вот хотел с повысить частоту АЦ преобразования со 100 кГц до 200 и подумал это сделать с помощью dSPIC30. Куда там... Т.е. АЦ-преобразование он сделать может даже быстрее и данные буферировать, скомпоновать тоже, но вот передать... У него UART тактуется от ядра, что при 120 МГц оказывается медленнее чем у PIC18 при 40, да и потребление... ATmega88 на 20 МГц может обеспечить 2,5 Мбит/с (правда при 8 тактовом бите), но АЦП то подходящего на борту нет, а по SPI -- медленно (100 KSPS ещё получалось, но 200 уже перебор). TMS320LF2401 обеспечивает нужную производительность, частоту выборок, но UART опять тактуется 40 МГц, а жрёт он при этом (прибор то батарейный)!

А тут Microchip подкидывает просто идеально подходящий PIC18F2331... И как он быстро позволяет перекидывать в буфер группу из 4-х отсчётов при всего 50 кГц прерываний и сам каналы перебирает... И вот только что подобное получилось с PIC18F2610. Я начал упираться в объёмы памяти на PIC18F252 (а мне всё таки идеально подходит именно МК в корпусе DIP и 28 выводов у меня не все задействованы), хоть на монстра 64-ногого меняй и -- привет ICSP в полевых условиях), тут столько бонусов сразу. Конечно эмоции только положительные.

Естественно, всё это чего-то стоит, и кому-то дешевле поизвращаться на программном уровне, с внешней аппаратурой и т.п., но лично мне, как я уже упоминал, до $10 вообще не не важно какая там цена у МК, меня больше интересует техническая сторона дела.

...

AG>> Хочешь быстро считать -- появились dsPIC30 -- они намного быстрее AG>> самого быстрого AVR'а.

OR> Кстати, что у них с инструментарием?

Да вроде нормально, хотя я лично ещё не пробовал (задач пока нет). Микрочиповские: асм, си, эмуляционные головы правда только для ICE4000. PRO MATE II их поддерживает (PM3 естественно тоже), PICSTART -- нет. Hi-Tech выпустила компилятор dsPICC. Может ещё кто, я просто особенно не приглядывался.

...

AG>> Hа AVR (если я, конечно что-то не упускаю в смысле убыстрения):

AG>> label ld r10,x+ ; 2 \ AG>> ld r11,y+ ; 2 | AG>> add r10,r11 ; 1 | 10 AG>> st z+,r10 ; 2 | AG>> dec r12 ; 1 | AG>> brne label ; 2/1 / AG>> dec r13 ; 1 \ AG>> brne label ; 2/1 / 3

OR> Можно счётчик поместить в пару, которая, к сожалению, не указатель, OR> но adiw/sbiw с ними работают. OR> sbiw r24,1 ; 2 OR> brne label ; 2

Просто это всё таки медленнее и нивелирует 1-цикловое преимущество AVR при суммировании на двух указателях.

Hello, Alexey Boyko !

þÔÏ ÂÕÄÅÔ ÄÅÌÁÔØ öÏÒÁ Ñ ÎÅ ÚÎÁÀ, Á Ñ ×ÏÚØÍÕ ÔÏÔ ËÒÉÓÔÁÌÌ, ËÏÔÏÒÙÊ ÐÏÄÏÊÄÅÔ. äÁ ÈÏÔØ É AVR. ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.
12-Jul-04 09:52 George Shepelev wrote to Oleksandr Redchuk:

AK>>>> Ты че - таймер-то продолжает считать (его никто не сбрасывает, AK>>>> не перезаписывает и не тормозит). _____________!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

GS>>> И какие данные ты с него получишь? Отфонарные? ;) [...] GS> А нафиг для этого защёлка, если таймер можно _остановить_, а потом GS> читать из него в любом порядке и с любой скоростью? Битик TMR1ON. Вот отфонарные данные получишь ты. Определись сначала, что ты хочешь. То тебе перенос из младшего в старший байт потерять страшно (чего никто не заставляет делать даже не останавливая таймер), то ты готов потерять такты на входе таймера за то время, пока он будет остановлен.

1) Какой же это таймер, если его постоянно останавливают? 2) Если таймер остановить, то и при чтении его+софтового расширения тоже никаких потерь переносов из младшего в старший не будет 3) остановить+снова запустить таймер - это две команды (если ты в пике - то ещё и если ты в нужном банке, иначе больше), где большой выигрыш у кривого решения с остановкой таймера по сравнению с честным чтением без остановки?

OR>> Так что чтение 16-битного таймера в два приёма и чтение OR>> 8-битного таймера + байта программного расширения не отличаются OR>> ничем,

GS> Исключительно для тех, кто правильно работать с контроллерами не умеет GS> ;) Ну покажи мне, неучу, да всем остальным страждущим сокровенных знаний, пример чтения 16-битного таймера и 8-битного с софтовым расширением. Комментарии не обязательны. Я-то думал, что на пике с тем, что доступ к SFR и переменным выглядит одинаково - разницы вообще не будет.

OR>> 5 команд надо как раз для того, чтобы HЕ потерять: OR>> MCS51, GS> Я где-то говорил за 51-е? Или ты сам с собой споришь? Я привёл примеры на двух разных процессорах, у обоих заняло по 5 команд. Я не виноват, что на пике будет больше.

OR>> GetTimer:

GS> Это что, попытка считать "полное" значение таймера в момент завершения GS> временного интервала? Очень хорошо, смотрим: Это чтение текущего состояния таймера без нарушения его хода.

GS> Отсюда приходится сделать вывод, что ты собираешься заполнять регистр GS> t0high в прерывании по переполнению 8-ми битного таймера, подсчитывающего GS> входную частоту (иначе значение t0high не могло бы измениться). Да, конечно, t0high ведь программное расширение 8-битного таймера.

GS> Следующий контрольный вопрос, сколько времени займёт выполнение этого GS> обработчика прерывания? Оно даёт _погрешность_ периода отсчёта временного GS> интервала.

GS> PIC позволяет включить и выключить таймер одной командой, что обеспечивает GS> _точное_ формирование временного интервала даже при низкой тактовой GS> частоте ядра. Что-то я не понял, как выключение таймера (и пропуск им за это время входных импульсов) повышает точность определения временных интервалов? Ну ладо, пусть, это наверно выше моего понимания. Но тогда тем более

1) остановили таймер 2) прочли младшую часть в SFR 3) прочли старшую часть в SFR или из переменной на пике совсем одинаковый вид 4) запустили таймер. Усё.

OR>> С одной стороны - громадный выигрыш. С другой - диапазон 7..70МГц это OR>> узкая ниша даже с точки зрения 0..200Мгц.

GS> Меня интересует возможность заполнить нишу от 20кГц до 20МГц. PIC это А почему именно такой? Потому что именно в нём у пиков преимущество?

OR>> Мне так вообще за последние несколько лет частотомер крепко OR>> понадобился (осциллографа не хватило :-) только один раз и там надо OR>> было померять отношение частот.

GS> Твой самый серьёзный аргумент во всём обсуждении ;) GS> Правда он другим может быть абсолютно неубедителен...

Твоё "меня интересует диапазон XX...YY" -- это серьёзный аргумент Моё "меня интересует диапазон выше ZZZ + возможность мерять отношение частот" -- это неубедительно. Так ты всегда будешь прав.

12-Jul-04 22:26 Alexander Derazhne wrote to Oleksandr Redchuk:

OR>> Раз.

OR>> Это я считаю *реальные* недостакти AVR, упомянутые в этом треде :-) OR>> Отсутствие приоритетной системы прерываний. OR>> Даже у классического MCS51 это сделано лучше.

AD> Нет совместимости младших и старших моделей по крайней мере в AD> области AD> векторов прерываний. Если замена на более старший кристалл идёт по AD> причине AD> большей периферии и/или программной памяти, то перекомпиляция неизбежна, Это 0.5 недостатка, так как по причине "большей периферии" перекомпилировать всё равно надо, при переходах <=8KB flash - 8..64KB - >64KB перекомпилировать всё равно надо.

AD> а AD> совместимость не требуется. Если же необходим больший объём ОЗУ (в моём AD> случае мега16 возможно будет заменена на мегу32 именно по этой причине), AD> то... Всё равно надо передвинуть инициализацию стека или переразместить переменные, чтобы это увеличение учесть - перекомпиляция.

AD> Операции с битами ограничены 32-я регистрами в/в, в число счастливчиков AD> попали регистры данных, к которым явно будут только байтовые обращения, AD> но не попали некоторые регистры управления и регистры флагов, к которым AD> хотелось бы иметь битовый доступ. А это полтора. А вот упоминавшееся разделение РОН на верхние и нижние - это фигня.

AD> Пойдёт в качестве "два, три"? 0.5+1.5 = 2, пойдёт :-)

wbr,

Hello, Oleksandr! You wrote to "Alexander Derazhne" snipped-for-privacy@i.com.ua> on Tue, 13 Jul 2004

17:32:03 +0000 (UTC):

AD>> îÅÔ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ÍÌÁÄÛÉÈ É ÓÔÁÒÛÉÈ ÍÏÄÅÌÅÊ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ × AD>> ÏÂÌÁÓÔÉ ×ÅËÔÏÒÏ× ÐÒÅÒÙ×ÁÎÉÊ. åÓÌÉ ÚÁÍÅÎÁ ÎÁ ÂÏÌÅÅ ÓÔÁÒÛÉÊ ËÒÉÓÔÁÌÌ AD>> ÉģÔ ÐÏ ÐÒÉÞÉÎÅ ÂÏÌØÛÅÊ ÐÅÒÉÆÅÒÉÉ É/ÉÌÉ ÐÒÏÇÒÁÍÍÎÏÊ ÐÁÍÑÔÉ, ÔÏ AD>> ÐÅÒÅËÏÍÐÉÌÑÃÉÑ ÎÅÉÚÂÅÖÎÁ, OR> üÔÏ 0.5 ÎÅÄÏÓÔÁÔËÁ, ÔÁË ËÁË ÐÏ ÐÒÉÞÉÎÅ "ÂÏÌØÛÅÊ ÐÅÒÉÆÅÒÉÉ" OR> ÐÅÒÅËÏÍÐÉÌÉÒÏ×ÁÔØ ×ӣ ÒÁ×ÎÏ ÎÁÄÏ, ÐÒÉ ÐÅÒÅÈÏÄÁÈ <=8KB flash - OR> 8..64KB - >64KB ÐÅÒÅËÏÍÐÉÌÉÒÏ×ÁÔØ ×ӣ ÒÁ×ÎÏ ÎÁÄÏ.

AD>> Á ÓÏ×ÍÅÓÔÉÍÏÓÔØ ÎÅ ÔÒÅÂÕÅÔÓÑ. åÓÌÉ ÖÅ ÎÅÏÂÈÏÄÉÍ ÂÏÌØÛÉÊ ÏÂߣÍ ïúõ AD>> (× ÍϣÍ ÓÌÕÞÁÅ ÍÅÇÁ16 ×ÏÚÍÏÖÎÏ ÂÕÄÅÔ ÚÁÍÅÎÅÎÁ ÎÁ ÍÅÇÕ32 ÉÍÅÎÎÏ ÐÏ AD>> ÜÔÏÊ ÐÒÉÞÉÎÅ), ÔÏ... OR> ÷ӣ ÒÁ×ÎÏ ÎÁÄÏ ÐÅÒÅÄ×ÉÎÕÔØ ÉÎÉÃÉÁÌÉÚÁÃÉÀ ÓÔÅËÁ ÉÌÉ ÐÅÒÅÒÁÚÍÅÓÔÉÔØ OR> ÐÅÒÅÍÅÎÎÙÅ, ÞÔÏÂÙ ÜÔÏ Õ×ÅÌÉÞÅÎÉÅ ÕÞÅÓÔØ - ÐÅÒÅËÏÍÐÉÌÑÃÉÑ.

îÅ ÏÂÑÚÁÔÅÌØÎÏ. óÔÒÏÇÏ ÇÏ×ÏÒÑ Ñ ÎÅ ÐÒÏ×ÅÒÑÌ, ÎÏ _×ÅÒÏÑÔÎÏ_ ÍÏÖÎÏ ÐÒÏÇÎÁÔØ ÔÅÓÔ ÐÁÍÑÔÉ É ×ÙÑÓÎÉÔØ ÏÂߣÍ. èÏÔÑ ÍÏÖÅÔ É ÎÅ ÐÏÌÕÞÉÔÓÑ - ËÔÏ ÚÎÁÅÔ, ËÁË ÞÉÐ ÏÔÎÅӣÔÓÑ Ë ÏÂÒÁÝÅÎÉÀ ÚÁ ÐÒÅÄÅÌÙ ÉÍÅÀÝÉÈÓÑ ÁÄÒÅÓÏ×. ñ ÐÙÔÁÌÓÑ ÒÁÚÍÅÓÔÉÔØ ÓÔÅË × òïîÁÈ (ÇÙ!), ÐÒÏÃÅÓÓÏÒ ÐÒÏÓÔÏ ÕÌÅÔÁÅÔ × ÎÅÉÚ×ÅÓÔÎÏÍ ÎÁÐÒÁ×ÌÅÎÉÉ ÐÒÉ ÐÏÐÙÔËÅ ÓÄÅÌÁÔØ call. óÔÅË, ËÓÔÁÔÉ, ÍÏÖÎÏ ÒÁÚÍÅÓÔÉÔØ É ×ÎÉÚÕ, ÈÏÔÑ ÜÔÏ É ÎÅ ÔÁË ÔÒÁÄÉÃÉÏÎÎÏ. åݣ ×ÏÚÍÏÖÎÁ ÓÉÔÕÁÃÉÑ, ËÏÇÄÁ Õ ÔÅÂÑ ÅÓÔØ × ÎÁÌÉÞÉÉ ÍÅÇÁ32 É ÔÙ ÓËÒÉÐÑ ÚÕÂÁÍÉ ÐÙÔÁÅÛØÓÑ ÐÏÓÔÁ×ÉÔØ ţ ×ÍÅÓÔÏ ÏÔÓÕÔÓÔ×ÕÀÝÅÊ × ÄÁÎÎÙÊ ÍÏÍÅÎÔ 16-ÏÊ. óÎÑÔÉÅ 16-ÏÊ Ó ÐÒÏÉÚ×ÏÄÓÔ×Á Ó ÒÅËÏÍÅÎÄÁÃÉÅÊ ÐÅÒÅÈÏÄÉÔØ ÎÁ 32-À ÔÏÖÅ ÉÓËÌÀÞÉÔØ ÎÅÌØÚÑ. ÷ÐÒÏÞÅÍ, Ñ ÐÒÉÄÒÁÌÓÑ ÔÏÌØËÏ Ë Ä×ÕÍ ÐÏÞÔÉ ÓÏ×ÍÅÓÔÉÍÙÍ ËÒÉÓÔÁÌÌÁÍ, ËÁË ÏÂÓÔÏÉÔ ÄÅÌÏ Õ ÏÓÔÁÌØÎÙÈ Ñ ÎÅ ÚÎÁÀ.

OR> 0.5+1.5 = 2, ÐÏÊģÔ :-)

îÕ, ÔÏÇÄÁ ×ÏÔ Åݣ, ÎÏ ÕÖÅ ÎÁ ÐÒÁ×ÁÈ "ÐÏÖÅÌÁÎÉÑ". ëÏÍÁÎÄÁ "ÓÒÁ×ÎÉÔØ Ó ÍÁÓËÏÊ É ÐÒÏÐÕÓÔÉÔØ, ÅÓÌÉ ÞÔÏ" :-). ÷ ËÏÍÁÎÄÅ ÄÏÌÖÎÏ ÂÙÔØ ÔÒÉ ÏÐÅÒÁÎÄÁ - ÒÅÇÉÓÔÒ ×/×, ÍÁÓËÁ ×ÙÄÅÌÑÅÍÙÈ ÂÉÔ, ÍÁÓËÁ ÓÒÁ×ÎÅÎÉÑ. îÁÚÎÁÞÅÎÉÅ - ÏÔÌÏ× ÎÕÖÎÏÊ ËÏÍÂÉÎÁÃÉÉ (ÍÁÓËÁ ÓÒÁ×ÎÅÎÉÑ) ÎÕÖÎÙÈ ÂÉÔ(ÍÁÓËÁ ×ÙÄÅÌÅÎÉÑ). îÏ ÜÔÏ Ñ ÕÖÅ ÎÁÇÌÅÀ :-)).

With best regards, Alexander Derazhne

÷ÓÅÍ ÐÒÉ×ÅÔ.

ü... ÷ÌÏÖÅÎÎÙÅ ÐÒÅÒÙ×ÁÎÉÑ ËÁË? óËÏÒÏÓÔØ ÒÅÁËÃÉÉ ÎÁ ÓÏÂÙÔÉÑ ÉÚ-ÚÁ ËÕÞÉ ÐÒÏ×ÅÒÏË ÆÌÁÇÏ× ËÁË?
ó ÎÉÍ ÎÅ ÒÁÂÏÔÁÌ, ÎÏ ÄÌÑ ðéëÁ ÜÔÏ ÎÅÓÏÍÎÅÎÎÙÊ ÐÒÏÇÒÅÓÓ - ÉÚ ÎÉÚËÏÐÒÉÏÒÉÔÅÔÎÏÇÏ ÐÒÅÒÙ×ÁÎÉÑ ÕÖÅ ÍÏÖÎÏ ×ÙÚ×ÁÔØ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÅ. ôÏÌØËÏ ×ÏÔ ëáë ÐÒÅÒ×ÁÔØ ÏÂÒÁÂÏÔÞÉËÁ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÇÏ ÐÒÅÒÙ×ÁÎÉÑ?
á ÒÅÁÌØÎÏ × ÞÅÍ ÎÅÄÏÓÔÁÔÏË? ÷ÌÏÖÅÎÎÙÅ ÐÒÅÒÙ×ÁÎÉÑ ÏÒÇÁÎÉÚÕÀÔÓÑ Ó×ÏÂÏÄÎÏ, ÄÁ É ÏÂÝÉÊ ÚÁÐÒÅÔ ÐÒÅÒÙ×ÁÎÉÊ ÎÁ ËÒÉÔÉÞÅÓËÏÍ ÕÞÅÓÔËÅ ËÏÄÁ ÐÒÅÒÙ×ÁÎÉÑ ÎÉËÏÍÕ ÅÝÅ ÎÅ ÍÅÛÁÌ... á ÐÒÉ ÏÄÎÏ×ÒÅÍÅÎÎÙÈ ÓÏÂÙÔÉÑÈ ÒÁÚÒÅÛÅÎÎÙÈ ÐÒÅÒÙ×ÁÎÉÊ ÐÒÉÏÒÉÔÅÔ ×ÒÏÄÅ ÏÄÎÏÚÎÁÞÎÙÊ - ÐÏ ÎÏÍÅÒÕ, ÏÓÔÁÌØÎÙÅ ÖÄÕÔ...
äÁ, ÓÏÇÌÁÓÅÎ. úÁ ÔÁËÏÅ ÒÁÓÐÒÅÄÅÌÅÎÉÅ ÒÅÇÉÓÔÒÏ× × ÐÒÏÓÔÒÁÎÓÔ×Å ÷/÷ ÉÎÏÇÄÁ ïþåîø ÈÏÞÅÔÓÑ ÐÏÄÅÒÖÁÔØ ÔÏÇÏ ÒÁÚÒÁÂÏÔÞÉËÁ ÚÁ ... ÛÅÀ. :(
îÅ, Ä×Á ÓÔÅËÁ ÜÔÏ ÔÁËÁÑ ÆÉÞÁ ÄÌÑ ËÏÍÐÉÌÑÔÏÒÁ. ó ÎÉÍÉ ÕÄÏÂÎÅÅ ÒÁÂÏÔÁÔØ. ðÒÉÞÅÍ ÐÒÁËÔÉÞÅÓËÉ ÎÁ ÌÀÂÏÍ ÞÉÐÅ ÇÄÅ ÔÁËÏÅ ×ÏÚÍÏÖÎÏ. GCC ÐÒÏÓÔÏ ÎÁÓÌÅÄÕÅÔ ÐÏÄÈÏÄ ÄÌÑ È86-ÇÏ. [5],[6],[7] - ÄÁÖÅ ÎÅ ÚÁÍÅÞÁÀ. áÒÔÅÍëáä

Hello, Artem! You wrote to Harry Zhurov on Tue, 13 Jul 2004 21:47:37 +0000 (UTC):

AK> á ÒÅÁÌØÎÏ × ÞÅÍ ÎÅÄÏÓÔÁÔÏË? ÷ÌÏÖÅÎÎÙÅ ÐÒÅÒÙ×ÁÎÉÑ ÏÒÇÁÎÉÚÕÀÔÓÑ AK> Ó×ÏÂÏÄÎÏ, ÄÁ É ÏÂÝÉÊ ÚÁÐÒÅÔ ÐÒÅÒÙ×ÁÎÉÊ ÎÁ ËÒÉÔÉÞÅÓËÏÍ ÕÞÅÓÔËÅ ËÏÄÁ AK> ÐÒÅÒÙ×ÁÎÉÑ ÎÉËÏÍÕ ÅÝÅ ÎÅ ÍÅÛÁÌ... á ÐÒÉ ÏÄÎÏ×ÒÅÍÅÎÎÙÈ ÓÏÂÙÔÉÑÈ AK> ÒÁÚÒÅÛÅÎÎÙÈ ÐÒÅÒÙ×ÁÎÉÊ ÐÒÉÏÒÉÔÅÔ ×ÒÏÄÅ ÏÄÎÏÚÎÁÞÎÙÊ - ÐÏ ÎÏÍÅÒÕ, AK> ÏÓÔÁÌØÎÙÅ ÖÄÕÔ...

÷ ËÏÔÏÒÙÊ ÒÁÚ ÎÁÐÏÍÉÎÁÀ - ÏÐÙÔ Ó AVR'ÁÍÉ Õ ÍÅÎÑ ÐÏËÁ ÏÞÅÎØ ÍÁÌÅÎØËÉÊ, ÍÏÇÕ ÏÛÉÂÁÔØÓÑ. ðÒÉ ×ÈÏÄÅ × ÏÂÒÁÂÏÔÞÉË ÁÐÐÁÒÁÔÎÏ ÚÁÐÒÅÝÁÀÔÓÑ ×ÓÅ ÐÒÅÒÙ×ÁÎÉÑ, ÇÌÏÂÁÌØÎÙÍ ÆÌÁÇÏÍ. ðÒÉ ×ÙÈÏÄÅ ÐÏ RETI - ÆÌÁÇ ÓÎÏ×Á ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ. éÓÔÏÞÎÉË ÔÅËÕÝÅÇÏ ÐÒÅÒÙ×ÁÎÉÑ ÐÒÉ ÜÔÏÍ ÎÉÞÅÍ ÎÅ ÍÁÓËÉÒÕÅÔÓÑ, Ô.Å. ÅÓÌÉ ÓÁÍ ÆÁËÔ ×ÈÏÄÁ × ÏÂÒÁÂÏÔÞÉË ÎÅ ÓÎÉÍÁÅÔ ÁÐÐÁÒÁÔÎÏ ÆÌÁÇ ÚÁÐÒÏÓÁ, ÔÏ ÇÌÏÂÁÌØÎÏ ÒÁÚÒÅÛÁÔØ ÐÒÅÒÙ×ÁÎÉÑ ÎÅÌØÚÑ, ÎÅ ÓÄÅÌÁ× ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÔÅÌÏÄ×ÉÖÅÎÉÊ ÐÏ ÍÁÓËÉÒÏ×ËÅ/ÄÅÍÁÓËÉÒÏ×ËÅ. ëÓÔÁÔÉ, ÒÅÇÉÓÔÒ ÓÏÓÔÏÑÎÉÑ ÐÒÁËÔÉÞÅÓËÉ ×ÓÅÇÄÁ ÐÒÉģÔÓÑ ÓÏÈÒÁÎÑÔØ, ÍÅÎØÛÅ ÞÅÍ ÞÅÔףÒËÏÊ ËÏÍÁÎÄ ÎÅ ÏÂÏÊģÛÓÑ. éÌÉ ÐÏÖÅÒÔ×Ï×ÁÔØ ÐÏÄ ÜÔÏ ÄÅÌÏ ÏÄÉÎ ÉÚ òïîÏ×, ÎÏ ÔÏÇÄÁ ÎÉËÁËÏÊ ×ÌÏÖÅÎÎÏÓÔÉ.

AK> îÅ, Ä×Á ÓÔÅËÁ ÜÔÏ ÔÁËÁÑ ÆÉÞÁ ÄÌÑ ËÏÍÐÉÌÑÔÏÒÁ. ó ÎÉÍÉ ÕÄÏÂÎÅÅ AK> ÒÁÂÏÔÁÔØ. ðÒÉÞÅÍ ÐÒÁËÔÉÞÅÓËÉ ÎÁ ÌÀÂÏÍ ÞÉÐÅ ÇÄÅ ÔÁËÏÅ ×ÏÚÍÏÖÎÏ. GCC AK> ÐÒÏÓÔÏ ÎÁÓÌÅÄÕÅÔ ÐÏÄÈÏÄ ÄÌÑ È86-ÇÏ.

÷ ޣÍ ÕÄÏÂÎÅÅ? óÔÅË ÓÉÌØÎÏ ÎÅÐÒÅÄÓËÁÚÕÅÍÁÑ ÛÔÕËÁ, Ó ÐÅÒÅÐÏÌÎÅÎÉÅÍ ÏÄÎÏÇÏ È×ÁÔÁÅÔ ÈÌÏÐÏÔ, Á ÕÖ ÒÁÚÍÅÓÔÉÔØ Ä×Á, ÄÁ Åݣ É ËÕÞÕ - ÂÅÄÎÙÊ, ÂÅÄÎÙÊ ËÏÍÐÉÌÑÔÏÒ :-).

With best regards, Alexander Derazhne

Tue Jul 13 2004 16:12, George Shepelev wrote to Yuriy K:

MP>>> âÅÒÅÍ ÐÉË 16c620a - ÔÁËÔÏ×ÁÑ 40ÍÇà (ÚÁ×ÏÄÓËÏÊ ÐÒÅÄÅÌ) , YK>> ïÔ Ë×ÁÒÃÁ.

MP>>> 40/24=1.6666 MP>>> õ attiny ÔÁËÔÏ×ÁÑ 8ÍÇà (ÚÁ×ÏÄÓËÏÊ ÐÒÅÄÅÌ). YK>> ATtiny26 - 16íçà ÏÔ Ë×ÁÒÃÁ.

MP>>> 8/6=1.3333 YK>> 16/6 = 2,666

MP>>> ëÕ ÉÌÉ ÎÅ ëÕ? ;) YK>> þÔÏ ÂÏÌØÛÅ, 2,66 ÉÌÉ 1,66?

GS> á ÄÁ×ÁÊ ÔÅÐÅÒØ ×ÏÚØͣÍ Scenix. PIC'Ï×ÓËÁÑ ÓÉÓÔÅÍÁ ËÏÍÁÎÄ, 100 íçÃ, 1 GS> ÔÁËÔ GS> ÎÁ ËÏÍÁÎÄÕ...

ðÏÆÉÇ. òÅÞØ ÛÌÁ Ï ÐÉËÁÈ.

GS> 100/6 = 16,7 íçÃ. GS> þÔÏ ÂÏÌØÛÅ, 16,7 ÉÌÉ 2,66? ;)

óËÏÌØËÏ ÓÔÏÉÔ óÃÅÎÉËÓ?

WBR, àÒÉÊ.

13-Jul-04 11:23 Alexander Golov wrote to Oleksandr Redchuk:

AG>>> Хочешь быстро считать -- появились dsPIC30 -- они намного быстрее AG>>> самого быстрого AVR'а.

OR>> Кстати, что у них с инструментарием?

AG> Да вроде нормально, хотя я лично ещё не пробовал (задач пока нет). Не.. Не катит. Там, где мне сейчас надо АЦП на уровне 150-200кГц, и в перспективе может захотеться побыстрее считать (и ШИМ-ы килогерц 50 несколько согласованных), там мне и ОЗУ надо где-то под 32КБ (а лучше ещё больше). А у dsPIC ни внутри нет столько, ни шины внешней нет. А так машинка вроде неплохая. А я вот даже не знаю, толи что-то в духе TMS320LF2407 заложить с внешним ОЗУ, толи пока послать подальше перспективу "побыстрее считать и ШИМ-ы шустрые".

AG>>> brne label ; 2/1 / AG>>> dec r13 ; 1 \ AG>>> brne label ; 2/1 / 3

OR>> Можно счётчик поместить в пару, которая, к сожалению, не указатель, OR>> но adiw/sbiw с ними работают. OR>> sbiw r24,1 ; 2 OR>> brne label ; 2

AG> Просто это всё таки медленнее и нивелирует 1-цикловое преимущество AVR AG> при суммировании на двух указателях. Да я уже после отпарвки понял, что это будет короче, но не быстрее.

wbr,

13-Jul-04 05:31 Harry Zhurov wrote to Alexander Derazhne:

AD>> Пойдёт в качестве "два, три"?

HZ> [4] Убогий указатель стека. Гораздо лучше было бы, если бы указатель HZ> стека HZ> был бы регистровой парой. Тогда не было бы необходимости в раздельных HZ> стеках HZ> (для данных и для адресов возвратов), которые юзает ИАР. GCC использует HZ> один стек, но это, имхо, еще хуже (по эффективности кода). Как хотя бы слабую моральную компенсацию этого (4) могли бы хотя бы автоматом запрещать прерывания на 1 такт после команды out в SPH, тогда на мелких кристаллах без SPH вообще ничего не поменялось бы, а на более толстых gcc вместо in __temp_reg__,sreg cli out SPH,r29 out sreg,__temp_reg__ out SOL,r28

спокойно мог бы делать

out SPH,r29 out SPL,r28

Ну а нормальный стек на одной из регистровых пар и никаких идиотских SPH/SPL это было бы просто счастьем :-)

HZ> [5] Неполноценный указатель X (r26:r27). Отсутствие у него режимов HZ> адресации со смещением порождает порой геморройный код. Особенно это HZ> заметно на HZ> ИАР 2.27(2.28). В 3.хх сделали уже лучше, но все равно кривизны это не HZ> убавляет.

HZ> [6] Несбалансированный регистровый файл. ИМХО, вместо 32 регистров HZ> лучше бы HZ> было их 16, но чтобы они при этом были полностью симметричными (позволяющими HZ> работу с любыми командами) и чтобы любая регистровая пара могла быть HZ> указателем, а не только старшие три. И, как уже говорилось, чтобы одна HZ> из регистровых пар была указателем стека. Эти два пункта взаимосвязаны. 32 регистра сожрали 10 бит в КОП-ах

2-адресных команд и 5 бит в кодах одноадресных команд, из-за чего стало тесно и не хватает кодов ни для нормального X, ни для большего количества регисторвых пар. Кстати, вполне возможно, что и для 16 регистров не хватило бы кодов для того, чтобы они все могли быть парами. Но вот старшие 8 из них чтобы были парами, одинаковыми по методам адресации, да чтобы самые старшие были указателем стека -- это точно хватило бы. Я не уверен, что 7 указателей (кроме SP) прямо так нужны. Полная симметрия это "красиво", но вот экономично ли? А вот SP с адресацией смещением и к этому ещё три "нормальных" пары - это IMHO было бы достаточно. Это было бы в два раза лучше, чем сейчас (у IAR - один SP на Y и ещё Z, X практически не в счёт). А освободившиеся коды лучше отправить на загрузку/выгрузку по указателю регистровых пар и т.п. Т.е. код адресной пары 7 ld/st в регистр косвенно по паре 7 6 6 5 5 4 4

3 пусть лучше ld/st пары регистров по паре 7, чем одного регистра по паре 3. Тебе бы очень понравилась загрузка/выгрузка всей старшей пары (указателя стека!) одной неразрывной командой по паре 6 :-)

2 и т.д. 1 0

Но это при чётном номере регистра-получателя :-) А при нечётном - ld пусть в памяти берёт один байт, и знаково его расширяет в пару по (номеру dst) & 0b110

HZ> [7] Все-таки, имхо, медленная работа с памятью. Она все гробит - при HZ> элементарном инкременте ячейки ОЗУ - 80% накладных расходов на копирование. HZ> Это явный перекос. Опять вопрос на тему свободного кодового пространства.

На эту же тему [8] Аназачем они сделали это идиотское пространство ввода-вывода? in/out им захотелось? Как я уже говорил, "если ядро AVR разрабатывали и программисты, то программисты на визуалбейсике, а не на С". Целых 6 бит в КОП-ах под номер порта! И всё равно портов не хватило, ещё во время появления меги 103 было ясно, что SFR скоро не влезут в 64 байта. Итого у меги128 вместо того, чтобы иметь два одинаковых UART и иметь возможность работать с ними обеими одним кодом через указатель на начало их регистров - имеем какую-то такое... Вместо этого надо было бы сделать (не инкремент памяти, нет, это не надо) возможность только с одним методом адресации, а именно (ptr+disp) установить/сбросить/проверить бит. Это то, что сейчас можно сделать с SFR кроме in/out, заменяемых на ld/st. in r0,port10 => ld r0,Y+10 out port11,r1 => st Y+11,r1 sbi port12,3 => bset Y+12,3 cbi port13,4 => bclr Y+13,4 sbis port14,5 => skpbs Y+14,5 sbic port15,6 => skpbc Y+15,6 хм... ещё две комбинации просятся :-) ну тогда btg и skpbsc (пропуск при установелнном со сбросом :-) Перед началом работы с SFR можно было бы прсто загрузить в какую-то пару адрес начала нужной области SFR. У мелких типа tiny и младших classic хватило бы загрузки только младшего регистра из пары. На них при даже всего 4-х парах можно было бы в самом начале программы загрузить, скажем, в XL начало области SFR (всех, у мелких их мало) и в течении всей программы спокойно работать "в нынешнем стиле" (в мелких кристаллах часто вся работа состоит в махании ножками). А в программах с работой с IO в небольшом кол-ве подпрограмм загружать указатель адресом зоны SFR только где надо а в остальное время использовать его для работы с областью ОЗУ. При этом на толстых кристаллах с SFR больше 64 байт особых проблем не возникло бы, одновремённо со всеми всё равно работа не идёт. А то, что малость работа с портами удлиннилась бы и частота лапкоймахания упала бы -- так это по большому счёту фигня :-) Зато уж про битовые флаги претензии пропали бы (сейчас где-то раздаётся восторжённое АГГААА!!! :-)

Хотя это ещё кодовое пространство смотреть надо - не понадобится ли мне ГЗМ увеличенной мощности :-)

HZ> Вот это, имхо, самые серьезные недостатки AVR. Все относится к HZ> архитектуре. Убить мало за то, что они наворотили :-(

wbr,

Hi Artem, hope you are having a nice day!

14 éÀÌ 04, Artem Kamburov wrote to Harry Zhurov:

äÁ ÎÅÐÌÏÈÏ. ôÏÌØËÏ ×ÌÏÖÅÎÎÙÅ ÐÒÅÒÙ×ÁÎÉÑ - ÜÔÏ ËÏÒÑ×Ï ÐÏ ÓÁÍÏÊ ÓÕÔÉ. èÏÔÑ ÎÁ PIC16 ÍÎÅ ÐÒÉÈÏÄÉÌÏÓØ ÔÁËÏÅ ÄÅÌÁÔØ.

AK> óËÏÒÏÓÔØ ÒÅÁËÃÉÉ ÎÁ ÓÏÂÙÔÉÑ ÉÚ-ÚÁ ËÕÞÉ AK> ÐÒÏ×ÅÒÏË ÆÌÁÇÏ× ËÁË?

ðÒÏ×ÅÒËÁ ÆÌÁÇÁ + ÐÅÒÅÈÏÄ 3 ÔÁËÔÁ. âÅÚ ÐÅÒÅÈÏÄÁ - 2. çÄÅ ÔÙ Õ×ÉÄÅÌ ËÕÞÕ ÐÒÏ×ÅÒÏË?

AK> ó ÎÉÍ ÎÅ ÒÁÂÏÔÁÌ, ÎÏ ÄÌÑ ðéëÁ ÜÔÏ ÎÅÓÏÍÎÅÎÎÙÊ ÐÒÏÇÒÅÓÓ - ÉÚ AK> ÎÉÚËÏÐÒÉÏÒÉÔÅÔÎÏÇÏ ÐÒÅÒÙ×ÁÎÉÑ ÕÖÅ ÍÏÖÎÏ ×ÙÚ×ÁÔØ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÅ. AK> ôÏÌØËÏ ×ÏÔ ëáë ÐÒÅÒ×ÁÔØ ÏÂÒÁÂÏÔÞÉËÁ ×ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÇÏ ÐÒÅÒÙ×ÁÎÉÑ?

HÁÈÒÅÎÁ??? ÷ÙÓÏËÏÐÒÉÏÒÉÔÅÔÎÏÅ ÐÒÅÒÙ×ÁÎÉÅ ÄÌÑ ÔÏÇÏ É ÎÕÖÎÏ, ÞÔÏÂÙ ÍÇÎÏ×ÅÎÎÏ ÏÔÒÅÁÇÉÒÏ×ÁÔØ ÎÁ ×ÎÅÛÎÅÅ ÓÏÂÙÔÉÅ É ÞÔÏ-ÔÏ ÂÙÓÔÒÏ ÓÄÅÌÁÔØ (ÓÏÂÓÔ×ÅÎÎÏ ÄÌÑ ÜÔÏÇÏ ËÏÎÔÅËÓÔ ÓÏÈÒÁÎÑÅÔÓÑ ÁÐÐÁÒÁÔÎÏ, × ÏÔÌÉÞÉÉ ÏÔ ÎÉÚËÏÇÏ ÐÒÉÏÒÉÔÅÔÁ). ÷ÌÏÖÅÎÎÙÅ ÐÒÅÒÙ×ÁÎÉÑ ÒÅÁÌÉÚÕÀÔÓÑ ÎÁ ÎÉÚËÏÍ ÐÒÉÏÒÉÔÅÔÅ. óÄÅÌÁÔØ ÔÁÍ ÐÒÉÏÒÉÔÅÔÎÕÀ ÒÅÁËÃÉÀ É ÒÅÅÎÔÅÒÁÂÅÌØÎÏÓÔØ ÏÂÒÁÂÏÔÞÉËÁ ÎÅ ÓÏÓÔÁ×ÌÑÅÔ ÐÒÏÂÌÅÍÙ.

WBR, AVB

Hi Yuriy, hope you are having a nice day!

14 éÀÌ 04, Yuriy K wrote to George Shepelev:

GS>> 100/6 = 16,7 íçÃ. GS>> þÔÏ ÂÏÌØÛÅ, 16,7 ÉÌÉ 2,66? ;) YK> óËÏÌØËÏ ÓÔÏÉÔ óÃÅÎÉËÓ?

formatting link
WBR, AVB

Здравствуйте.

AB>>>> ... фу, какие заморочки. В AVR этого нет. GS>>> Да, в AVR с этим гораздо хуже. БОльшая часть SRAM и все порты GS>>> напрямую недоступны. AK>> Чего ??? Ты хоть знаешь о чем говоришь ? GS> Значительно лучше тебя! GS> Изобрази выдачу двух противофазных меандров на ножках порта. GS> Вот соответствующий код для PIC.

- Мальчик, как тебя зовут?

- ...

- Ты что, тормоз?

- Меня зовут Эдик.

- А фамилия?

- Нет, не тормоз.

GS> MOVLW 01b GS> MOVWF PORTx ; инициализация порта "противофазными" битами

GS> MOVLW 11b ; модифицируемые биты GS> loop1: GS> XORWF PORTx,1 ; модификация с прямым доступом к порту GS> ; 1 цикл GS> GOTO loop1 ; 2 цикла

А теперь давай по существу. Так бОльшая часть чего в AVR недоступна ? Что касается меандров - мне они абсолютно без надобности.

RA>> Уж не DTMF ли ШИМом генерил?

GS> Естественно. 8-ми битный ШИМ.

RA>> У меня на 2х ножках и 2х таймерах получилось.

GS> Ужас какой! 1 таймер, 1 ножка. Прекрасно формируется на 16F874. GS> При желании сэкономить берётся дешёвый 16F818.

Угу. Покажи, как сделал? Особенно момент суммирования 2х частот ;-)

RA>> Я что-то подобное твоей задаче вначале сделал на 877м. Потом перешел RA>> на 18е - и вздохнул с облегчением. Попробуй - понравится ;-)

GS> Мне _вполне_ хватает 16-го семейства. Опыт ;)

Иди дальше. Опыт 16х очень даже в 18х пригождается.

Привет!

Tue Jul 13 2004 10:49, Alexey Boyko wrote to Alexander Golov:

...

AB>>> Пока что, кроме возможности прицепить два Input Capture на один AB>>> таймер ничего превосходного не нашел. Hо лучше уж я msp430 AB>>> возьму.

AG>> Это было в самом старом PIC16C73, а в PIC18 как раз появилась AG>> возможность использовать разные таймеры.

AB> Hеужели я так и не смог объяснить.

По-моему в полной форме это звучит впервые.

AB> Есть два периодических события AB> нужно измерять период одного и время между первым и вторым. Еще нужно AB> будет генерировать третье, тоже периодическое, через определенное AB> время от первого события. Для этого надо завести один таймер и иметь AB> с этого таймера 2 Input Capture,

Вот эта возможность была ещё в 73-м.

AB> 1 Output Compare.

Третьего CCP в них не было.

AB> С этим нет проблем AB> в msp430, так как у него есть модели с пятью Capture/Compare модулями.

Сейчас 3 CCP есть и в PIC16 (737...777).

AB> Hа atmega128 мне пришлось завести два таймера синхронно (atmega126/64 AB> позволяет синхронизировать их прескелеры). При этом я имею 2 Input AB> Capture, AB> и 6 Output Compare. В остальном задача не сложная, поэтому что-то мне AB> подсказывает, что mega128/mega64 - избыточны. Вот и думаю, мем бы AB> заменить.

Несколько CCP на одном таймере есть также в HC08 (но лично я забыл про них как про страшный сон и возвращаться не имею никакого желания).

Tue, 13 Jul 2004 21:47:37 +0000 (UTC) Artem Kamburov wrote to Harry Zhurov:

[...]

AK> îÅ, Ä×Á ÓÔÅËÁ ÜÔÏ ÔÁËÁÑ ÆÉÞÁ ÄÌÑ ËÏÍÐÉÌÑÔÏÒÁ. ó ÎÉÍÉ ÕÄÏÂÎÅÅ ÒÁÂÏÔÁÔØ. AK> ðÒÉÞÅÍ ÐÒÁËÔÉÞÅÓËÉ ÎÁ ÌÀÂÏÍ ÞÉÐÅ ÇÄÅ ÔÁËÏÅ ×ÏÚÍÏÖÎÏ. GCC ÐÒÏÓÔÏ ÎÁÓÌÅÄÕÅÔ AK> ÐÏÄÈÏÄ ÄÌÑ È86-ÇÏ.

îÉÞÅÇÏ ÈÏÒÏÛÅÇÏ × ÜÔÏÍ ÎÅÔ! éÚ-ÚÁ ÜÔÏÇÏ ÐÁÍÑÔØ ÎÅÒÁÃÉÏÎÁÌØÎÏ ÉÓÐÏÌØÚÕÅÔÓÑ. ÷ÏÔ × 430-Í ÏÄÉÎ ÓÔÅË É ×ÓÅ ÈÏËËÅÊ!

AK> [5],[6],[7] - ÄÁÖÅ ÎÅ ÚÁÍÅÞÁÀ.

ñ ÔÏÖÅ ÎÅ ÚÁÍÅÞÁÌ ÄÏ ÐÏÒÙ ÄÏ ×ÒÅÍÅÎÉ.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required