Собственно программирую таймер А на микроконтроллере MSP430F2012.
Хочу создать ШИМ с периодом 100 Гц, при нажатии кнопки шаг увеличивается, в начале шаг 10% и так при каждом нажатии увеличивается.
Собственно все не проблема, кроме одного, запутался, как сделать период 100 Гц? Т.е. хочу видеть на осциллографе период в 100 Гц.
Допустим, таймер тактируется частотой 1.000.000 Гц, т.е. за 1 секунду он щёлкнет 1.000.000 раз. Чтобы получить 100 Гц (1/100 с), таймер должен прощёлкать до 10.000 (1.000.000\100). Вот и весь расчет
Вам бы руководство почитать. Там используются два регистра сравнения таймера и аппаратный выход TA0 (допустим). Соответственно прерывание от таймера не требуется. Частота какая у вас будет? Мб помогу регистры таймера расписать.
PS Тоже взял се чудо дешёвую штуковину--хочу сделать на ёе основе полноценный программатор MSP-FET430UIF.
Psych писал(а):Вам бы руководство почитать. Там используются два регистра сравнения таймера и аппаратный выход TA0 (допустим). Соответственно прерывание от таймера не требуется. Частота какая у вас будет? Мб помогу регистры таймера расписать.
PS Тоже взял се чудо дешёвую штуковину--хочу сделать на ёе основе полноценный программатор MSP-FET430UIF.
Что суда вписать, чтобы стало ровно 100 Гц, сейчас на осцилле 105,3 Гц
Мне бы принцип понять, а уже сколько будут регистры и тд, тогда пойму.
Т.к. тут подгонять не получается.
Хотел бы чтобы было в Регистре CCR0=1000, CCR1=800 и частота периода 100 Гц.
Ну тык вы же его тактируете от DCO. Он по дефолту 1 Мгц, но естественно у него своя погрешность. Можно вывести на ножку МК сигнал SMCLK и посмотреть частоту. Поэтому у вас и в регистрах не 10000.
Можно подогнать CCR0 под 100 гц--он отвечает за частоту. CCR1 отвечает за скважиность...в вашем случае она равна 1,75%.
Можно распаять на плате часовой кварц (что я и сделал) и тактировать таймер от ACLK. С ним у вас частота будет примерно 100,2 гц.
Psych писал(а):Ну тык вы же его тактируете от DCO. Он по дефолту 1 Мгц, но естественно у него своя погрешность. Можно вывести на ножку МК сигнал SMCLK и посмотреть частоту. Поэтому у вас и в регистрах не 10000.
Можно подогнать CCR0 под 100 гц--он отвечает за частоту. CCR1 отвечает за скважиность...в вашем случае она равна 1,75%.
Можно распаять на плате часовой кварц (что я и сделал) и тактировать таймер от ACLK. С ним у вас частота будет примерно 100,2 гц.
В итоге что в программном коде изменить? CCR0 уж больно долго подгонять придетсяэ
Сделал 100 Гц) это безумие) 12к надо)
Необязательно. Можете не останавливать, просто в момент изменения регистров(нажатия кнопки) у вас может произойти один неверный импульс---не думаю что это критично.
Psych писал(а):Необязательно. Можете не останавливать, просто в момент изменения регистров(нажатия кнопки) у вас может произойти один неверный импульс---не думаю что это критично.
Ситуация в том, что когда кнопка нажимается не происходит ничего)) Т.е. убавления содержимого регистра не происходит, а просто проседает сигнал на 0,2 В.
А по идее при нажатии должно происходить следующее:
Период остается таким же, но импульс становится шире.