Перейти к содержанию
    

KARLSON

Свой
  • Постов

    641
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные KARLSON


  1. Здравствуйте. Скажите правильно ли я понял? В АД нет структуры библиотеки как в P-CAD, т.е. Одно схемное изображение на разные компоненты. А то смотрю при создании интегрированной библиотеки в файле SCHLib создаются компаненты, а к ним разные посадочные места в PcbLib. Например распространнёный компанент резисторы. Схемное обозначение одинаковое а корпусов куча, соответственно названий компанентов тоже куча. Так мне получается копировать в каждый компонент со своим названием одно и то же схемное обозначение?

  2. Спосибо всем, особенно rezident. Возможно я поступил по Вашему, но через ассемблер. А именно

    Создаётся файл info.s43

     

    public max_ust, min_ust, config, count_clear
    ASEG 0x1000
    max_ust DB 25
    min_ust DB 19
    config DB 1
    count_clear DB 0
    end

     

    А до майна у меня вот что:

     

    extern signed char  max_ust, min_ust, config;
    extern unsigned char count_clear;

     

    И никаких указателей и структур не надо. Хотя кому как удобно. И обращаемся к ним прямо по именам. Это при оптимизации медиум, при более сложных не проверю, т.к. уже многое не работает при этом)))

  3. Здравтсвуйте.

    Ситуация такая:

    Есть 3 переменные, которые необходимо разместить во FLASH памяти.

     

    #pragma memory = constseg(INFOD)      // адреса 1000-103F
    const volatile signed char nst
                min_ust = 19, // 3 установленное по умолчанию отрицательное значение
                max_ust = 25, // 4 установленное по умолчанию положительное знание
                config = 1;

     

    Кстати, без слова "const" переменные во флеш не размещаются. Кто-нибудь знает почему?

     

    Эти переменные изменяются пользователем путём стирания и записывания флеш памяти. Значения меняются точно.

    Далее

    есть кусок кода:

     

    if ((DATA.temperatura > max_ust) || (DATA.temperatura < min_ust)) // если температура вышла из диаппазона    
               {
                  // делаем то-то
               }
               else // если норма
               {
                  // делаем другое
               }

     

    Без оптимизации в настройках компилятора всё нормально, но стоит включить оптимизацию, то в условии в место max_ust и min_ust компилятор ставит 25 и 19 соответственно. Вся загвоздка скорее всего в ключевом слове const. Но без него переменные оказываются в оперативной памяти.

    Без оптимизации не могу, т.к. уже код не умещается в памяти контроллера.

     

    Как выйти из сложившейся ситуации?

  4. Конденсаторы по питанию не помогли?

    По мне так проблема чисто аппаратная. Вы можете представить на суд схему? Если есть осциллограф посмотрите цепи питания и ресет при включении нагрузки. Развёртку поставьте в ждущем режиме.

  5. MASP это опечатка))) MSP

    Меня смутило JTAG:8 -> MSP:59, если на этой линии джампер, то вытащите его. JTAG:8 должен быть пустой

    JTAG:2 -> MSP:7; может всё таки MSP:1?

    JTAG:9 -> MSP:10 если есть перемычка, также убирайте. Должно быть просто JTAG:9 -> GND.

    Должно быть GND -> MSP:63, MSP:62

  6. Но результат то один и тот же!

     

    Советую все же ознакомиться с оригинальной спецификацией I2C и реализовать функцию Bus clear. Весьма пригодится ;)

    restart при зависании шины заложена.

  7. Рекомендацию я конечно же учту, но в чём разница результата операций "|" и "+"?

    PS А модуль USCI в режиме I2C + UART я всё таки укратил (пока ошибок не было). В понедельник проверю ещё раз и если всё в порядке приведу код.

    И ещё (типа слова к разработчикам контроллера), зря запихали они в один вектор прерывания и передачу по UART и приём/передача по I2C, а в другой приём по UART с битами состояния шины I2C. Векторов что ли жалко было?

  8. Я смотрю там джаммперы есть, так вот проверьте тестером следующие цепи:

    JTAG:1 -> MSP:54

    JTAG:2 -> MSP:1

    JTAG:3 -> MSP:55

    JTAG:4 -> НИКУДА

    JTAG:5 -> MSP:56

    JTAG:7 -> MSP:57

    JTAG:9 -> GND

    JTAG:11 -> MSP:58

    MSP:1 -> MASP:64

    MSP:63 -> MASP:62

    MSP:63 -> GND

     

    Остальные выводы у разьёма никуда.

  9. Здравствуйте. Скажите пожалуйста, а в каком случае устанавливается бит UCBBUSY в регистре UCB0STAT модуля USCI в режиме I2C.

    Дело вот в чём: В течении примерно часа происходит сбой на шине. Смотрю регистры и в каком месте произошёл сбой. Так вот, после успешного некоторого обмена с микросхемой слейвом, завершающийся операцией стоп, при следующем обмене происходит проверка занятости шины или то что SCL в нуле "if (UCB0STAT & (UCBBUSY + UCSCLLOW))".

    Мастер на шине только я (контроллер), смотрю на шину осциллографом, на шине SDA и SCL уровень логический 1. А бит UCBBUSY установлен в 1 (все остальные в регистре нули). Помогает только путём возведения и опускания бита UCSWRST в регистре UCB0CTL1.

     

    Кстати контроллер 430F2132

×
×
  • Создать...