Отговори на тема  [ 4751 мнения ]  Отиди на страница Предишна  1 ... 153, 154, 155, 156, 157, 158, 159 ... 317  Следваща
Тема за бързи и тъпи въпроси 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30929
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
Goto е 2 цикъла, както има и други команди които са два цикъла и други които са 1 или 2.


Нед Юни 27, 2021 3:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8413
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
Ми имаш 5 инструкции в повече, очевидно :)


Нед Юни 27, 2021 3:13 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 11:05 pm
Мнения: 332
Мнение Re: Тема за бързи и тъпи въпроси
Въпросът е с какво се различава "PORTA=2;" от "PORTA=0"

Примерно:

Код:
while(1)
{
    PORTA=2;
    PORTA=0;
    PORTA=2;
    PORTA=0;
    PORTA=2;
    PORTA=0;
}


Разбирам от последното PORTA=0; до първото PORTA=2 да имам повече инструкции, заради branch инструкциите, които са 2 цикъла. Обаче между първото PORTA=2; и първото PORTA=0; имам 1 микросекунда интервал. А от първото PORTA=0; до ВТОРОТО PORTA=2; имам 2 микросекунди ?


Нед Юни 27, 2021 3:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8413
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
Е тва как точно го прецени? :D Дай осцилограма


Нед Юни 27, 2021 3:50 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 11:05 pm
Мнения: 332
Мнение Re: Тема за бързи и тъпи въпроси
С оцилоскоп. Сега ще прикача.
EDIT: Ето, осцилограма:


Прикачени файлове:
NewFile2.png
NewFile2.png [ 31.85 KiB | Прегледано 2820 пъти ]
Нед Юни 27, 2021 4:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6152
Мнение Re: Тема за бързи и тъпи въпроси
е па виж асемблера какво е омазал

_________________
main[-1u]={1};


Нед Юни 27, 2021 4:23 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 11:05 pm
Мнения: 332
Мнение Re: Тема за бързи и тъпи въпроси
Код:
                         ;newmain.c: 28:     {;newmain.c: 29:         GPIO=2;
   178  03BE  3002                  movlw   2
   179  03BF  0085                  movwf   5   ;volatile
   180                           
   181                           ;newmain.c: 30:         GPIO=0;
   182  03C0  0185                  clrf   5   ;volatile
   183                           
   184                           ;newmain.c: 31:          GPIO=2;
   185  03C1  3002                  movlw   2
   186  03C2  0085                  movwf   5   ;volatile
   187                           
   188                           ;newmain.c: 32:         GPIO=0;
   189  03C3  0185                  clrf   5   ;volatile


Според datasheet минималното време за изпълнение на инструкция е 200 ns. От асемблерския код, виждам, че за да стане пина 1-ца му трябват две инструкции, т.е 2 цикъла, което трябва да е около 400 ns. За да стане 0, му трябва 1 инструкция = 1 цикъл = 200 ns. Значи на практика трябва 1-цата да трае 2 пъти повече от 0-та, а според осцилоскопа е обратното? Пробвах и с логически анализатор, пак същата диаграма вади.
ПП: Пробвах с MikroC и с CX8, както и с PIC12F629 и PIC16F627 - еднакво се държи.
ППП: Пробвах на PIC12 с вътрешен и външен осцилатор (външния на 20MHz) - еднакво се държи
ПППП: След като запиша чипа, го слагам на бредборд, като само му свързвам захранването и с един джъмпер свързвам сондата към gpio-то. Това може ли да влияе? Пробвах да сложа 100nF на VDD и VSS на пика.


Нед Юни 27, 2021 5:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение Re: Тема за бързи и тъпи въпроси
Нулирането е една инструкция. След това имаш подготовка за високо ниво(една инструкция), но пина все още е в ниско ниво. Чак на втората инструкция нивото се вдига и веднага след това пак се нулира. Осцилограмата ти е вярна, логиката и разсъжденията - не.

За честотата пак си провери къде какво си му задал като настройки. Очевидно работи на по-ниска честота, отколкото очакваш.


Нед Юни 27, 2021 5:28 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 11:05 pm
Мнения: 332
Мнение Re: Тема за бързи и тъпи въпроси
CarBeta написа:
Нулирането е една инструкция. След това имаш подготовка за високо ниво(една инструкция), но пина все още е в ниско ниво. Чак на втората инструкция нивото се вдига и веднага след това пак се нулира. Осцилограмата ти е вярна, логиката и разсъжденията - не.


Прав си, нещо се обърках, но не разбирам, защо 1 инструкция е 1 uS. Дори при честота 4MHz, трябва да е около 250 ns за цикъл.

От конфигурационните битове пробвах да задам вътрешен осцилатор, пробвах и с външен. Лошото е, че за PIC12F629, няма много описано за осцилатора.


Нед Юни 27, 2021 5:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение Re: Тема за бързи и тъпи въпроси
При 4MHz инструкцията е 1 микросекунда. При 20MHz една инструкция е 20 наносекунди. При пиковете честотата се дели на 4.


Нед Юни 27, 2021 5:46 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 11:05 pm
Мнения: 332
Мнение Re: Тема за бързи и тъпи въпроси
CarBeta написа:
При 4MHz инструкцията е 1 микросекунда. При 20MHz една инструкция е 20 наносекунди. При пиковете честотата се дели на 4.

Чакай, защо 20 наносекунди? Не трябва ли да е 200 наносекунди при 20MHz. Иначе дейташийтът е много постен.


Нед Юни 27, 2021 6:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2664
Местоположение: София / Велико Търново
Мнение Re: Тема за бързи и тъпи въпроси
Мда clrf PORTA за ресетване и
movlw 0xFF
movwf PORTA за сетване

_________________
https://github.com/slav4ocom/


Нед Юни 27, 2021 6:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение Re: Тема за бързи и тъпи въпроси
kalata23 написа:
CarBeta написа:
При 4MHz инструкцията е 1 микросекунда. При 20MHz една инструкция е 20 наносекунди. При пиковете честотата се дели на 4.

Чакай, защо 20 наносекунди? Не трябва ли да е 200 наносекунди при 20MHz. Иначе дейташийтът е много постен.

200 е, изял съм при писането една нула


Нед Юни 27, 2021 6:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2664
Местоположение: София / Велико Търново
Мнение Re: Тема за бързи и тъпи въпроси
Сетваш / ресетваш само един пин. Пробвай с asm("bsf 2"); и asm("bcf 2"); или точно както е синтаксиса за inline asm.

_________________
https://github.com/slav4ocom/


Нед Юни 27, 2021 6:26 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Пон Дек 15, 2014 11:05 pm
Мнения: 332
Мнение Re: Тема за бързи и тъпи въпроси
С 20MHz кристал стана работата. 200 ns за 1-ца и 400ns за 0. Бях забравил, че честотата = Fosc/4.


Нед Юни 27, 2021 6:34 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 4751 мнения ]  Отиди на страница Предишна  1 ... 153, 154, 155, 156, 157, 158, 159 ... 317  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни