Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 08.10.2011, 04:18   #26
xDriver
Senior Member
 
Аватар для xDriver
 
Регистрация: 24.03.2008
Адрес: msk
Сообщений: 542
Вес репутации: 412/54
xDriver is just really nicexDriver is just really nicexDriver is just really nicexDriver is just really nicexDriver is just really nice
Отправить сообщение для xDriver с помощью ICQ
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от dosikus Посмотреть сообщение
set_timer1(65534);
и что
хочется увеличить еще переуд на 4 цикла
xDriver вне форума   Ответить с цитированием
Старый 08.10.2011, 05:50   #27
CERGEI
Senior Member
 
Аватар для CERGEI
 
Регистрация: 11.07.2009
Возраст: 38
Сообщений: 526
Вес репутации: 183/46
CERGEI has a spectacular aura aboutCERGEI has a spectacular aura about
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от xDriver Посмотреть сообщение
и что
хочется увеличить еще переуд на 4 цикла
4 цикла чего? переполнения таймера и тактов контроллера?
если таймера то создаеш переменную и икрименируеш ее в прерывании,там же можеш сбросить ее сравнивая с нужным числом.А по ней в майн например смотриш надо включить пин или нет.
CERGEI вне форума   Ответить с цитированием
Старый 08.10.2011, 08:37   #28
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 38
Сообщений: 1,383
Вес репутации: 1267/74
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от CERGEI Посмотреть сообщение
4 цикла чего? переполнения таймера и тактов контроллера?
если таймера то создаеш переменную и икрименируеш ее в прерывании,там же можеш сбросить ее сравнивая с нужным числом.А по ней в майн например смотриш надо включить пин или нет.
На Си, в принципе, задача нерешаемая, если только компилятору совсем руки выкрутишь, и то врятли. Дизассемблерный код, который привел xDriver, показывает, что сохраняет компилятор перед тем как войти в прерывание. Делается тупое сохранение всех 3 FSR регистров (если компилятор умный, то обычно 2 FSR используют на основной цикл и 1 на прерывание, тогда их сохранять смысла нет), PCLATH, PCLATU, TBLPTRL, TBLPTRH, TBLPTRU, TABLAT, потом сохраняет всю область памяти, где лежат данные математических и библиотечных функций, типа деления, умножения, спринтф и т.п. Потом их же в конце прерывания восстанавливает. В С18 можно запретить компилеру на свой страх и риск сохранять это все. Но никто не гарантирует, что не будут те же деления и умножения использоваться и в прерываниях и в основном цикле.
По поводу Вашего алгоритма - так не прокатит. ТС нужен сигнал 1 МГц. Пусть он будет даже работать с частотой проца 48МГц. Считай производительность 12Mips. Или 12 команд на 1 микросекунду. НО это период, чтобы получить 1 МГц, прерывание должно обрабатываться за 6 команд, т.е. за полупериод. Т.е. за эти 6 команд микроконтроллера, ему нужно войти в прерывание (2-3 команды), пусть будет сохранение статусных регистров через теневые регистры (0 команд). Обработать флаг по прерыванию (2 такта минимум), но в принципе если прерывание будет одно, то можно пропустить проверку и сразу сбрасывать флаг (1 команда), проверка переменной на совпадение, если делать, как Вы говорили, то INCF (1 команда), сравнение с уставкой (1 команда) прыжок по результату (2 команды). Сброс уставки в начальное состояние (в 0 - 1 команда, не в ноль - 2 команды). BTG (1 команда). RETFIE 1 (2 команды). Итого: самый быстрый вариант реализации Вашего алгоритма, 2+1+1+1+2+1+1+2=10 команд, ну никак не уложиться.
Я и пишу, прокатит только через CCP. Чтобы сброс таймера был аппаратный. 6 команд на асме, ну никак не разгуляться.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 08.10.2011, 10:11   #29
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от xDriver Посмотреть сообщение
вообщем так и есть
если просто дергать ногой
Код:
	for (;;) output_toggle(PIN_A0);
частота 1.4 мГц

при использование таймера (TIMER1 или TIMER2 без разницы)
Код:
#INT_TIMER1
void int_timer1(void)
{
	output_toggle(PIN_A0);
	set_timer1(65535);
}
частота 64 кГЦ.
попробовал в железе
что там CCS генерит на асме не смотрел и не буду
даблин: МГц и кГц
IgorV вне форума   Ответить с цитированием
Старый 08.10.2011, 10:23   #30
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 48
Сообщений: 3,800
Вес репутации: 6357/149
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от xDriver Посмотреть сообщение
и что
хочется увеличить еще переуд на 4 цикла
Тогда сбрасываем флаг до уставки таймера .
Код:
#INT_GLOBAL
void int_timer_1(void)
{
   output_toggle(PIN_A0);
   clear_interrupt(INT_TIMER1); 
   set_timer1(65535);
   
}
Все равно получаем меньше 1МГц.
Даже на Timer2 меньше .

Код:
#INT_GLOBAL

