реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
Dubov
сообщение Jun 30 2014, 19:32
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Естьп роект под IAR, нажимаю Download, отсоединяю JTAG, нажимаю кнопку аппаратного сброса - программа работает. После повторного нажатия кнопки программа не стартует.

в чем может быть проблема?
Go to the top of the page
 
+Quote Post
den_po
сообщение Jul 1 2014, 10:48
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Если проект заливался иаром, после отключения отладчика могут быть самые разные неприятности в работе. Это касается не только MSP, но и других микроконтроллеров. Для работы без отладчика лучше заливать проект чем-нибудь другим. Например FET-Pro430.
Go to the top of the page
 
+Quote Post
O.L.
сообщение Jul 1 2014, 11:09
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 10-06-05
Из: Новосибирск
Пользователь №: 5 890



Цитата(Dubov @ Jul 1 2014, 02:32) *
нажимаю кнопку аппаратного сброса - программа работает. После повторного нажатия кнопки программа не стартует.


Как сконфигурированн в Вашей программе вывод RST/NMI и есть ли обработчик события по NMI если этот вывод настроен как вход немаскируемого прерывания? Если у Вас MSP430 конечно wink.gif
Go to the top of the page
 
+Quote Post
Dubov
сообщение Jul 4 2014, 06:31
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Цитата(O.L. @ Jul 1 2014, 15:09) *
Как сконфигурированн в Вашей программе вывод RST/NMI

Кажется, никак не настроен.
Go to the top of the page
 
+Quote Post
Shread
сообщение Jul 30 2014, 05:47
Сообщение #5


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Вариантов несколько.
Проверьте напряжение на линии после того, как кнопку отпустили. Думаю по какой-то причине оно остается недостаточным, чтоб процессор вышел из сброса.
Еще может быть - кривая первичная инициализация. Была похожая ситуация когда-то очень давно, когда некоторые регистры модуля тактирования были недоинициализированы. В итоге при первичном старте - работало, после сброса - переставало.
Go to the top of the page
 
+Quote Post
Syber
сообщение Jan 17 2015, 06:37
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 25-11-11
Пользователь №: 68 522



Не буду затевать новую тему, мой вопрос похожий.

Я из категории любителей, использующих MSP430G2 для "бытовых" целей. Естественно, что начинал со светодиодов. Сейчас сделал программку управления шаговым двигателем. Формирую временную диаграмму двигателя. За "один проход" программа должна сделать 1000 оборотов и останавиться. Предполагал, что после нажатия RESET программа будет повторно запускаться, делая 1000 оборотов. Но ничего не получается. Чтобы снова заработало, надо опять делать DEBUG и запуск.
Если подать питание на LaunchPad, то запуска программы не происходит, не помогает и кнопка сброса. Зато программы, в которых бесконечный цикл (зависание), те же светодиоды, при подаче питания начинают работать.
Можно попробовать сделать бесконечный цикл для ожидания нажатия кнопки, подключенной к одному из портов, но хотелось бы понять как использовать сброс. Почитал про работу сброса и возникла пара вопросов.

Надо ли программно конфигурировать вход RST, чтобы была реакция на нажатие кнопки сброса или это предопределенная установка.

Судя по описанию, после сброса управление передается по адресу, находящемуся в векторе 0FFFEh. Если я программно не определял этот вектор, куда передается управление? Передастся ли на начало моей программы?
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Jan 19 2015, 12:47
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



1. Есть-ли резистор 47К на ноге Reset, на сделанной вами плате (кроме того что есть на Ланчпаде)? Если нет, то без Ланчпада из состояния сброса не выйдет.
2. Есть-ли вначале программы инициализация стека (регистр SP)? Если нет, то в случае вызова подпрограммы или другого обращения к стеку - программа "вылетит" в неизведанную даль. А простая линейная программа типа светодиодной мигалки будет работать.
3. Остановлен-ли вначале программы сторожевой таймер? При сбросе сторожевой таймер в MSP активируется, и чтоб он не пересбросил систему, его вначале программы нужно отключить.
4. Считайте прошивку контроллера с помощью Ланчпада и программы FET-Pro430 Lite version на сайте http://www.elprotronic.com/download.html и посмотрите что в векторе сброса, и куда записана основная программа.
5. В настройках проекта IAR - правильно-ли указана модель текущего процессора?

Сообщение отредактировал controller_m30 - Jan 19 2015, 12:53
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jan 19 2015, 14:47
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Shread @ Jul 30 2014, 08:47) *
Вариантов несколько.
Проверьте напряжение на линии после того, как кнопку отпустили. Думаю по какой-то причине оно остается недостаточным, чтоб процессор вышел из сброса.
Еще может быть - кривая первичная инициализация. Была похожая ситуация когда-то очень давно, когда некоторые регистры модуля тактирования были недоинициализированы. В итоге при первичном старте - работало, после сброса - переставало.


если плата самодельная - я бы проверил корректность подводки линий JTAG от разъема программатора.
Кабель и его длина тоже критичны.
Go to the top of the page
 
+Quote Post
Syber
сообщение Jan 19 2015, 15:04
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 25-11-11
Пользователь №: 68 522



До своей платы пока не дорос, пользуюсь Ланчпадом, никаких перепаек на ней не делал.
Инициализации стека в программе нет. Программа линейная, без подпрограмм. Разница между моей и мигалкой в том, что мигалка работает в бесконечном цикле, а моя делает один проход и мне хотелось бы чтобы она повторялась с начала по нажатию Reset. Но этого не происходит.
Сторожевой таймер в начале программы выключается.
Пункт 4 для меня сложноват, но попробую осмыслить.
Тип микросхемы в IAR указан правильно.
Самодельной платы, как уже сказал, пока нет.

Из всех советов пока делаю вывод: сосредоточиться и осмыслить происходящее при помощи п. 4 от controller_m30
Go to the top of the page
 
+Quote Post
Syber
сообщение Jan 21 2015, 08:43
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 25-11-11
Пользователь №: 68 522



Спасибо за советы, особенно в личке. Получил немало информации для чтения мануалов.
Не капризна ли Ланчпад к подключению осциллографа или мультиметра? Не грохну Ланчпад?
По поводу моей ситуации я понял, что надо сделать свою платочку с панелькой, куда переставлю микросхему. Посмотрю какая будет реакция на сброс. Насколько я понимаю, в обвязке должно быть питание 3,7 в, от ножки сброса 47 к на питание и кнопку об землю.
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Jan 25 2015, 10:24
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



Не. 3,7в не надо! У MSP430 питание в пределах 1,8-3,6 в. Полно стабилизаторов на 3.3 В в продаже (L78L33, корпус TO-92 как у транзистора), или даже запитать от двух батареек 1,5В включенных последовательно.

Вы уточните, какой контроллер используете, на чем пишете программу (АSM, Cи), можно текст программы выложить - она скорее всего не секретная для простого кручения шагового двигателя.

У меня есть Ланчпад, и несколько свободных контроллеров: G2211, G2231, G2452. Если программа написана для одного из них, то могу залить в свой контроллер и проверить как у меня будет работать.
Go to the top of the page
 
+Quote Post
Syber
сообщение Jan 25 2015, 14:36
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 25-11-11
Пользователь №: 68 522



Использую G2211. Проверил на Ланчпаде мультиметром ножку 10 (RST) - нормально. При нажатии - 0 в, отпускаю - 3,5 в.
Програмка секретна в том смысле, что неловко показывать подобное, когда вокруг говорят о солидных проектах.
Использую IAR. Программка, с которой работаю - зациклена, но ниже привожу вариант на 10 оборотов без цикла.
Как я предполагаю: после запуска делает 10 оборотов и останавливается. Хотел бы увидеть, что программка перезапускается после нажатия кнопки сброс.
В окончательном варианте программка будет "висячей". Будет три кнопки: влево, стоп, вправо. И в этом варианте будет постоянное ожидание нажатия кнопки.

Код
#include <msp430G2211.h>
void main(void)
//Вариант для двухобмоточного ШД со средней точкой.

{
WDTCTL = WDTPW + WDTHOLD;  //выключаем сторожевой таймер
P1DIR |= (BIT0 + BIT1 + BIT2+BIT3); // Установка портов 0-:-3 на вывод
P1OUT &= ~(BIT0 + BIT1 + BIT2+BIT3); // Сброс всех фаз

int step = 0;
while (step < 120)// 1 оборот - 12 циклов
{
//Такт 1
P1OUT |= BIT0;          // включить
P1OUT &=~BIT1;      // выключить
P1OUT &=~BIT2;      // выключить
P1OUT |= BIT3;          // включить
int timex=620;
while (timex != 0) //пока не уменьшили до нуля
{
timex--;  //скорость
}

//Такт 2
P1OUT |= BIT0;          // включить
P1OUT &=~BIT1;      // выключить
P1OUT |= BIT2;          // включить
P1OUT &=~BIT3;      // выключить
timex=620;
while (timex != 0) //пока не уменьшили до нуля
{
timex--;  //скорость
}

//Такт 3
P1OUT &=~BIT0;      // выключить
P1OUT |= BIT1;          // включить
P1OUT |= BIT2;          // включить
P1OUT &=~BIT3;      // выключить
timex=620;
while (timex != 0) //пока не уменьшили до нуля
{
timex--;  //скорость
}

//Такт 3
P1OUT &=~BIT0;      // выключить
P1OUT |= BIT1;          // включить
P1OUT &=~BIT2;      // выключить
P1OUT |= BIT3;          // включить
timex=620;
while (timex != 0) //пока не уменьшили до нуля
{
timex--;  //скорость
}
step ++;
}
P1OUT &= ~(BIT0 + BIT1 + BIT2+BIT3); // Сброс всех фаз
}



Странное форматирование кода. Привести к формату текста сообщения не получилось.

Сообщение отредактировал Syber - Jan 26 2015, 05:44
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jan 25 2015, 17:05
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



to Syber
"Меня терзают смутные сомненья".
А Вы абсолютно уверены, что программулина не работает ?
Этот вопрос мне навеял стиль формирования временных задержек.
Развеять это Вы можете промониторив точки прохода программы осцилографом, на любом пине порта

P1OUT ^= 0x01; //
Go to the top of the page
 
+Quote Post
Syber
сообщение Jan 25 2015, 20:47
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 25-11-11
Пользователь №: 68 522



По поводу текста, который дал. Я сейчас на суточном дежурстве и код дал по варианту, с которым когда-то работал. Завтра дома проверю на макете и скажу о работоспособности конкретного текса.
Работу программулины я оцениваю по тому, что происходит с шаговым двигателем – а он все-таки вертится!!!
По поводу формирования задержек. Это как раз тот момент, по которому не хочется показывать свой текст. Я не профессионал. Вполне возможно, что написано глупо, но работает. Так что не судите строго за уровень профессионализма.
Цитата
P1OUT ^= 0x01; //

Не понял что это? Если совет, то к каким строкам?
Go to the top of the page
 
+Quote Post
Syber
сообщение Jan 26 2015, 05:46
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 25-11-11
Пользователь №: 68 522



Да, на работе я вытащил вариант с ошибками.
Первая строка должна быть:
#include <msp430G2211.h>
Строка 18 (в такте 1) должна быть:
int timex=620;
В приведенном выше коде эти ошибки я исправил.
Жму Restart Debugger
Затем Go на появившейся панели отладки. ШД делает 10 оборотов и останавливается. Далее не получается повторно запустить. Не помогает RESET на ланчпаде, нет реакции на GO панели отладки IAR. Помогает только повторная Restart Debugger
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 12:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01928 секунд с 7
ELECTRONIX ©2004-2016