Например TDA7294

Форум РадиоКот • Просмотр темы - Не правильная компиляция СИ кода в HEX / MPLAB X | C
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 22:03:29

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Не правильная компиляция СИ кода в HEX / MPLAB X | C
СообщениеДобавлено: Чт апр 12, 2018 23:06:18 
Первый раз сказал Мяу!

Зарегистрирован: Вт дек 12, 2017 16:52:57
Сообщений: 31
Откуда: Вам широту и долготу скинуть?
Рейтинг сообщения: 0
Всем привет! Пытаюсь освоить PIC12F629. В качестве IDE выбрал MPLAB X. Сделал блинк, компилирую... загружаю в PicKit 3 Programmer... и не работает. PIC выдаёт 0.10 вольт на пине. Посмотрел в HEX и тут вижу: в самом начале какой-то "2BFD" на 000. На "3e2" уже начинаются какие-то данные. Почему так произходит? (При компиляции ассеблерского кода всё нормально.)
ИзображениеИзображение
Спойлер
Код:
// CONFIG
#pragma config FOSC = EXTRCCLK  // Oscillator Selection bits (RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-Up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = ON       // 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 = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#include <pic12f629.h>

#define  _XTAL_FREQ 4000000

void main(void){
    //Вспомогательная переменная
    //для организации временной задержки
    unsigned long counter;
     
    //Настройка портов ввода/вывода PIC12F675
    //Выключение подтягивающих резисторов
    WPU = 0x00;
   
    //Запретить использование подтягивающих резисторов
    OPTION_REGbits.nGPPU = 1;
    // отключить компаратор 
    CMCON = 0x07;
     
    //Настрока выходов GP4, GP5 на выход
    TRISIO = 0;
     
    //Установка на выходах GP4, GP5 лог. 0
    GPIO = 0;
     
    //Бесконечный цикл.
    while(1){
        GPIO4 ^=1;   //выв. 3 инверсия бита 4
        //Задержка на 1 сек
        __delay_ms(1000);
    }
     
}

_________________

ааааааааааааааааааааааааа็аааааааааааааааааааааааа็аааааааааааааааааааааааа, I love this.ааааааааааааааааааааааааа็аааааааааааааааааааааааа็аааааааааааааааааааааааа



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не правильная компиляция СИ кода в HEX / MPLAB X | C
СообщениеДобавлено: Пт апр 13, 2018 10:49:48 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
... и не работает

поправил, расположил тут:
viewtopic.php?p=3352979#p3352979
в протеусе мигает
з.ы. у этих пиков, насколько помню, в начале программы должна быть команда загрузки константы для внутреннего RC генератора или переход в конец. А компилятор вроде с давних времен код с конца размещал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не правильная компиляция СИ кода в HEX / MPLAB X | C
СообщениеДобавлено: Сб апр 14, 2018 07:50:26 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21806
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Посмотрел в HEX и тут вижу: в самом начале какой-то "2BFD" на 000. На "3e2" уже начинаются какие-то данные. Почему так произходит?

0x2BFD это команда goto 0x03FD, то есть безусловный переход по адресу 0x03FD.
Так как в исходном коде нет обработчика прерываний, кода по вектору 0х0004 нет.
Размещение кода "снизу" флеша - стандартная фича микрочиповских компиляторов для 8-разрядных контроллеров. Сверху (младшие адреса) обычно размещаются таблицы констант. Даже тело обработчика прерываний размещается снизу, а на векторе 0004 тоже обычно goto.
PS. Далее исполнение выглядит так (в коде нет вызова калибровочной константы):

Код:
0x03FD  0x0183  clrf  STATUS
0x03FE  0x2BE2  goto 0x03E2

0x03E2  0x1683  bsf  STATUS, RP0
0x03E3  0x0195  clrf  WPU                        ; WPU=0x00
0x03E4  0x1781  bsf  OPTION_REG, GPPU
0x03E5  0x3007  movlw  0x07
0x03E6  0x1283  bcf  STATUS, RP0
0x03E7  0x0099  movwf  CMCON0             ; CMCON=0x07
0x03E8  0x1683  bsf  STATUS, RP0
0x03EA  0x0185  clrf  TRISIO                    ; TRISIO=0x00
0x03EB  0x1283  bcf  STATUS, RP0
0x03EC  0x0185  clrf  GPIO                       ; GPIO=0x00
0x03ED  0x1283  bcf  STATUS, RP0
0x03EE  0x3010  movlw  0x10

..... 


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Не правильная компиляция СИ кода в HEX / MPLAB X | C
СообщениеДобавлено: Вс апр 15, 2018 00:01:00 
Первый раз сказал Мяу!

Зарегистрирован: Вт дек 12, 2017 16:52:57
Сообщений: 31
Откуда: Вам широту и долготу скинуть?
Рейтинг сообщения: 0
... и не работает

поправил, расположил тут:
viewtopic.php?p=3352979#p3352979
в протеусе мигает
з.ы. у этих пиков, насколько помню, в начале программы должна быть команда загрузки константы для внутреннего RC генератора или переход в конец. А компилятор вроде с давних времен код с конца размещал.

Урааа!!! Работает!! Только надо было поправить GPIO4 на GPIO2. Я рад как ребёнок!!!!11 :)) :lol: :) 8) :love: :wink: :))) :idea:
Изображение
Код:
Спойлер
Код:
#pragma config FOSC = INTRCIO  //
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-Up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF       //
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

#define  _XTAL_FREQ 4000000

void main(void){
    //Вспомогательная переменная
    //для организации временной задержки
    unsigned long counter;
     
    //Настройка портов ввода/вывода PIC12F675
    //Выключение подтягивающих резисторов
    WPU = 0x00;
   
    //Запретить использование подтягивающих резисторов
    OPTION_REGbits.nGPPU = 1;
    // отключить компаратор
    CMCON = 0x07;
     
    //Настрока выходов GP4, GP5 на выход
    TRISIO = 0;
     
    //Установка на выходах GP4, GP5 лог. 0
    GPIO = 0;
     
    //Бесконечный цикл.
    while(1){
        GPIO2 ^=1;   //выв. 3 инверсия бита 4
        //Задержка на 1 сек
        __delay_ms(1000);
    }
}


Вложения:
Комментарий к файлу: pic12f629 blink C
MAIN.c [1.42 KiB]
Скачиваний: 562
Комментарий к файлу: pic12f629 blink
worked_test.X.production.hex [215 байт]
Скачиваний: 573

_________________

ааааааааааааааааааааааааа็аааааааааааааааааааааааа็аааааааааааааааааааааааа, I love this.ааааааааааааааааааааааааа็аааааааааааааааааааааааа็аааааааааааааааааааааааа

Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y