void int_timer_2(void)
{
   output_toggle(PIN_A0);
   clear_interrupt(INT_TIMER2);
   set_timer2(255); 
}
Код:
.................... #USE fast_io(A) 
.................... #INT_GLOBAL 
....................  
.................... void int_timer_2(void) 
.................... { 
....................    output_toggle(PIN_A0); 
*
0008:  BTG    F89.0
....................    clear_interrupt(INT_TIMER2); 
000A:  BCF    F9E.1
....................    set_timer2(255); 
000C:  SETF   FCC
....................   
....................   
.................... } 
....................  
....................  
000E:  RETFIE 0
Слушаете 2AplusA.

Последний раз редактировалось dosikus; 08.10.2011 в 10:42.
dosikus вне форума   Ответить с цитированием
Старый 08.10.2011, 10:32   #31
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от erg6regr5 Посмотреть сообщение
Имеется PIC18F2550, кварц 20Мгц. Требуется на ноге сделать частоту 1Мгц от таймера. Как это реализовать?Состряпал вот такой код (компилятор ccs):
Код:
 
#include <18F2455.h>
#fuses HSPLL,NOWDT,NOLVP,NODEBUG,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
#int_TIMER1
TIMER1_isr()
{
 output_toggle(PIN_B7);
}
void main()
{
 setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1|T1_CLK_OUT);
 enable_interrupts(INT_TIMER1);
 enable_interrupts(GLOBAL);
 while(1);
}
При таком раскладе тактов ваще нету. Если поставить setup_timer_1(T1_INTERNAL); то появится частота 90Гц. Кда копать?
Заранее спасибо.
вот же дурдом-то. Вступая в ряды так сказать...

Необходимо использовать PWM режим CCP модуля (не ECCP - cлишком много ног будет занято не продуктивно). И в свете всей ветки, не поможет ТС настроить ни период (переуд , ни длительность импульса.
Другой модуль для аппаратной генерации 1МГц от кварца в 20МГц - USART например в синхронном режиме, с установленным битом "непрерывный прием". С ноги клоков полетит меандр с частотой 1МГц. Нога DT правда будет занята непродуктивно.
Программно - не вариант
IgorV вне форума   Ответить с цитированием
Старый 08.10.2011, 12:09   #32
Industrialniy
Senior Member
 
Аватар для Industrialniy
 
Регистрация: 17.10.2007
Адрес: sdelal.net
Возраст: 38
Сообщений: 418
Вес репутации: 226/53
Industrialniy has a spectacular aura aboutIndustrialniy has a spectacular aura aboutIndustrialniy has a spectacular aura about
Отправить сообщение для Industrialniy с помощью ICQ
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Кто сказал что через прерывание не прокатит?
Код:
        #include p18F250.inc
tmr_dt    equ            .00                ;для перезапуска таймера
        ORG            0x00
        GOTO        init    
        ORG            0x08
;прерывание
        MOVFF        tmr_dt,TMR0L
        BTG            LATA,0
        BCF            INTCON,TMR0IF
        RETFIE
init
        BCF            TRISA,0
        MOVLW        .253
        MOVWF        tmr_dt
        MOVLW        b'10000000'            ;предделитель - 1
        MOVWF        T0CON
        MOVLW        b'11100000'            ;прерывания таймера
        MOVWF        INTCON
        SETF        TMR0H
        MOVFF        tmr_dt,TMR0L
zikl
        GOTO        zikl
        END

Последний раз редактировалось Industrialniy; 08.10.2011 в 12:27.
Industrialniy вне форума   Ответить с цитированием
Старый 08.10.2011, 12:48   #33
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 48
Сообщений: 3,800
Вес репутации: 6357/149
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Не прокатит , что ??? Здесь как видите С терзают ...
С вашим кодом периОд 2,18 uS ...
Цитата:
#include p18F2550.inc
dosikus вне форума   Ответить с цитированием
Старый 08.10.2011, 13:31   #34
Industrialniy
Senior Member
 
Аватар для Industrialniy
 
Регистрация: 17.10.2007
Адрес: sdelal.net
Возраст: 38
Сообщений: 418
Вес репутации: 226/53
Industrialniy has a spectacular aura aboutIndustrialniy has a spectacular aura aboutIndustrialniy has a spectacular aura about
Отправить сообщение для Industrialniy с помощью ICQ
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Асм команды можно в си вставить?
А если
Код:
        MOVLW        .254
        MOVWF        tmr_dt
и прерывание
Код:
        BCF            LATB,0
        MOVFF        tmr_dt,TMR0L
        BCF            INTCON,TMR0IF
        BSF            LATB,0
        RETFIE
Правда меандр наверно кривой будет?

Последний раз редактировалось Industrialniy; 08.10.2011 в 13:45.
Industrialniy вне форума   Ответить с цитированием
Старый 08.10.2011, 13:41   #35
xDriver
Senior Member
 
Аватар для xDriver
 
Регистрация: 24.03.2008
Адрес: msk
Сообщений: 542
Вес репутации: 412/54
xDriver is just really nicexDriver is just really nicexDriver is just really nicexDriver is just really nicexDriver is just really nice
Отправить сообщение для xDriver с помощью ICQ
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от IgorV Посмотреть сообщение
даблин: МГц и кГц
торопился
обещаю, исправлюсь !
xDriver вне форума   Ответить с цитированием
Старый 08.10.2011, 13:41   #36
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от Industrialniy Посмотреть сообщение
А если
Код:
        MOVLW        .254
        MOVWF        tmr_dt
Я сильно надеялся, что бред прекратится. Но как же я наивен. Шоу должно продолжаться.
Не получится программно, и не зачем когда есть аппаратные способы.
IgorV вне форума   Ответить с цитированием
Старый 08.10.2011, 13:55   #37
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 48
Сообщений: 3,800
Вес репутации: 6357/149
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Извращение , однозначно . Причем бесполезное .
dosikus вне форума   Ответить с цитированием
Старый 08.10.2011, 14:01   #38
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/108
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от dosikus Посмотреть сообщение
Извращение , однозначно . Причем бесполезное .
оправдание только одно - задача учебная в чистом виде и МК ничего не должен делать больше. Тогда вроде бы как и можно такую фигню делать на разгоне камня как у ТС задумано, т.е. 20МГц делим на 5 умножаем до упора т.е. 96МГц, т.е. имеем 12МИПС. Из них на переключение уходит 1МИПС, остальное 11МИПС можно потратить на прерывание (вход/выход) и тогда Си успевает, если других задач/функций вообще нет, то сохранится не так уж и много.
но опять же если уж таймер занят, и не важно какой то почему бы аппаратно не реализовать. И оставить прерывания и возможность усложнять прогу в покое.

Тока какой же у него камень вообще задуман? Пишет про один, хедер от другого

Последний раз редактировалось IgorV; 08.10.2011 в 14:17. Причина: думаешь одно, а пишешь другое
IgorV вне форума   Ответить с цитированием
Старый 08.10.2011, 14:12   #39
Industrialniy
Senior Member
 
Аватар для Industrialniy
 
Регистрация: 17.10.2007
Адрес: sdelal.net
Возраст: 38
Сообщений: 418
Вес репутации: 226/53
Industrialniy has a spectacular aura aboutIndustrialniy has a spectacular aura aboutIndustrialniy has a spectacular aura about
Отправить сообщение для Industrialniy с помощью ICQ
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Да, нехватает производительности.
Остаётся шимить с PORTC,2?
Код:
        BCF            TRISC,2
        MOVLW        .11
        MOVWF        PR2
        MOVLW        .6
        MOVWF        CCPR1L
        MOVLW        b'00000100'            ;предделитель - 1
        MOVWF        T2CON
        MOVLW        b'00001100'
        MOVWF        CCP1CON
Industrialniy вне форума   Ответить с цитированием
Старый 08.10.2011, 14:23   #40
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 48
Сообщений: 3,800
Вес репутации: 6357/149
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от IgorV Посмотреть сообщение
Тока какой же у него камень вообще задуман? Пишет про один, хедер от другого
Да он сам не знает чего хочет . Мне показалось , что это просто тест чипа на скорострельность.
Если уж так нужен именно генератор , именно на PIС и именно на 1 МГц - PIC10F ...
dosikus вне форума   Ответить с цитированием
Старый 09.10.2011, 21:40   #41
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 38
Сообщений: 1,383
Вес репутации: 1267/74
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Генерирование сигнала с частотой 1Мгц

Цитата:
Сообщение от Industrialniy Посмотреть сообщение
Кто сказал что через прерывание не прокатит?
Код:
        #include p18F250.inc
tmr_dt    equ            .00                ;для перезапуска таймера
        ORG            0x00
        GOTO        init    
        ORG            0x08
;прерывание
        MOVFF        tmr_dt,TMR0L
        BTG            LATA,0
        BCF            INTCON,TMR0IF
        RETFIE
init
        BCF            TRISA,0
        MOVLW        .253
        MOVWF        tmr_dt
        MOVLW        b'10000000'            ;предделитель - 1
        MOVWF        T0CON
        MOVLW        b'11100000'            ;прерывания таймера
        MOVWF        INTCON
        SETF        TMR0H
        MOVFF        tmr_dt,TMR0L
zikl
        GOTO        zikl
        END
Ну считаем. Вход в прерывание 2-3 команды, пусть будет 2, MOVFF - 2 команды, BTG - 1 команда, BCF - 1 команда, RETFIE - 2 команды , итого 8 команд минимум. (команды - это командные циклы). Вы думаете, я совсем не думал, когда писал, что программно такие вещи не делаются? Игорь, правильно говорит, только аппаратными средствами возможно такое сделать.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализ и генерация ИК сигнала SomlicH Вопросы начинающих 5 24.02.2009 09:40


Часовой пояс GMT +3, время: 20:36.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot