Миландр

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

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




Начать новую тему  Ответить на тему  [ 11 сообщений ] 
Автор Сообщение
 Заголовок сообщения: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-05 12:59 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
В мк 1886BE2 две страницы памяти программ по 8Кслов каждая. Одну я заполнил, при попытке разместить что-то во второй странице, программа перестает работать (функции размещенные во второй странице - не работают)! Перепробовал наверное все возможные варианты c
#pragma location
#pragma codepage
page1 void f1(){};
Пожалуйста помогайте!
Использую CC7A & IDE for 1886.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-05 16:30 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Evgen89519228386 писал(а):
В мк 1886BE2 две страницы памяти программ по 8Кслов каждая. Одну я заполнил, при попытке разместить что-то во второй странице, программа перестает работать (функции размещенные во второй странице - не работают)! Перепробовал наверное все возможные варианты c
#pragma location
#pragma codepage
page1 void f1(){};
Пожалуйста помогайте!
Использую CC7A & IDE for 1886.
Да, проблема существует и в следующих версиях компилятора должна быть ликвидирована.
Компилятор ошибочно вставляет CALL вместо LCALL при адресации функций на другой странице, хотя правильно изменяет PCLATH.
Выход пока видится в использовании ассемблерных вставок:
#pragma codepage 3
 void sub(){}
#pragma codepage 0
#asm
; здесь может быть загрузка аргументов функции
        BSF   0x03,PA0
        LCALL sub
        BCF   0x03,PA0
#endasm


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-06 06:36 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
#pragma codepage 3
 void sub(){}
#pragma codepage 0
#asm
; здесь может быть загрузка аргументов функции
        BSF   0x03,PA0
        LCALL sub
        BCF   0x03,PA0
#endasm
Большое спасибо за ответ, работает, но ужасно неудобно!!!!!!


Никогда в жизни больше не возьмусь за СС7А и 1886BE2, и НЕ СОВЕТУЮ НИКОМУ!!! Только и делаю что разбираюсь в различного рода косяках и, а не программу пишу. И это еще продается за немалые деньги. (


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-06 08:25 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
РАБОТАЕТ НЕ ВСЕГДА!!!

Disassembly code:
BSF 0x3, 0x5
LCALL 0x1f ; эта функция действительно вызывается (выполняется переход на 0x201f)
BCF 0x3, 0x5

BSF 0x3, 0x5
LCALL 0x2a ; попадаем на 0x282a или 0x1fff (но никак не на 0x202a, где расположена функция)
BCF 0x3, 0x5

Смотрел в симуляторе MPLAB (PIC17C756A)
И как же бороться с этой бедой?


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-06 09:55 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Evgen89519228386 писал(а):
Никогда в жизни больше не возьмусь за СС7А и 1886BE2, и НЕ СОВЕТУЮ НИКОМУ!!! Только и делаю что разбираюсь в различного рода косяках
Для того и существует форум, чтобы быстро разбираться и устранять, как Вы выразились, "косяки". Было бы интересно узнать, какие еще Вам встретились трудности с СС7А и 1886BE2.
Цитата:
Смотрел в симуляторе MPLAB (PIC17C756A)
Вы хотите сказать, что MPLAB работает неправильно?
MPLAB следует использовать с осторожностью, т. к. в нем жестко определен размер памяти программ, адреса и функционирование некоторых регистров. 1886ВЕ2 имеют объем внутренней памяти программ 64 КБайта (32К х 16 бит) а PIC17C756A - 32 КБайта (16К х 16 бит).
Также, если Вы используете прерывания, необходимо сохранять и восстанавливать PCLATH.
Вот что нам написал вчера разработчик СС7А:
Цитата:
I will fix this problem and release a new version as soon as practically possible. The problem must be analysed before a schedule can be made.
Customers who need a quick fix can look at the following example:
#include "hexcodes.h"
page1 void sub_1a(void);
#define START_sub_1  0x2000   // start of codepage 1 (any address is allowed)
#pragma origin START_sub_1
void sub_1(void)
{
     sub_1a();
     nop();
}
void sub_1a(void)
{
    nop();
}
#pragma codepage 0
void sub_0a(void)
{
    nop();
}
void main(void)
{
    //sub_1();  // not yet possible
    PCLATH = START_sub_1 / 256;
   #asm
    // __LCALL is defined in CC7A file "hexcodes.h"
    DW __LCALL(START_sub_1);
   #endasm
    sub_0a();
    nop();
}
Best regards
Bengt Knudsen


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-07 12:56 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
Весьма печально, что приходиться в очередной раз изворачиваться!

а по поводу "косяков", к примеру если сравнивать с AVR (аналог по производительности):
1) в AVR нет необходимости заботиться,в каком банке памяти расположить переменные (там нет банков).
2) нет проблем при размещении массивов больше 256 байт
3) нет необходимости вводить кучу временных переменных, разбивать сложные выражения
И вообще достала фраза "Синтаксис правильный, но компилировать не могу"
4) В 1886BE2 не сбрасываются автоматически вектора прерываний
да еще много того, что мне не нравится, не приятно работать.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-07 14:35 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Весьма печально, что Вы называете "косяками" особенности архитектуры RISС микроконтроллеров фирмы Microchip.
Очень много людей начинали программировать с микрочиповских котроллеров и эта архитектура им нравится.
А вообще спор о том, какая архитектура лучше сродни спору какой лучше язык программирования (С или Паскаль) и может длиться бесконечно.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-08 05:24 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
Весьма печально, что Вы режете мои фразы, предостерегающие тех, кто только собирается купить и что-то разрабатывать на 1886BE2 + CC7A.

Спасибо за помощь, спорить я не собирался, просто хочется выкинуть в окно 1886BE2 + CC7A.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-08 08:58 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Evgen89519228386 писал(а):
Весьма печально, что Вы режете мои фразы, предостерегающие тех, кто только собирается купить и что-то разрабатывать на 1886BE2 + CC7A.

Спасибо за помощь, спорить я не собирался, просто хочется выкинуть в окно 1886BE2 + CC7A.
Евгений, Ваши некорректные высказывания подправил я, если Вы не прекратите наводить панику и как бабка базарная кричать про тайный заговор "1886BE2 + CC7A", то будете забанены. Кроме Вас этим компилятором пользуется большое число предприятий и все конструктивно решают возникающие проблемы.

_________________
Правила форума!


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-сен-08 13:03 
Не в сети

Зарегистрирован: 2011-сен-05 12:35
Сообщения: 12
Yura писал(а):

Евгений, Ваши некорректные высказывания подправил я, если Вы не прекратите наводить панику и как бабка базарная кричать про тайный заговор "1886BE2 + CC7A", то будете забанены. Кроме Вас этим компилятором пользуется большое число предприятий и все конструктивно решают возникающие проблемы.
И как-же конструктивно решить проблему, когда купил холодильник, а морозилка не работает?!
Вы видимо у всех недовольных некорректные высказывания подправляете.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: 1886BE2 codepage
СообщениеДобавлено: 2011-ноя-29 09:40 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1299
Откуда: АО "ПКК Миландр"
Evgen89519228386 писал(а):
В мк 1886BE2 две страницы памяти программ по 8Кслов каждая. Одну я заполнил, при попытке разместить что-то во второй странице, программа перестает работать (функции размещенные во второй странице - не работают)! Перепробовал наверное все возможные варианты c
#pragma location
#pragma codepage
page1 void f1(){};
Пожалуйста помогайте!
Использую CC7A & IDE for 1886.
Вышла новая версия компилятора CC7A (версия 1.0Е), где эта проблема исправлена
http://milandr.ru/index.php?page=programmnoe-obespech


Вынести предупреждение
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 11 сообщений ] 

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


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

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


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

Перейти: 

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