Миландр

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

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу « 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"
Закрыть


Вложения:
[ attachment ]
Отладка.jpg [ 203.97 КБ | 6908 просмотров ]
Вернуться к началу
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2019-янв-22 16:25 
Не в сети

Зарегистрирован: 2016-июл-05 10:37
Сообщения: 33
Организация: ЗАО НПК БАРЛ
Здравствуйте! Написал код для отправки 2-х байт по spi. Система IDE1886 ругается при компиляции на строчку где происходит сдвиг вправо.
 if((Data >> i)&1)DQ = 1;
Если заменить переменную на числовое значение, то все работает нормально. Вопрос как сделать так, чтобы работало через переменную. Также не работают деление/умножение, хотя в примерах для компилятора CC7A все там работать должно. Работаю без программатора и без платы (контроллера). Спасибо!
#include <1886VE6.h>
#include "int17xxx.h"
#pragma origin 0x8

#pragma rambank 0
#pragma codepage 1
#include "math24f.h"
#pragma codepage 0

void Write1272(uns8 Data)
{
  int i = 7;    
  uns8 j = 0;
  nRST = 1;
 
  for(j = 0 ; j < 2; j++) 
  {
    while(i >= 0) 
    {
      CLK = 0;
      Delay();
        
      if((Data >> i)&1)DQ = 1;
      else DQ = 0;    
      CLK = 1;
      Delay();
      i--;
    }
   i = 7; 
  }
 
}
Причем нашел, что через затычку вроде собирается
temp = (Data >> i);
temp = (temp&1);
if(temp)DQ = 1;
else DQ = 0;  


Вернуться к началу
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2019-янв-23 08:54 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 547
Цитата:
Причем нашел, что через затычку вроде собирается
Через затычку это правильно, не Вы первый :(. CC7 это "недокомпилятор", ну не может он разобрать сложнйшую строку :).


Вернуться к началу
 Заголовок сообщения: Re: IDE1886
СообщениеДобавлено: 2020-май-28 12:30 
Не в сети

Зарегистрирован: 2020-май-28 12:12
Сообщения: 1
Организация: ДКБА
При компиляции проекта после добавления в текст программы директив #pragma codepage 1 и #pragma codepage 0 (второй раз директива добавляется перед методом main) возникает окно с ошибкой "File size error!". При этом Memory map на вкладке "Programming" не заполняется. Судя по генерируемому main.asm, код распределен между двумя страницами. Как устранить описанную ошибку, при этом распределив текст программы между несколькими страницами? Программа пишется для микроконтроллера 1886ВЕ5


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу « 1 2

Часовой пояс: UTC+03:00


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

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


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

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB