реклама на сайте
подробности

 
 
> Высокостабильный генератор на PIC
KV99
сообщение Sep 9 2007, 06:24
Сообщение #1


Участник
*

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



Здравствуйте уважаемые знатоки. Перерыл уже кучу документации по контроллерам микрочип и не нашел (может не понял). Если собрать на базе контроллера генаратор меандра, ну, допустим тактируется контроллер 40МГц. Причем, первый вывод порта запрограммируем на генерацию колебаний частотой 20Мгц, а второй вывод на частоту 10Мгц. Каков будет уход этой частоты от заданной?! Как его подсчитать?! Будет ли временной сдвиг между фронтами сигналов с первого и со второго выводов?!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_=AVR=_*
сообщение Sep 18 2007, 11:59
Сообщение #2





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%. На практике для этого используют встроенные в МК таймеры, которые позволяют получить и такие относительно высокие частоты без какой-либо загрузки МК.

Какие еще наезды будут, двоешник? smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- KV99   Высокостабильный генератор на PIC   Sep 9 2007, 06:24
- - Евгений Германович   Стабильность частоты определяется параметрами квар...   Sep 9 2007, 06:50
|- - KV99   Цитата(Евгений Германович @ Sep 9 2007, 17...   Sep 9 2007, 07:24
- - Евгений Германович   Я не нашел,но если посмотреть на времена нарастани...   Sep 9 2007, 08:51
|- - KV99   Цитата(Евгений Германович @ Sep 9 2007, 19...   Sep 9 2007, 09:44
|- - Евгений Германович   Цитата(KV99 @ Sep 9 2007, 12:44) movlw ...   Sep 9 2007, 11:13
|- - DL36   Цитата(Евгений Германович @ Sep 9 2007, 14...   Sep 12 2007, 12:29
|- - Евгений Германович   Цитата(DL36 @ Sep 12 2007, 15:29) А 10...   Sep 12 2007, 12:44
|- - DL36   Цитата(Евгений Германович @ Sep 12 2007, 15...   Sep 12 2007, 14:12
|- - Евгений Германович   Цитата(DL36 @ Sep 12 2007, 17:12) Внимате...   Sep 12 2007, 14:44
|- - DL36   Цитата(Евгений Германович @ Sep 12 2007, 17...   Sep 13 2007, 07:13
- - miga   Цитата(Евгений Германович @ Sep 9 2007, 10...   Sep 9 2007, 17:28
|- - Евгений Германович   Цитата(miga @ Sep 9 2007, 20:28) Читаем в...   Sep 11 2007, 03:14
- - Epikur   Если взять пики из серии PIC18, то лучшее, что у в...   Sep 16 2007, 07:55
- - =AVR=   ЦитатаПри наиболее высокой частоте (48 Мгц для кон...   Sep 17 2007, 21:29
- - Epikur   =AVR= >> Не удивляйся, это ассемблер, несмот...   Sep 18 2007, 08:03
- - Epikur   Ок, признаю ошибку - эта дурацкая реализация дейст...   Sep 18 2007, 12:17
- - =AVR=   ЦитатаОднако у меня нет причин говорить с вами на ...   Sep 18 2007, 13:24
- - Евгений Германович   Давайте жить дружно.Сколько бы нибыло строк,а так ...   Sep 18 2007, 15:57
|- - =AVR=   Цитата(Евгений Германович @ Sep 18 2007, 19...   Sep 18 2007, 16:49
- - MaxPIC   Ну тогда уж для PIC18F4550 не 10 МГц, а 12 МГц час...   Sep 18 2007, 16:36
- - Евгений Германович   Во первых не хами.Во вторых 20МГЦ все равно не выт...   Sep 19 2007, 13:35


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016