Помогите новичку запрограммировать контроллер ATtiny13
Модератор: boogyman
Помогите новичку запрограммировать контроллер ATtiny13
Всем привет.
Случай для знающих людей элементарный,но я совсем новичок, поэтому без помощи не обойдусь.Нашел вот схемку radioparty. ru/index.php/device-avr/217-stepcontrolattiny13
В программировании контроллеров я не силен совсем, нужна простая программа на Си , чтобы моторчик вращался в одну сторону, если можно то с комментариями. Ну и совсем круто будет для меня, если программа будет например крутить двигатель на несколько оборотов в одну сторону,а потом в другую, ну и в том духе.
Нигде не нашел подробного объяснения, или подобной программы с хорошим описанием, поэтому спрашиваю. Самому разбираться с самых азов к сожалению времени нет. А вот пример такой программки с комментами очень бы помог освоиться. Заранее спасибо.
Случай для знающих людей элементарный,но я совсем новичок, поэтому без помощи не обойдусь.Нашел вот схемку radioparty. ru/index.php/device-avr/217-stepcontrolattiny13
В программировании контроллеров я не силен совсем, нужна простая программа на Си , чтобы моторчик вращался в одну сторону, если можно то с комментариями. Ну и совсем круто будет для меня, если программа будет например крутить двигатель на несколько оборотов в одну сторону,а потом в другую, ну и в том духе.
Нигде не нашел подробного объяснения, или подобной программы с хорошим описанием, поэтому спрашиваю. Самому разбираться с самых азов к сожалению времени нет. А вот пример такой программки с комментами очень бы помог освоиться. Заранее спасибо.
Последний раз редактировалось skullhead 15 фев 2012, 08:26, всего редактировалось 1 раз.
Re: Помогите новичку запрограммировать контроллер ATtiny13
Какой моторчик?(мощность, напряжение питания). Как он будет переключаться? (с помощью кнопок, переключателя, циклично)
Re: Помогите новичку запрограммировать контроллер ATtiny13
Моторчик униполярный ST28. переключаться циклично ,никаких кнопок.да и не в этом дело.у меня есть пару проверенных схем.но загвоздка в программе. с основами программирования я знаком,но не микроконтроллеров.вот мне бы пример,с подсказками.сложных задач пока перед собой не ставлю,вот для начала хочу разобраться с вращением мотора.
там по ссылке схема которую планирую использовать.
там по ссылке схема которую планирую использовать.
Re: Помогите новичку запрограммировать контроллер ATtiny13
Вот код, немножко переделал из исходника который есть в статье вверху по ссылке, шаговый циклично меняет направление вращения
Код: Выделить всё
// attiny13, clock 9.6MHz, предделитель на 8 включен
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
// массивы последовательностей выходов
#define MAX_STEP 4
// по часовой
unsigned char cwstep_seq[MAX_STEP]= {0b00000110,
0b00000011,
0b00001001,
0b00001100};
// против часовой
unsigned char ccwstep_seq[MAX_STEP]= {0b00001100,
0b00001001,
0b00000011,
0b00000110};
volatile unsigned char step_index;
volatile unsigned int ovftimes;
volatile unsigned char status;
// обработчик прерывания по переполнению TIMER0
ISR(TIM0_OVF_vect)
{
static unsigned int count=1;
count++;
if (count >= ovftimes) {
cli(); // запрещаем прерывания
// Stepping Output
if (status)
PORTB = ccwstep_seq[step_index++];
else
PORTB = cwstep_seq[step_index++];
if (step_index >= MAX_STEP)
step_index=0;
count=0; // сброс счетчика
TCNT0=0; // старт отсчета с нуля
sei(); // разрешаем прерывания
}
}
int main(void)
{
// инициализация портов
DDRB = 0b00001111; // PB0, PB1, PB2, и PB3 выходы, остальные входы
PORTB = 0b00000000; // Reset PORTB Output
// Инициализация TIMER0
TCCR0B=(1<<CS01); // предделитель на 8 с частотой 9.6 MHz
TCNT0=0; // обнуляем счетчик
TIMSK0=(1<<TOIE0); // разрешаем прерывание по переполнению TIMER0
step_index=0;
ovftimes=10;
sei(); // разрешаем прерывания
while(1) { // главный цикл
status=1; // направление против часовой
_delay_ms(500);
status=0; // направление по часовой
_delay_ms(500);
}
}
- Вложения
-
- stepper.rar
- Проект в AVRstudio и Proteus
- (34.82 КБ) 3294 скачивания
Re: Помогите новичку запрограммировать контроллер ATtiny13
Спасибо огромное! Не ожидал такого развернутого ответа)Теперь есть от чего отталкиваться.
Появился вопрос.С чем может быть связаны дергания двигателя во время симуляции?
Появился вопрос.С чем может быть связаны дергания двигателя во время симуляции?
Re: Помогите новичку запрограммировать контроллер ATtiny13
Надо попробовать в железе, пока времени нет, думаю частоту таймера надо настраивать
Re: Помогите новичку запрограммировать контроллер ATtiny13
а какой компилятор использовался?
Re: Помогите новичку запрограммировать контроллер ATtiny13
AVRStudio 4skullhead писал(а):а какой компилятор использовался?
Re: Помогите новичку запрограммировать контроллер ATtiny13
Спасибо еще раз.
Re: Помогите новичку запрограммировать контроллер ATtiny13
Здравствуйте. Хотелось бы собрать электронное управление заслонкой холодного,горячего воздуха в
автомобиль на шаговом двигателе. В программировании не силен, хочу попросить у вас помощи. Схему я
набросал. Суть в том, чтобы двигатель управлялся энкодором, общий угол поворота двигателя примерно 180
град ,угол поворота двигателя в каждую сторону примерно 90 град. (эту величину хотелось сделать
регулируемой, указать отвечающий параметр за кол-во шагов при прошивке МК), а также при повороте
энкодера в одну сторону зажигались светодиоды красного цвета, а в противоположную - синего, но при этом
светодиоды красного цвета выключались, и наоборот.
автомобиль на шаговом двигателе. В программировании не силен, хочу попросить у вас помощи. Схему я
набросал. Суть в том, чтобы двигатель управлялся энкодором, общий угол поворота двигателя примерно 180
град ,угол поворота двигателя в каждую сторону примерно 90 град. (эту величину хотелось сделать
регулируемой, указать отвечающий параметр за кол-во шагов при прошивке МК), а также при повороте
энкодера в одну сторону зажигались светодиоды красного цвета, а в противоположную - синего, но при этом
светодиоды красного цвета выключались, и наоборот.
- Вложения
-
- Управление заслонкой.rar
- (15.56 КБ) 2960 скачиваний
- Vasilii_II
- Новичок
- Сообщения: 4
- Зарегистрирован: 12 мар 2015, 02:37
Re: Помогите новичку запрограммировать контроллер ATtiny13
Помогите разобраться:
В выше приведенном тексте кода инициализация портов происходит выражением
писал подобную программу в для тех же целей что и обсуждалось здесь, но у меня не работает контроллер при задании в программе параметра DDRB некоторых значений, :
не работает - заключается в том что при старте светодиод включается и на этом больше никаких действий не происходит.
Но при скачивании программулины с поста boogyman » 15 фев 2012, 11:30 и загрузки ее в протеус - программа работает!!!
Проверял работу в протеусе и на МК, код писал на AVR studio 4.
Предполагаю что может не хватать каких то настроек для проекта в AVR studio? или что-то еще?
В выше приведенном тексте кода инициализация портов происходит выражением
Код: Выделить всё
DDRB = 0b00001111;
Код: Выделить всё
int main(void) {
// инициализация порта
DDRB = 0x1F; // так не работает
DDRB = 0b00011111; // и так не работает
DDRB |= _BV(4); // так работает
DDRB = 0x10; // и так работает
PORTB|= _BV(4); // включаю светодиод
_delay_ms(3000);
PORTB&= ~_BV(4); // выключаю светодиод
while(1){
_delay_ms(1000)
...
не работает - заключается в том что при старте светодиод включается и на этом больше никаких действий не происходит.
Но при скачивании программулины с поста boogyman » 15 фев 2012, 11:30 и загрузки ее в протеус - программа работает!!!
Проверял работу в протеусе и на МК, код писал на AVR studio 4.
Предполагаю что может не хватать каких то настроек для проекта в AVR studio? или что-то еще?
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Помогите новичку запрограммировать контроллер ATtiny13
Подключены все хедеры?
Частота установлена?
Частота установлена?
- Vasilii_II
- Новичок
- Сообщения: 4
- Зарегистрирован: 12 мар 2015, 02:37
Re: Помогите новичку запрограммировать контроллер ATtiny13
Да хидеры подключены, и частота выставлена перед хидером который за delay отвечает. Может с winAVR-20100110 что не так?
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Помогите новичку запрограммировать контроллер ATtiny13
Попробуйте установить последнюю версию Avrstudio4 и последнюю версию AVR GNU Toolchain
- Vasilii_II
- Новичок
- Сообщения: 4
- Зарегистрирован: 12 мар 2015, 02:37
Re: Помогите новичку запрограммировать контроллер ATtiny13
Попробовал обновиться и установил AVR GNU Toolchain, результаты не поменялись. Может кто-нибудь попробует скомпилировать мой Си файл, может быть с ним что не так!
- Вложения
-
- test_t13.rar
- (651 байт) 2516 скачиваний
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Помогите новичку запрограммировать контроллер ATtiny13
А не слишком много нулей в #define F_CPU, частота получается 1,2ГГц
- Vasilii_II
- Новичок
- Сообщения: 4
- Зарегистрирован: 12 мар 2015, 02:37
Re: Помогите новичку запрограммировать контроллер ATtiny13
Согласен нулей чего-то я перебрал, но все равно это не решило проблемы и вариант с 4-ым инициализированным битом раньше работал!