|
2 страниц
1 2 >
|
 |
Ответов
(1 - 22)
|
Sep 9 2007, 07:24
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 3-10-06
Из: Vladivostok
Пользователь №: 20 911

|
Цитата(Евгений Германович @ Sep 9 2007, 17:50)  Стабильность частоты определяется параметрами кварцевого генератора.Для вашего случая временной сдвиг можно сделать весьма малым(будет определяться только задержками при переключении выходных портов)Однако ,учитывая,что вам придется программно формировать меандр будет нестабильность периода.Величина нестабильности будет определяться вашей программой. Спасибо. Меня как-раз и интересуют задержки выходных портов?! Не могу найти этой информации
|
|
|
|
|
Sep 9 2007, 09:44
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 3-10-06
Из: Vladivostok
Пользователь №: 20 911

|
Цитата(Евгений Германович @ Sep 9 2007, 19:51)  Я не нашел,но если посмотреть на времена нарастания то получим мах 50 нСек.Кстати вы не получите 20МГц при тактовой 40.не хватит быстродействия. И 10 не получите. movlw 01h ; 25ns movwf PORTA ; 25ns movlw 00h ; 25ns movwf PORTA ; 25ns ; 100ns =10Mhz Конечно, если я теперь использую goto (2-3такта) мне быстродействия не хватит.... вы правы... придется микроконтроллер обвешивать АГшкой и счетчиком....... спасибо за совет.
|
|
|
|
|
Sep 9 2007, 17:28
|

Частый гость
 
Группа: Свой
Сообщений: 117
Регистрация: 6-04-05
Пользователь №: 3 928

|
Цитата(Евгений Германович @ Sep 9 2007, 10:50)  ... учитывая,что вам придется программно формировать меандр ... Читаем внимательно даташит, раздел про ШИМ.
|
|
|
|
|
Sep 12 2007, 12:29
|
Местный
  
Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006

|
Цитата(Евгений Германович @ Sep 9 2007, 14:13)  40 частота кварца,тактовая будет 10 А 10&PLL будет также 10. Предельная частота 96 mHz.
|
|
|
|
|
Sep 12 2007, 14:12
|
Местный
  
Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006

|
Цитата(Евгений Германович @ Sep 12 2007, 15:44)  Поясните пожалуйста про ПЛЛ. и про предельную частоту. Внимательно читаем ДШ, раздел режимы работы тактового генератора. Внутренняя схема PLL, включаемая при программировании микроконтроллера позволяет умножить тактовую частоту на 4. При тактовой частоте 10Мгц внутренняя тактовая частота микроконтроллера будет 40Мгц, делим на 4 и получаем частоту ядра 10Мгц. В новых Пиках режимы работы более сложные, читать ДШ на конкретный кристал. 96МГц предельная частота для флеши, ограничение технологии.
|
|
|
|
|
Sep 13 2007, 07:13
|
Местный
  
Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006

|
Цитата(Евгений Германович @ Sep 12 2007, 17:44)  Ну и что?ДЛя пиков пока мах 40МГц. Да так просто информация для размышления. Цитата The PLL is enabled in HSPLL, XTPLL, ECPLL and ECPIO Oscillator modes. It is designed to produce a fixed 96 MHz reference clock from a fixed 4 MHz input. The output can then be divided and used for both the USB and the microcontroller core clock. Because the PLL has a fixed frequency input and output, there are eight prescaling options to
|
|
|
|
Guest_=AVR=_*
|
Sep 17 2007, 21:29
|
Guests

|
Цитата При наиболее высокой частоте (48 Мгц для контроллеров серии PIC18F2455 и других со встроенным USB) период будет составлять 500 наносекунд Нет, 167 нс, или 6 МГЦ. Не удивляйся, это ассемблер, несмотря на while и окрестности: Код btg_loop: n=0 while n < 256 btg LATA,0 n+=1 endw bra btg_loop Цитата Если ориентироваться на контроллеры серии PIC24H, то на них можно получить период 125 нс Опять неправда - 50 нс, или 20 МГЦ: Код btg_loop: repeat #16383 btg LATA,#0 bra btg_loop Не надо утверждать то, о чем имеешь весьма слабое понятие - ведь могут и поверить
|
|
|
|
|
Sep 18 2007, 08:03
|
Частый гость
 
Группа: Свой
Сообщений: 90
Регистрация: 17-04-05
Из: Минск
Пользователь №: 4 215

|
=AVR= >> Не удивляйся, это ассемблер, несмотря на while и окрестности Это не ассемблер, а макроассемблер. Язык немного более высокого уровня, отличается от обычного ассемблера возможностью использовать макросы-конструкции вроде этого же "while". Если вы скомилируете ваш код и посмотрите листинг, то сможете убедиться: период генерации получится раза в 3 длинее. Кроме того, ваш код отличается от предложенного мною нестабильностью периода генерации - 1 раз на 128 периодов период будет ещё немножко длинее (тактов на 5..6), и скважность увеличится вдвое
Ваш код для PIC24 обладает тем же недостатком: нестабильность периода генерации. Хотя сам период у него короче - это правда.
Спасибо, улыбнуло. Всё же мне кажется, что вы не совсем верно воспринимается логику работы микроконтроллеров.
ЗЫ. Прошу прощения. Операнд " while n < 256" не создаёт 16-битную переменную - он просто не компилируется. Так что и код просто не работает.
|
|
|
|
Guest_=AVR=_*
|
Sep 18 2007, 11:59
|
Guests

|
Я бы ОЧЕНЬ попросил не учить меня тому, что я в силу ряда причин знаю в ТЫСЯЧИ раз лучше тебя - в данном случае ассемблеру. While применено для того, чтобы ассемблер сгенерировал 256 подряд идущих btg LATA,0 - в том ассемблере, которым пользуется большинство ПИКающих, нет директивы .rept, позволившей бы все это записать одной строкой - rept #FLASHLENGTH/2 (btg LATA,0) и обойтись без зацикливания, вносящего подрагивание меандра. Постить же сюда код, состоящий из 12288 одинаковых строк btg LATA,0 я не стал по, надеюсь, очевидным причинам. Для особо одаренных, у которых троятся периоды и не компилируется код, а также для желающих поучить других тому, что они не знают сами, привожу ЛИСТИНГ: Код MPASM 5.13 BTG.ASM 9-18-2007 1:04:00 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT VALUE
00000064 00001 LATA = 100 00002 000000 00003 BTG_LOOP: 00000000 00004 N=0 00005 WHILE N < 256 000000 7164 00006 BTG LATA,0 00000001 00007 N+=1 000002 7164 00006 BTG LATA,0 00000002 00007 N+=1 000004 7164 00006 BTG LATA,0 00000003 00007 N+=1 000006 7164 00006 BTG LATA,0 00000004 00007 N+=1 000008 7164 00006 BTG LATA,0 00000005 00007 N+=1 00000A 7164 00006 BTG LATA,0 00000006 00007 N+=1 00000C 7164 00006 BTG LATA,0 00000007 00007 N+=1 ;................................. и так всего 256 раз на 11 страницах листинга ;................................. ;................................. ;................................. ;................................. ;................................. 0001F8 7164 00006 BTG LATA,0 000000FD 00007 N+=1 0001FA 7164 00006 BTG LATA,0 000000FE 00007 N+=1 0001FC 7164 00006 BTG LATA,0 000000FF 00007 N+=1 0001FE 7164 00006 BTG LATA,0 00000100 00007 N+=1 00008 ENDW 000200 D6FF 00009 BRA BTG_LOOP 00010 END MPASM 5.13 BTG.ASM 9-18-2007 1:04:00 PAGE 11
SYMBOL TABLE LABEL VALUE
BTG_LOOP 00000000 LATA 00000064 N 00000100 __18F2455 00000001
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XX-------------- ---------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Bytes Used: 514 Program Memory Bytes Free: 32254
Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 0 suppressed Ошибок компиляции, как видишь, нет. КАЖДАЯ инструкция btg LATA,0 выполняется за 1 машинный цикл, полный период меандра формируется каждой последовательной парой btg, поэтому частота меандра при максимально допустимой частоте Fcy, равной 12 МГЦ, составит 6 МГЦ, а период, соответственно составит 167 нс, а не втрое больше или семеро козлят. По коду для PIC24 - дергание будет раз в 16384 периода, но код состоит всего из трех слов. При развертывании кода BTG на всю Flash и при выключенном WDT получится абсолютно чистый меандр 20 МГЦ. Это пишется тремя строками, но занимает всю Flash: Код .rept FLASHBYTES/3 btg LATA,#0 .endr Обе эти реализации - для PIC18 и для PIC24 - абсолютно дурацкие, и приведены просто для примера, т.к. делают из МК дебильный генератор, загружая тем самым МК на 100%. На практике для этого используют встроенные в МК таймеры, которые позволяют получить и такие относительно высокие частоты без какой-либо загрузки МК. Какие еще наезды будут, двоешник?
|
|
|
|
Guest_=AVR=_*
|
Sep 18 2007, 13:24
|
Guests

|
Цитата Однако у меня нет причин говорить с вами на "ты" и попрошу сохранять в этом взаимность. Да у меня вообще не было причин с тобой говорить, пока ты не начал гнать дезинформацию читающим эту конфу людям. Обеспечь отсутствие дезы, взвешивай и перепроверяй свои утверждения ДО их появления в конфе - и я просто одобрительно промолчу. А вот с кем как говорить - я решал, решаю, и буду решать сам, уж не обессудь - мое "выканье" сначала придется заслужить тем или иным способом. Вон =GM= уже заслужил, например - ask him how
|
|
|
|
Guest_=AVR=_*
|
Sep 18 2007, 16:49
|
Guests

|
Цитата(Евгений Германович @ Sep 18 2007, 19:57)  Самым разумным решением является предложение Epikur,если только импортное слово и ПЛИС это одно и тоже.Хотя схемы реальных генераторов намного сложнее,задержку между 2 выходами обычно подстраивают,если необходимо точное согласование.Или можно применить ЭСЛ логику. А что, режимы таймеров МК типа Waveform/Clock Generator Mode уже забанили? И с какого перепоя "генератор на PIC", о котором спрашивал автор ветки, должен делаться на CPLD или на ЭСЛ-логике? Или просто явить миру поток сознания не терпелось?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|