|
Проблемы с инициализацией или еще с чем-то, MSP430F149 |
|
|
|
Oct 8 2013, 15:39
|
Знающий
   
Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422

|
Здравствуйте ! Нужна помощь новичку в MSP430. Не получается выполнить простейшую операцию , думаю проблема в тактировании. Использую внешний часовой кварц в качестве источника тактирования. Мой код ниже. Прошу помочь, кто знает что не так. Контроллер MSP430F149 Код #include <stdio.h> #include "msp430x14x.h" #include <intrinsics.h>
#include "main.h"
//extern void writeuc_SPI(unsigned char data); #define iSCO 0x40 #define iSCK 0x20 void main() { init(); Usets(); __enable_interrupt(); for(;;) { P3OUT |= iSCO; // P3.6 MOSI P4OUT |= iSCK; // P4.5 MSCK //Ureg = 0x55; //writeuc_SPI(Ureg); //Uucwr(readuc_SPI()); //Uucwr(0x55); } }
|
|
|
|
|
 |
Ответов
|
Oct 9 2013, 15:01
|
Знающий
   
Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422

|
Цитата(MrYuran @ Oct 9 2013, 12:59)  Телепатирую проблему в init(). Если нет, то в Usets()  Остальное вроде нормально. Хотя и непонятно, чего вы ожидаете и что не так. Спасибо большое за поддержку! Дело в том что я сделал еще проще: Код #include <stdio.h> //#include <msp430f149.h> #include <msp430x14x.h> #include <intrinsics.h>
#include "main.h"
//extern void writeuc_SPI(unsigned char data);
void main(void) { //init(); WDTCTL = WDTPW + WDTHOLD; P3DIR |= 0x40; // P3.6 MOSI P4DIR |= 0x20; // P4.5 MSCK P3OUT |= 0x40; // P3.6 MOSI P4OUT |= 0x20; // P4.5 MSCK //P3OUT &= ~iSCO; // P3.6 MOSI //P4OUT &= ~iSCK; // P4.5 MSCK //Usets(); __enable_interrupt(); for(;;) { //P3OUT &= ~iSCO; // P3.6 MOSI //P4OUT &= ~iSCK; // P4.5 MSCK //Ureg = 0x55; //writeuc_SPI(Ureg); //Uucwr(readuc_SPI()); //Uucwr(0x55); } } Зашиваю Relese через download and debug LPT отладчиком(FET Debugger) смотрю на P3.6 и P4.5 и вижу низкий уровень, когда как должен быть высокий. Далее через Debug отладку прохожу построчно и ножки соответсвенно устанавливаются в высокий уровень, и только таким образом. Все оставшиеся манипуляции с Relese/Debug и "download and debug" дают на выходе 0. Не понимаю что должно тактировать, либо LF, либо внутренний DCO, в итоге такое ощущение что тактирования никакого нет. 32768 покдючен к XIN и XOUT. Со схемотехникой все ok, ранее была другая прошивка(не моя, я ее стер своими попытками) и все ok. На входе ножки ресет - высокий уровень, питание есть. Ничего не понимаю, пожайлуста помогите, хотя бы своей инициализацией или проектом под ИАР. Заранее благодарен!
|
|
|
|
|
Oct 10 2013, 07:01
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (addi @ Oct 9 2013, 18:01)  Зашиваю Relese через download and debug LPT отладчиком(FET Debugger) смотрю на P3.6 и P4.5 и вижу низкий уровень, когда как должен быть высокий. Далее через Debug отладку прохожу построчно и ножки соответсвенно устанавливаются в высокий уровень, и только таким образом. А после прошивки вы RUN делаете? Или вы имеете ввиду, что после такой прошивки вы отключаете от программатора и железка не запускается уже без него, самостоятельно? Если вы действительно хотите получить ответ, не ленитесь описать ситуацию максимально подробно. Никому не хочется заниматься тут телепатией.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 10 2013, 19:46
|
Знающий
   
Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422

|
Цитата(Сергей Борщ @ Oct 10 2013, 11:01)  А после прошивки вы RUN делаете? Или вы имеете ввиду, что после такой прошивки вы отключаете от программатора и железка не запускается уже без него, самостоятельно? Если вы действительно хотите получить ответ, не ленитесь описать ситуацию максимально подробно. Никому не хочется заниматься тут телепатией. Спасибо большое за поддержку. Проблема в том что я с помощью ИАР и отладчика(аля FET debugger) думаю запрограммировать микроконтроллер и делаю это следующим образом: Вышеописанный код компилирую, собираю и далее в Release наживаю на "Download and Degug" и далее вроде как "Download application" и после загружается отладчик. Далее выхожу из отладки полагая что сброс контроллера уже прошел и код исполняется, т.е ожидаю увидеть высокие уровни на ножках. В результате на нажках 0. Посльку питание от отладчика то POR с отладчиклом. Убеждаюсь что на Reset 1, смотрю на ножках, на ножках 0. Вопрос, - почему нет исполнения программы после подачи питания и нактивном сбросе. Ежели я не выхожу из отладчика и в отлдачике нажимю на "GO" то на ножках единицы и вроде все как надо. Складывается впечатления что отладчик ничего не прошивает, вопрос как это сделать?
|
|
|
|
|
Oct 10 2013, 20:54
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (addi @ Oct 10 2013, 22:46)  Проблема в том что я с помощью ИАР и отладчика(аля FET debugger) думаю запрограммировать микроконтроллер Это возможно - сам всегда так делал. QUOTE (addi @ Oct 10 2013, 22:46)  наживаю на "Download and Degug" и далее вроде как "Download application" и после загружается отладчик. Далее выхожу из отладки полагая что сброс контроллера уже прошел и код исполняется Обычно отладчик после загрузки ставит точку останова на входе в main(), делает сброс и дожидается пока управление дойдет до точки останова. После чего предлагает вам самому решать, что делать - запускать программу либо идти ее по шагам. Если вы в этот момент выходите из дебаггера или отключаете отладчик - процессор так и останется стоять на точке останова до следующего сброса. QUOTE (addi @ Oct 10 2013, 22:46)  Вопрос, - почему нет исполнения программы после подачи питания и нактивном сбросе. ... Складывается впечатления что отладчик ничего не прошивает, вопрос как это сделать? А вот это наводит на мысль, что вы используете скрипт линкера, который располагает код в ОЗУ. Хотя MSP430F149 не позволяет разместить в ОЗУ вектора прерываний, поэтому такой скрипт очень маловероятен. Но всякое бывает - покажите на всякий случай скрипт линкера. Если бы код не загружался в кристалл, то он не исполнялся бы и пошагово. Можете после загрузки посмотреть в окне дизассемблера, на каких адресах остановилось выполнение и прикинуть - эти адреса относятся к ОЗУ или к флеш. Еще у этой серии (1xx, 1xxx) есть неприятная особенность - он часто впадает в ступор при плавном нарастании питания с неактивным уровнем на ноге сброса. Поэтому в боевой схеме использование супервизора обязательно. Попробуйте кратковременно замкнуть пинцетом ногу сброса на землю. Если не поможет - отключите питание, закоротите питание пинцетом (разрядите емкости), закоротите пинцетом ногу сброса на землю и так и подайте питание с активным ресетом, после чего ресет отпустите. По результатам этих экспериментов будем думать и звать rezidentа - он у нас главный спец по 430. Я уже лет пять как с ними не работаю, мог и подзабыть что-нибудь.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
addi Проблемы с инициализацией или еще с чем-то Oct 8 2013, 15:39  igorle Я по существу ответить не могу. Под рукой нет ниче... Oct 9 2013, 16:58   addi Цитата(igorle @ Oct 9 2013, 20:58) Я по с... Oct 10 2013, 05:56   MrYuran Цитата(igorle @ Oct 9 2013, 19:58) Наприм... Oct 10 2013, 06:06    addi Цитата(MrYuran @ Oct 10 2013, 10:06) На с... Oct 10 2013, 06:16    igorle Цитата(MrYuran @ Oct 10 2013, 09:06) На с... Oct 10 2013, 06:58     addi Цитата(Сергей Борщ @ Oct 11 2013, 00:54) ... Oct 11 2013, 07:00      Сергей Борщ Рискуете схватить предупреждение за избыточное цит... Oct 11 2013, 07:50       addi Цитата(Сергей Борщ @ Oct 11 2013, 11:50) ... Oct 15 2013, 11:54 MrYuran ЦитатаBCSCTL1 = 0x49; // Максимальная частота, дел... Oct 15 2013, 12:20 addi Цитата(MrYuran @ Oct 15 2013, 16:20) Дума... Oct 16 2013, 12:09  MrYuran Цитата(addi @ Oct 16 2013, 15:09) UBR00 =... Oct 17 2013, 06:18   addi Сапсибо огромное, с UBR00 = 0xEE;UBR10 = 0x01; ско... Oct 17 2013, 07:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|