Dubov 0 30 июня, 2014 Опубликовано 30 июня, 2014 · Жалоба Естьп роект под IAR, нажимаю Download, отсоединяю JTAG, нажимаю кнопку аппаратного сброса - программа работает. После повторного нажатия кнопки программа не стартует. в чем может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
den_po 0 1 июля, 2014 Опубликовано 1 июля, 2014 · Жалоба Если проект заливался иаром, после отключения отладчика могут быть самые разные неприятности в работе. Это касается не только MSP, но и других микроконтроллеров. Для работы без отладчика лучше заливать проект чем-нибудь другим. Например FET-Pro430. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
O.L. 0 1 июля, 2014 Опубликовано 1 июля, 2014 · Жалоба нажимаю кнопку аппаратного сброса - программа работает. После повторного нажатия кнопки программа не стартует. Как сконфигурированн в Вашей программе вывод RST/NMI и есть ли обработчик события по NMI если этот вывод настроен как вход немаскируемого прерывания? Если у Вас MSP430 конечно ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 4 июля, 2014 Опубликовано 4 июля, 2014 · Жалоба Как сконфигурированн в Вашей программе вывод RST/NMI Кажется, никак не настроен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shread 0 30 июля, 2014 Опубликовано 30 июля, 2014 · Жалоба Вариантов несколько. Проверьте напряжение на линии после того, как кнопку отпустили. Думаю по какой-то причине оно остается недостаточным, чтоб процессор вышел из сброса. Еще может быть - кривая первичная инициализация. Была похожая ситуация когда-то очень давно, когда некоторые регистры модуля тактирования были недоинициализированы. В итоге при первичном старте - работало, после сброса - переставало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vik25 0 17 января, 2015 Опубликовано 17 января, 2015 · Жалоба Не буду затевать новую тему, мой вопрос похожий. Я из категории любителей, использующих MSP430G2 для "бытовых" целей. Естественно, что начинал со светодиодов. Сейчас сделал программку управления шаговым двигателем. Формирую временную диаграмму двигателя. За "один проход" программа должна сделать 1000 оборотов и останавиться. Предполагал, что после нажатия RESET программа будет повторно запускаться, делая 1000 оборотов. Но ничего не получается. Чтобы снова заработало, надо опять делать DEBUG и запуск. Если подать питание на LaunchPad, то запуска программы не происходит, не помогает и кнопка сброса. Зато программы, в которых бесконечный цикл (зависание), те же светодиоды, при подаче питания начинают работать. Можно попробовать сделать бесконечный цикл для ожидания нажатия кнопки, подключенной к одному из портов, но хотелось бы понять как использовать сброс. Почитал про работу сброса и возникла пара вопросов. Надо ли программно конфигурировать вход RST, чтобы была реакция на нажатие кнопки сброса или это предопределенная установка. Судя по описанию, после сброса управление передается по адресу, находящемуся в векторе 0FFFEh. Если я программно не определял этот вектор, куда передается управление? Передастся ли на начало моей программы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 19 января, 2015 Опубликовано 19 января, 2015 (изменено) · Жалоба 1. Есть-ли резистор 47К на ноге Reset, на сделанной вами плате (кроме того что есть на Ланчпаде)? Если нет, то без Ланчпада из состояния сброса не выйдет. 2. Есть-ли вначале программы инициализация стека (регистр SP)? Если нет, то в случае вызова подпрограммы или другого обращения к стеку - программа "вылетит" в неизведанную даль. А простая линейная программа типа светодиодной мигалки будет работать. 3. Остановлен-ли вначале программы сторожевой таймер? При сбросе сторожевой таймер в MSP активируется, и чтоб он не пересбросил систему, его вначале программы нужно отключить. 4. Считайте прошивку контроллера с помощью Ланчпада и программы FET-Pro430 Lite version на сайте http://www.elprotronic.com/download.html и посмотрите что в векторе сброса, и куда записана основная программа. 5. В настройках проекта IAR - правильно-ли указана модель текущего процессора? Изменено 19 января, 2015 пользователем controller_m30 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 19 января, 2015 Опубликовано 19 января, 2015 · Жалоба Вариантов несколько. Проверьте напряжение на линии после того, как кнопку отпустили. Думаю по какой-то причине оно остается недостаточным, чтоб процессор вышел из сброса. Еще может быть - кривая первичная инициализация. Была похожая ситуация когда-то очень давно, когда некоторые регистры модуля тактирования были недоинициализированы. В итоге при первичном старте - работало, после сброса - переставало. если плата самодельная - я бы проверил корректность подводки линий JTAG от разъема программатора. Кабель и его длина тоже критичны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vik25 0 19 января, 2015 Опубликовано 19 января, 2015 · Жалоба До своей платы пока не дорос, пользуюсь Ланчпадом, никаких перепаек на ней не делал. Инициализации стека в программе нет. Программа линейная, без подпрограмм. Разница между моей и мигалкой в том, что мигалка работает в бесконечном цикле, а моя делает один проход и мне хотелось бы чтобы она повторялась с начала по нажатию Reset. Но этого не происходит. Сторожевой таймер в начале программы выключается. Пункт 4 для меня сложноват, но попробую осмыслить. Тип микросхемы в IAR указан правильно. Самодельной платы, как уже сказал, пока нет. Из всех советов пока делаю вывод: сосредоточиться и осмыслить происходящее при помощи п. 4 от controller_m30 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vik25 0 21 января, 2015 Опубликовано 21 января, 2015 · Жалоба Спасибо за советы, особенно в личке. Получил немало информации для чтения мануалов. Не капризна ли Ланчпад к подключению осциллографа или мультиметра? Не грохну Ланчпад? По поводу моей ситуации я понял, что надо сделать свою платочку с панелькой, куда переставлю микросхему. Посмотрю какая будет реакция на сброс. Насколько я понимаю, в обвязке должно быть питание 3,7 в, от ножки сброса 47 к на питание и кнопку об землю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 25 января, 2015 Опубликовано 25 января, 2015 · Жалоба Не. 3,7в не надо! У MSP430 питание в пределах 1,8-3,6 в. Полно стабилизаторов на 3.3 В в продаже (L78L33, корпус TO-92 как у транзистора), или даже запитать от двух батареек 1,5В включенных последовательно. Вы уточните, какой контроллер используете, на чем пишете программу (АSM, Cи), можно текст программы выложить - она скорее всего не секретная для простого кручения шагового двигателя. У меня есть Ланчпад, и несколько свободных контроллеров: G2211, G2231, G2452. Если программа написана для одного из них, то могу залить в свой контроллер и проверить как у меня будет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vik25 0 25 января, 2015 Опубликовано 25 января, 2015 (изменено) · Жалоба Использую 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); // Сброс всех фаз } Странное форматирование кода. Привести к формату текста сообщения не получилось. Изменено 26 января, 2015 пользователем Syber Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 25 января, 2015 Опубликовано 25 января, 2015 · Жалоба to Syber "Меня терзают смутные сомненья". А Вы абсолютно уверены, что программулина не работает ? Этот вопрос мне навеял стиль формирования временных задержек. Развеять это Вы можете промониторив точки прохода программы осцилографом, на любом пине порта P1OUT ^= 0x01; // Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vik25 0 25 января, 2015 Опубликовано 25 января, 2015 · Жалоба По поводу текста, который дал. Я сейчас на суточном дежурстве и код дал по варианту, с которым когда-то работал. Завтра дома проверю на макете и скажу о работоспособности конкретного текса. Работу программулины я оцениваю по тому, что происходит с шаговым двигателем – а он все-таки вертится!!! По поводу формирования задержек. Это как раз тот момент, по которому не хочется показывать свой текст. Я не профессионал. Вполне возможно, что написано глупо, но работает. Так что не судите строго за уровень профессионализма. P1OUT ^= 0x01; // Не понял что это? Если совет, то к каким строкам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vik25 0 26 января, 2015 Опубликовано 26 января, 2015 · Жалоба Да, на работе я вытащил вариант с ошибками. Первая строка должна быть: #include <msp430G2211.h> Строка 18 (в такте 1) должна быть: int timex=620; В приведенном выше коде эти ошибки я исправил. Жму Restart Debugger Затем Go на появившейся панели отладки. ШД делает 10 оборотов и останавливается. Далее не получается повторно запустить. Не помогает RESET на ланчпаде, нет реакции на GO панели отладки IAR. Помогает только повторная Restart Debugger Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться