Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-май-29 14:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2011-дек-01 12:19 
Не в сети

Зарегистрирован: 2011-окт-05 13:32
Сообщения: 11
При отладке прерываний возникла проблема, что при GLINTD=1 основная программа работает нормально, флаг прерывания от Т1 устанавливается, в прерывание естественно не заходит. Если разрешить прерывания GLINTD = 0 основная программа вообще не работает (один короткий импульс в начале), в прерывание, судя по сигнализации, тоже не заходит. В чем может быть проблема. Программа ниже.
//тестовая прорамма
//от RC генератора 2856 кГц
//проверка прерывания от Т1
#include <1886VE5.h>

//переменные
unsigned char zz,pz,zv,rabota,selector,cvstv,vzstv,dpstv,skna,lz,lzv;
unsigned char temp_zz,temp_pz,temp_zv,temp_rabota,temp_selector,temp_cvstv,temp_vzstv,temp_dpstv,temp_skna,temp_lz,temp_lzv;
unsigned char temp; //временно

void buttons(void);

#define BUTTON 255 //количество считываний состояния переключателя

#include "int17xxx.h"
#pragma origin 0x20
interrupt iServer(void) {
multi_interrupt_entry_and_save
PERIPHERAL_service:


//Проверка входа в прерывание
PORTD.2 = 1; //похоже, что в прерывание не входи, порт не устанавливается

TMR0_service:
T0CKI_service:
INT_service:
interrupt_exit_and_restore
}

