Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
1

ISIS Proteus, на какой частоте работает МК?

15.01.2016, 23:48. Просмотров 1394. Ответов 13

Вот, написал такую незатейливую программку для косвенной проверки скорости контроллера.
как видно из программки она просто меняет состояние ноги с "0" на "1" при каждом исполнеии.
И вот что вышло меандр изменял положение каждые 40 микросекунд, что составило 25кГц.
Вопрос на какой частоте работает микроконтроллер? по идее должна быть 4 МГц Но похоже это не так.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
 
//***************************   MASTYR  meandr  *****************
//       PIC12F675                      
 
// CONFIG
#pragma config FOSC = INTRCIO   // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = ON      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF       // GP3/MCLR pin function select (GP3/MCLR pin function is MCLR)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config CP =  ON        // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = ON        // Data Code Protection bit (Data memory code protection is disabled)
 
 
void main(void)
{
 
      CMCON = 0b00000111;    // OFF KOmparator
      ADCON0 = 0;            // OFF ACP
      ANSEL = 0 ;            // ALL port DIGITAL INPUT  and OUTPUT
      WPU = 0;               // OFF RESISTORS
      TRISIO = 0b00001101;   //GP0, GP2 ports INPUT , krome GP3; GP1, GP4-GP5  Output
      GP1 = 0;
     
//---------------------------------------------------------------------------------------------
 
        if (GP1 == 1)
         {
             GP1=0;
         }
         else
         {
             GP1=1;
         }
//---------------------------------------------------------------------------------------------
 
    return;
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2016, 23:48
Ответы с готовыми решениями:

ISIS Proteus. Библиотеки
Руссификатор нашел и норм работает, а если ли к ней библиотеки на русском языке ??

Как добавить дребезг контактов в Proteus ISIS?
Имеется модель энкодера и кнопки. (Энкодера в стандартной библиотеке нет, поэтому я тупо взял два...

Создать свой эмулятор устройств наподобие ISIS Proteus
Добрыый день, я начинаюший студент программист, очень заинтерисовала эта идея, можнали создать...

Программа На Мк Avr Для Proteus -Isis Управления Кнопками
суть в чем, в том, что нужно создать проект в ISIS под МК AVR (авр студио желательно). к каждому...

13
Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
16.01.2016, 01:47  [ТС] 2
Поправка не 40 Микросекунд, а 4 и 7 микросекунд между переходами из "0" в "1" и на оборот. но все равно это 250 кГц. и 142.8 кГц т.е. как показывает MPLAB за 2 микросекунды выполняется одна СИшная команда. т.е. 0,5 МГц или за 8 тактов если внутренний генератор действительно 4 МГц.

Прав ли я?? или глубоко заблуждаюсь?
0
Миниатюры
ISIS Proteus, на какой частоте работает МК?  
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
16.01.2016, 09:34 3
Все СИ компиляторы сначала транслируют код в ассемблер и его можно посмотреть.
0
Voland_
1758 / 1090 / 108
Регистрация: 04.01.2010
Сообщений: 3,782
16.01.2016, 10:26 4
Sovuschka, в вашем коде даже цикла нет. Контроллер пробегает весь main() и уходит в "небытие", то бишь в reset, и проходит main по новой.
Но... судя по ходу рассуждений вы путаете такт контроллера с Сишной строкой. Даже простая строчка вроде (unsigned long) x <<=1; может компилироваться от одной до 9ти инструкций машинного кода, в зависимости от набора инструкций ЦПУ. К тому же, каждая команда может выполняться процессором НЕ за один такт клока. Та что сделать ровненький меандр простым циклом - это еще напрячься надо ).
1
Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
16.01.2016, 13:12  [ТС] 5
Цитата Сообщение от Витальич Посмотреть сообщение
Все СИ компиляторы сначала транслируют код в ассемблер и его можно посмотреть.
У меня MPLAB X IDE V2.0 Плдскажете как посмотреть сгенерированный асемблерный код?

Добавлено через 5 минут
Цитата Сообщение от Voland_ Посмотреть сообщение
Sovuschka, в вашем коде даже цикла нет. Контроллер пробегает весь main() и уходит в "небытие", то бишь в reset, и проходит main по новой.
Но... судя по ходу рассуждений вы путаете такт контроллера с Сишной строкой. Даже простая строчка вроде (unsigned long) x <<=1; может компилироваться от одной до 9ти инструкций машинного кода, в зависимости от набора инструкций ЦПУ. К тому же, каждая команда может выполняться процессором НЕ за один такт клока. Та что сделать ровненький меандр простым циклом - это еще напрячься надо ).
Я поленился в приписке вложить исправленный код. Ведь с него я снимал показания, а вот с того что дан первым - 40 микросекунд между переходами.. Хотя "return " не дает программе закончится а просто гоняет ее по кругу.
Но смотрите то что я переделал..

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* 
 * File:   newmain.c
 * Author: Filin_000
 *
 * Created on 03 Январь 2016 г., 22:13
 */
 
 
 
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
 
//***************************   MASTYR  meandr  *****************
//                               GP3 ON
 
// CONFIG
#pragma config FOSC = 100      // INTOSC oscillator:  GP4/OSC2/CLKOUT и  GP5/OSC1/CLKIN  Работают как Ввод и вывод
#pragma config WDTE = OFF        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = ON      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF       // если "0" - GP3 цифровой канал Ввода вывода
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config CP =  ON        // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = ON        // Data Code Protection bit (Data memory code protection is disabled)
 
char port5;
char port4;
int paus;
unsigned short int blum;
char tim1;
void init(void);
 
 
void main(void)
{
    init();
    while(1)
    {
        if (GP1 == 1)
         {
             GP1=0;
         }
         else
         {
             GP1=1;
         }
    }
    
}
void init(void)
{
      CMCON = 0b00000111;    // OFF KOmparator
      ADCON0 = 0;            // OFF ACP
      ANSEL = 0 ;            // ALL port DIGITAL INPUT  and OUTPUT
      WPU = 0;               // OFF RESISTORS
      TRISIO = 0b00001101;   //GP0, GP2 ports INPUT , krome GP3; GP1, GP4-GP5  Output
      paus = 0;
      GP1 = 0;
      blum = 0;
      tim1 = 19;   // время паузы в 0,5 секундах
      port5 = 1;
      port4 = 0;
 
 
}
0
ValeryS
Модератор
8087 / 5968 / 791
Регистрация: 14.02.2011
Сообщений: 20,582
Завершенные тесты: 1
16.01.2016, 16:47 6
Цитата Сообщение от Sovuschka Посмотреть сообщение
if (GP1 == 1)
{
GP1=0;
}
else
{
GP1=1;
}
как думаешь сколько сравнение может идти?
ужель
C
1
 GP1^=1;
побыстрее будет
или так
C
1
 GP1=!GP1;
или так
C
1
GP1=~GP1;
0
Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
16.01.2016, 17:29  [ТС] 7
Цитата Сообщение от ValeryS Посмотреть сообщение
как думаешь сколько сравнение может идти?
ужель
C
1
 GP1^=1;
побыстрее будет
или так
C
1
 GP1=!GP1;
или так
C
1
GP1=~GP1;
Спасибо за совет, в Вашем варианте кода в 1 строку у меня получился симметричный меандр с временем перехрда 4,5 микросекунд...
Вопрос в том, с какой частотой работает камень? правильно ли я предпологаю что эта частота как и заявленно 4 МГц просто 8 тактов уходит на 1 Сишную команду? В вашем случае вообще 9 тактов на исполнение одной строчки...

Так ли это?

Это я к тому, что зная примерное время исполнения кода можно хоть понимать какую производительность будет иметь камень.
0
ValeryS
Модератор
8087 / 5968 / 791
Регистрация: 14.02.2011
Сообщений: 20,582
Завершенные тесты: 1
16.01.2016, 17:57 8
Лучший ответ Сообщение было отмечено Sovuschka как решение

Решение

Цитата Сообщение от Sovuschka Посмотреть сообщение
и заявленно 4 МГц просто 8 тактов уходит на 1 Сишную команду?
сишные команды они разные бывают
вот это например
Цитата Сообщение от ValeryS Посмотреть сообщение
GP1^=1;
состоит из трех(минимум) подкоманд
считать значение
произвести операцию "Исключающее ИЛИ"
записать значение
поэтому и меряют все в ассемблере, сначала какие команды, а потом растактовку команд по даташиту
например у 8051(классического) команды выполнялись за один, два, или три машинных цикла
а машинный цикл состоял из 12 тактов тактовой частоты
то бишь при кварце в 12 мГц, самая шустрая команда исполнялась за 1 мкс

Добавлено через 3 минуты
Цитата Сообщение от Sovuschka Посмотреть сообщение
В вашем случае вообще 9 тактов на исполнение одной строчки...
а цикл
Цитата Сообщение от Sovuschka Посмотреть сообщение
while(1)
учитываешь? это все таки переход хоть и безусловный
посмотри вот так
C
1
2
3
4
5
6
7
8
9
10
11
while(1)
{
 GP1^=1;
 GP1^=1;
 GP1^=1;
 GP1^=1;
 GP1^=1;
 GP1^=1;
 GP1^=1;
 GP1^=1;
}
и увидишь сколько времени занимает переход
0
Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
16.01.2016, 18:28  [ТС] 9
-- del (избыточное цитирование)---
2 микросекунды GP1=~GP1; выполняется а сам переход 3 микросекунды.... Все верно.. это значит что на (GP1=~GP1 уходит 8 тактов, учитывая что там не менее 3х подкоманд то вполне реально... полез изучать датащит....
Спасибо.

Добавлено через 2 минуты
как увидеть СИшный код перекомпилированный в Асемблер ?
0
ValeryS
Модератор
8087 / 5968 / 791
Регистрация: 14.02.2011
Сообщений: 20,582
Завершенные тесты: 1
16.01.2016, 18:35 10
Цитата Сообщение от Sovuschka Посмотреть сообщение
как увидеть СИшный код перекомпилированный в Асемблер ?
натрави на него IDA
посмотри в протеусе
некоторые компиляторы показывают ассемблерный код

и соблюдай правила, п 5.17
Запрещено избыточное цитирование. Цитируйте только необходимые части сообщений, на которые отвечаете.
0
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
16.01.2016, 18:49 11
Цитата Сообщение от Sovuschka Посмотреть сообщение
У меня MPLAB X IDE V2.0 Плдскажете как посмотреть сгенерированный асемблерный код?
я не пользуюсь данным компилятором, так что в документации ищем
Посмотрите еще вот здесь http://chipok.ru/archives/980 и здесь MPLAB X IDE. Руководство на русском
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
16.01.2016, 21:07 12
Для дизасеблирования -----
скорее всего имеете какой-то hex
засосите его в MPLAB

File -> Import -> и тут ваш файл
а потом
Veiw -> Program memory там дизассемблер, для "изучения алгоритма" хватит

при этом надо в config -> select device чтобы стоял нужный тип проца

Добавлено через 1 минуту
или вот ссылка
http://www.hagi-online.org/picmicro/picdisasm_en.html
0
golatin
299 / 254 / 57
Регистрация: 12.10.2011
Сообщений: 411
Завершенные тесты: 1
18.01.2016, 15:37 13
Цитата Сообщение от russo turisto Посмотреть сообщение
засосите его в MPLAB
У него MPLAB X, а не просто MPLAB.
Поэтому Window->Debugging->Disassembly.
1
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
18.01.2016, 15:41 14
Как у Вас всё сложно в IAR это делается так:
0
Миниатюры
ISIS Proteus, на какой частоте работает МК?  
18.01.2016, 15:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2016, 15:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа в Proteus - ISIS - управление лампами-кнопками 8 линий - 16 лампочек
суть в чем, в том, что нужно создать проект в ISIS под МК AVR (авр студио желательно). к каждому...

на какой частоте работает озу?
и если 1200,то почему?если 2400 проц i58400

На какой частоте работает память
Здравствуйте. Вопрос в том, работает ли частота на 1600 mh Материнка - ga78lmt-s2 (вроде как...

На какой частоте работает память?
Добрый день всем.Не магу сообразить,на какой частоте работает моя память?Вроде раньше пасмотриш на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.