Thu Aug 03 2006 12:33, Dmitry Orlov wrote to Yuriy K:
AB>>>>> Посмотрел, при 16МГц - 62.5 нС. Hа вид очень быстро, AB>>>>> ПИК при 20МГц - 200 нС . А вот ножкой помахать быстрее ПИКа не AB>>>>> может.
YK>>>> Лежит на столе AVR @16MHz и машет ногой. YK>>>> 250нс период @25% duty, 375нс меандр.
Это именно программное управление. AYtiny26.
DDRA = BINARY(11100000); PORTA = BINARY(11100000); DDRB = BINARY(01101000); PORTB = BINARY(01100000);
asm (" ldi r16,0E0h \n" " ldi r17,060h \n" "Label: \n" " out 01Bh,r16 \n" // " nop \n" // " nop \n" " out 01Bh,r17 \n" " rjmp Label");
nop-ы раскомментировать для генерации меандра.
DO> Под этим обычно понимается программное управление ножкой. А то можно DO> стать скопом на XTAL OUT и говорить, что процессор машет ногой с DO> частотой кварца.
Разумеется программное управление. Смотри код выше. AVR, 16MHz.
В третий раз повторяю вопрос: "Hа каком пике можно сделать то же самое?" Хоть програмный меандр 375нс, хоть программный прямоугольник 250 нс.
YK>> Лежит на столе тот же самый AVR и машет таймером с частотой 32MHz. YK>> Вопрос остается тот же самый:
DO> 16мегагерцовый AVR машет с частотой 32 мегагерца? Хорошая у тебя трава, DO> не поделишься?
Доки можно курить, но читать все же полезней.
formatting link
Вот код для ATtiny26.
DDRB = BINARY(01101000); PORTB = BINARY(01100000); PLLCSR = BINARY(00000010); while(!tst_bit(PLLCSR,0)) {}; PLLCSR = BINARY(00000110); TCCR1A = BINARY(00010000); TCCR1B = BINARY(10000001); OCR1B = 0x00; OCR1C = 0x00;
Hа PB3 наблюдается меандр 32 МHz. Можешь попробовать.
YK>>>> Как и на каком пике можно сделать быстрее?
DO>>> Таймером же. Hа любом практически. Hа PIC18 - и существенно быстрей. DO>>> Кстати 20МГц PIC обеспечивает ~78кГц несущей восьмиразрядного PWM, DO>>> а 16MHz AVR - только 32.
YK>> Лежит на столе тот же самый AVR и генерит 8-битный PWM на частоте YK>> 264кГц.
DO> То есть в AVR PWM тактируется частотой в 67 мегагерц? И что же это DO> за AVR такой?
ATtiny26, например. У него есть PLL на 64МHz.
DDRA = BINARY(11100000); PORTA = BINARY(11100000);
DDRB = BINARY(01101000); PORTB = BINARY(01100000); PLLCSR = BINARY(00000010); while(!tst_bit(PLLCSR,0)) {}; PLLCSR = BINARY(00000110); TCCR1A = BINARY(00100001); TCCR1B = BINARY(00000001); OCR1B = 0x80; // duty ratio OCR1C = 0xFF;
YK>> Как и на каком пике можно сделать быстрее?
DO> По-больше твоей травы, и такое не только на PIC'е, такое и на 8080 без DO> проблем.
RTFM, RTFM, и еще раз RTFM. Вопрос про пик остается в силе.
P.S. Видимо примеров на пике я так и не дождусь. Почему-то меня это не удивляет. :-)))
"Resistance is futile"