void init() {
GLINTD = 0x01; //глобальный запрет прерываний
/*Настройка портов ввода-вывода*/
DDRA = 0xFF; //PORTA все входы
DDRC = 0xFF; //PORTC все входы
DDRD = 0x00; //PORTD все выходы
DDRE = 0xFF; //PORTE все входы
PORTD = 0x00;

/*Настройка прерываний и таймера 1*/
PR1 = 0xFF; //период счета таймера
PIR1 = 0x00;
PIE1 = 0x10; //разрешение прерывания от Таймера 1
INTSTA = 0x08; //разрешение периферийных прерываний
TCON1 = 0x00;
TCON2 = 0x00;

temp_zz = 0;
temp = 0; //временно
}
void main(void) {
init();
GLINTD = 0x00
TCON2 = 0x01; //запуск таймера

while (1) {

if (T1IF) {PORTD.5 = 1;} //этот флаг есть, запрос на прерываение формируется
if (T1IF==0) PORTD.5 = 0;


//это просто генератор для проверки
temp++;
if (temp <= 100) {PORTD.0 = 1;} //если GLINTD = 0 генератор не работает при включени один
if (temp > 100) {PORTD.0 = 0;} //импульс длительностью 2,4мкс, затем просто высокий уровень с порта
if (temp == 255) {temp = 0;} //Если GLINTD = 1 генератор работает, в прерывание естественно не входит

#asm
nop;
nop;
#endasm
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2011-дек-01 13:59 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Код:
#include "int17xxx.h"
#pragma origin 0x8 //!!!!
interrupt iServer(void)
{
    multi_interrupt_entry_and_save
PERIPHERAL_service:
    // save on demand: TBLPTRH,TBLPTRL,FSR0,FSR1
     T1IF = 0; //!!!!
    // process Timer interrupt
    // restore on demand: TBLPTRH,TBLPTRL,FSR0,FSR1
    interrupt_exit_and_restore
}
Все это можно увидеть в примере для ВЕ5 в составе IDE1886.
WBR


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2011-дек-01 15:31 
Не в сети

Зарегистрирован: 2011-окт-05 13:32
Сообщения: 11
Заработало, не знал, что адрес должен быть всегда 08h, думал, что в соответствии с видом прерывания (20h), особенности компилятора не успел прочитать. Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2012-мар-01 14:16 
Не в сети

Зарегистрирован: 2011-ноя-27 19:28
Сообщения: 6
Здравствуйте, не могли бы вы добавить функцию проверки микроконтроллера на чистоту ПЗУ программ? Было бы достаточно полезно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2012-мар-01 15:33 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Pastel писал(а):
Здравствуйте, не могли бы вы добавить функцию проверки микроконтроллера на чистоту ПЗУ программ? Было бы достаточно полезно.
Жмем правой кнопкой мыши и выбираем Clear Memory Map, устаналиваем всю конфигурацию в верхнее положение. Затем верификация.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2012-июл-06 12:59 
Не в сети

Зарегистрирован: 2012-июл-06 12:47
Сообщения: 1
Здравствуйте, учусь писать на с под k1886ве2у в 1886 IDE
пробую в отладочной платепо разному разжигать светодиоды.
И как я не изворачивался, у меня напрочь отказываются работать циклы, (for, while) хотя в документации к компилятору сс7а все эти возможности имеются
Судя по поведению платы вижу что выполняется первая итерация а потом программа зацикливается и уже ни на что не реагирует
Чувствую что ошибка примитивная но не разберусь(((
Привожу пример проблемного кода:

while(1)
{
PORTF++;
i=0;
for (i=0; i<100; i++)
{
i++;
i--;
}

}

заранее спасибо за внимание


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2012-июл-06 15:12 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
irod писал(а):
Здравствуйте, учусь писать на с под k1886ве2у в 1886 IDE
пробую в отладочной платепо разному разжигать светодиоды.
И как я не изворачивался, у меня напрочь отказываются работать циклы, (for, while) хотя в документации к компилятору сс7а все эти возможности имеются
Судя по поведению платы вижу что выполняется первая итерация а потом программа зацикливается и уже ни на что не реагирует
Чувствую что ошибка примитивная но не разберусь(((
Привожу пример проблемного кода:
Код:
while(1)
     {
             PORTF++; <-- это нехорошо. чтение-модификация-запись в порт. прочитаться может не то, что записали.
             i=0; <-- зачем это?
             for (i=0; i<100; i++)
             {
                       i++; <-- изменять переменную цикла внутри цикла - дурной тон.
                       i--;
             }

      }

заранее спасибо за внимание
Советую для начала пpoчитать руководство по СC7A и спецификацию на процессор.
Код:
uchar i, pf;
PORTF = 0xFF;// выключаем все светодиоды
DDRF = 0;//все выводы порта F - выходы
pf = 0xFF;
while (1)
{
  PORTF = --pf;
  for (i=0; i<200; i++);
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2013-июн-07 23:37 
Не в сети

Зарегистрирован: 2013-июн-07 22:59
Сообщения: 4
Можно ли узнать почему данная версия dev c++ не поддерживает всплывающую подсказку по функциям? (как например jdoc или phpdoc)

Почему среда разработки ничего не знает про встроенные функции CC7A ? А то очень удобно лазить за ними в pdf.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2015-дек-03 08:48 
Не в сети

Зарегистрирован: 2015-фев-24 14:44
Сообщения: 8
Откуда: СПб
Подскажите пожалуйста, а поддерживает ли IDE1886 компилятор HI-TECH PICC 9.83 или ниже и его использование в работе с МК 1886ВЕ6У ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2016-авг-17 13:55 
Не в сети

Зарегистрирован: 2016-авг-17 12:15
Сообщения: 2
Здравствуйте!
Подскажите, почему в режиме отладки кнопки "Step Into" и "Step Over" могут быть недоступны?
Открыть код
Код:
#include <C:\MILANDR\1886\IDE1886\Headers\1886VE4d.h>
#include "int17xxx.h"
#pragma origin 0x8

bit FLAG;

interrupt iServer(void)
{
    multi_interrupt_entry_and_save

PERIPHERAL_service:
TMR0_service:
    // save on demand: PRODL,PRODH,TBLPTRH,TBLPTRL,FSR0,FSR1
    /* process Timer 0 interrupt */
    // T0IF is automatically cleared when the CPU vectors to 0x10
    // restore on demand: PRODL,PRODH,TBLPTRH,TBLPTRL,FSR0,FSR1
T0CKI_service:
INT_service:
    interrupt_exit_and_restore
}
/******************/
void main(void)
{
     while (1) {
       
           DDRE.7 = 0;
           DDRE.6 = 0;
           DDRE.5 = 0;
           DDRE.4 = 0;
           DDRE.3 = 0;
           DDRE.2 = 0;
           DDRE.1 = 0;
           DDRE.0 = 0;
           
           PORTE.7 = 1;
           PORTE.6 = 1;
           PORTE.5 = 1;
           //PORTE.4 = 1;
           PORTE.3 = 0;
           PORTE.2 = 0;
           PORTE.1 = 1;
           PORTE.0 = 0;
         
          DebugBreakPoint;
           if(FLAG == 1){FLAG = 0;}else{FLAG = 1;} 
           if(FLAG == 1){PORTE.4 = 1;}else{PORTE.4 = 0;}
         
           DebugBreakPoint;
                     
           }
}
#include "deb.c"
Закрыть


Вложения:
Отладка.jpg
Отладка.jpg [ 203.97 КБ | Просмотров: 609 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB