Timur1992 0 12 декабря, 2013 Опубликовано 12 декабря, 2013 · Жалоба :smile3046: Вообщем извиняюсь за свою глупость, я не понимаю почему на MSP430F1611 у меня не работает таймер. Я прочитал уже: http://we.easyelectronics.ru/msp430/uroki-...09-taymery.html http://habrahabr.ru/post/160769/ Вообщем может у кого завалялась прошивка с мигающими светодиодами подходящая для это микроконтроллера!? Мне просто нужна мигалка на таймере для этого микроконтроллер. Что посидеть посмотреть на рабочий код и понять свой ошибки. В заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 16 12 декабря, 2013 Опубликовано 12 декабря, 2013 · Жалоба А без таймера уже мигает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timur1992 0 12 декабря, 2013 Опубликовано 12 декабря, 2013 · Жалоба А без таймера уже мигает? Без таймера не мигает. Ну если конечно вместо таймера задержку не использовать. А мне надо именно с таймером, чтоб понять как он работает. Один нормальный рабочий пример чтоб я посидел и подумал :D Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mib383 0 13 декабря, 2013 Опубликовано 13 декабря, 2013 (изменено) · Жалоба Вот ссылка на примеры кода для твоего msp430 от производителя http://www.ti.com/lit/zip/slac015. Там найдешь примеры для работы с таймером и, как раз, подумаешь почему не работает у тебя. А вообще очень полезно внимательно мануал прочитать, сразу понимание резко улучшится. Изменено 13 декабря, 2013 пользователем mib383 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timur1992 0 18 декабря, 2013 Опубликовано 18 декабря, 2013 · Жалоба Вот ссылка на примеры кода для твоего msp430 от производителя http://www.ti.com/lit/zip/slac015. Там найдешь примеры для работы с таймером и, как раз, подумаешь почему не работает у тебя. А вообще очень полезно внимательно мануал прочитать, сразу понимание резко улучшится. Спасибо, уже побывал, примеры от производителя не компилировался. Вообщем я сидел, читал русское руководство к msp430x1xxx, и кое что стало проясняться Я написал такую вот программу мигалка-метроном, но либо она не работает, либо она работает не корректно >< Можете посмотреть код? На изменение значение TACCR0 практический не какой реакций. #include <io.h> void timerA_init(){ _BIC_SR(0x0020); BCSCTL2 =0; BCSCTL1 = 0xC4; TACTL = TACLR; // TACTL регистр управления таймеро А, TACLR очистка таймера А TACCTL0 = 0; // управления захватом сравнением TACCR0 = 0x0F0; // захват/сравнение таймер А TACTL =0x3F0; //TACTL =0x113; } int main() { WDTCTL = WDTPW + WDTHOLD; P1SEL&=~(0xFF); P1DIR |= 0x1C; //умераций с конца P5SEL&=~(0xFF); P5DIR |= 0xFF; while(1){ timerA_init(); TACCTL0 &= ~CCIFG; P1OUT ^= 0xFF; P5OUT ^= 0xFF; } return 0; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 19 декабря, 2013 Опубликовано 19 декабря, 2013 · Жалоба Спасибо, уже побывал, примеры от производителя не компилировался. Какие были ошибки ? Можете посмотреть код? Ужос-ужос. Он же в инициализации болтается бесконечно. Tip: напишите внятные комментарии к каждой строке, не просто, что делаете, а зачем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PRidon 0 19 декабря, 2013 Опубликовано 19 декабря, 2013 · Жалоба #include <io.h> _BIC_SR(0x0020); Не понял что вот это за строчка. Если бы тут стоял бит программа бы и не дошла до этого места. По шагам смотрел чего и как? Как по виду, так у тебя бы постоянно крутилось в while(1){}. А с виду просто горение светодиода. У тебя ничего схватывать/сравнивать не будет. Ты же его выключаешь : TACCTL0 = 0; Определись с источником тактирования. Что ты хочешь от INCLK? Ну и да. На лицо полное непонимание работы МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timur1992 0 19 декабря, 2013 Опубликовано 19 декабря, 2013 · Жалоба Всем спасибо, все свободный! В итоге сам нашел нормальный пример, буду его анатомировать :D #include <signal.h> #include <io.h> int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT TACTL = TASSEL1 + TACLR; // SMCLK, clear TAR CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 0xFFF; P1DIR |= 0xFF; // P1.1 output TACTL |= MC1; // Start Timer_A in continuous mode _EINT(); // Enable interrupts for (;;) { _BIS_SR(CPUOFF); // CPU off _NOP(); // Required only for C-spy } return 0; } // Timer A0 interrupt service routine interrupt(TIMERA0_VECTOR) Timer_A (void) { P1OUT ^= 0xFF; // Toggle P5.1 CCR0 += 0xFFFF; // Add Offset to CCR0 } interrupt(TIMERA1_VECTOR) Timer_A (void) { P1OUT ^= BIT3; // Toggle P5.1 CCR0 += 0xFFF6; // Add Offset to CCR0 } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 20 декабря, 2013 Опубликовано 20 декабря, 2013 · Жалоба В итоге сам нашел нормальный пример, буду его анатомировать :D Было бы лучше и гораздо полезнее, если бы вы вместо анатомирования чужих программ, читали вдумчиво и внимательно основной документ MSP430x1xx Family User's Guide (Rev. F) - slau049f.pdf и потихоньку писали свою программу. Если проблема с аглицким, то вот тут про таймер в MSP430 на русском. Или поищите в сети тот же перевод User's Manual на русский из серии библиотеки Компела "Семейство микроконтроллеров MSP430x1xx: Руководство пользователя". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timur1992 0 21 декабря, 2013 Опубликовано 21 декабря, 2013 · Жалоба Было бы лучше и гораздо полезнее, если бы вы вместо анатомирования чужих программ, читали вдумчиво и внимательно основной документ MSP430x1xx Family User's Guide (Rev. F) - slau049f.pdf и потихоньку писали свою программу. Если проблема с аглицким, то вот тут про таймер в MSP430 на русском. Или поищите в сети тот же перевод User's Manual на русский из серии библиотеки Компела "Семейство микроконтроллеров MSP430x1xx: Руководство пользователя". Было бы еще лучше если бы и свой процессор разработал, который был бы мне понятней так как соответствовал моему текущему когнитивному опыту :D А так я нашел наилучший вариант для себя. Берем машинку разбираем и смотрим как она работает, параллельно увеличиваем понимание документацией. Люблю исследование! :D Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BigallS 0 23 декабря, 2013 Опубликовано 23 декабря, 2013 · Жалоба Было бы еще лучше если бы и свой процессор разработал, который был бы мне понятней так как соответствовал моему текущему когнитивному опыту :D А так я нашел наилучший вариант для себя. Берем машинку разбираем и смотрим как она работает, параллельно увеличиваем понимание документацией. Люблю исследование! :D Очень хороший сайт по MSP430 посмотри, в частности по таймеру http://www.shelezyakin.ru/?p=1135 http://www.shelezyakin.ru/?p=1135 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Cruz21 0 7 января, 2014 Опубликовано 7 января, 2014 (изменено) · Жалоба TACTL = TACLR; // TACTL регистр управления таймеро А, TACLR очистка таймера А ты просто таймер не включил, т.е не присвоил нужные регистры TACTL – Timer_A Control Register, Регистр управления Таймера А. Используется для связи таймера с тактовыми сигналами и выбора режимов работы. TASSELx, биты 8 и 9, указывают таймеру, какой из тактовых сигналов использовать. IDx, биты 6 и 7, указывают, какой делитель частоты тактового сигнала использовать, 2, 4 или 8. Делится частота, полученная уже после применения делителя в самом генераторе тактового сигнала. MCx, биты 4 и 5, указывают на режим работы таймера. Если они равны 0 (стоит по умолчанию) таймер полностью остановлен. TACLR, бит 2. Если в него вписать 1, это приведет к сбросу таймера. Микроконтроллер автоматически вписывает в этот бит 0, после перезапуска таймера. TAIE и TAIFG, биты 0 и 1, соответственно. Контролируют прерывание таймера, об этом чуть ниже. Изменено 7 января, 2014 пользователем Cruz21 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться