Помогите новичку запрограммировать контроллер ATtiny13

Модератор: boogyman

Ответить
Аватара пользователя
skullhead
Новичок
Сообщения: 6
Зарегистрирован: 14 фев 2012, 23:22

Помогите новичку запрограммировать контроллер ATtiny13

#1

Сообщение skullhead »

Всем привет.
Случай для знающих людей элементарный,но я совсем новичок, поэтому без помощи не обойдусь.Нашел вот схемку radioparty. ru/index.php/device-avr/217-stepcontrolattiny13
В программировании контроллеров я не силен совсем, нужна простая программа на Си , чтобы моторчик вращался в одну сторону, если можно то с комментариями. Ну и совсем круто будет для меня, если программа будет например крутить двигатель на несколько оборотов в одну сторону,а потом в другую, ну и в том духе.
Нигде не нашел подробного объяснения, или подобной программы с хорошим описанием, поэтому спрашиваю. Самому разбираться с самых азов к сожалению времени нет. А вот пример такой программки с комментами очень бы помог освоиться. Заранее спасибо.
Последний раз редактировалось skullhead 15 фев 2012, 08:26, всего редактировалось 1 раз.
Аватара пользователя
boogyman
Модератор
Сообщения: 183
Зарегистрирован: 25 дек 2011, 22:48
Откуда: Москва

Re: Помогите новичку запрограммировать контроллер ATtiny13

#2

Сообщение boogyman »

Какой моторчик?(мощность, напряжение питания). Как он будет переключаться? (с помощью кнопок, переключателя, циклично)
Аватара пользователя
skullhead
Новичок
Сообщения: 6
Зарегистрирован: 14 фев 2012, 23:22

Re: Помогите новичку запрограммировать контроллер ATtiny13

#3

Сообщение skullhead »

Моторчик униполярный ST28. переключаться циклично ,никаких кнопок.да и не в этом дело.у меня есть пару проверенных схем.но загвоздка в программе. с основами программирования я знаком,но не микроконтроллеров.вот мне бы пример,с подсказками.сложных задач пока перед собой не ставлю,вот для начала хочу разобраться с вращением мотора.
там по ссылке схема которую планирую использовать.
Аватара пользователя
boogyman
Модератор
Сообщения: 183
Зарегистрирован: 25 дек 2011, 22:48
Откуда: Москва

Re: Помогите новичку запрограммировать контроллер ATtiny13

#4

Сообщение boogyman »

Вот код, немножко переделал из исходника который есть в статье вверху по ссылке, шаговый циклично меняет направление вращения

Код: Выделить всё

// 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 КБ) 3196 скачиваний
Аватара пользователя
skullhead
Новичок
Сообщения: 6
Зарегистрирован: 14 фев 2012, 23:22

Re: Помогите новичку запрограммировать контроллер ATtiny13

#5

Сообщение skullhead »

Спасибо огромное! Не ожидал такого развернутого ответа)Теперь есть от чего отталкиваться.
Появился вопрос.С чем может быть связаны дергания двигателя во время симуляции?
Аватара пользователя
boogyman
Модератор
Сообщения: 183
Зарегистрирован: 25 дек 2011, 22:48
Откуда: Москва

Re: Помогите новичку запрограммировать контроллер ATtiny13

#6

Сообщение boogyman »

Надо попробовать в железе, пока времени нет, думаю частоту таймера надо настраивать
Аватара пользователя
skullhead
Новичок
Сообщения: 6
Зарегистрирован: 14 фев 2012, 23:22

Re: Помогите новичку запрограммировать контроллер ATtiny13

#7

Сообщение skullhead »

а какой компилятор использовался?
Аватара пользователя
boogyman
Модератор
Сообщения: 183
Зарегистрирован: 25 дек 2011, 22:48
Откуда: Москва

Re: Помогите новичку запрограммировать контроллер ATtiny13

#8

Сообщение boogyman »

skullhead писал(а):а какой компилятор использовался?
AVRStudio 4
Аватара пользователя
skullhead
Новичок
Сообщения: 6
Зарегистрирован: 14 фев 2012, 23:22

Re: Помогите новичку запрограммировать контроллер ATtiny13

#9

Сообщение skullhead »

Спасибо еще раз.
Аватара пользователя
vadd
Новичок
Сообщения: 5
Зарегистрирован: 24 янв 2014, 11:16

Re: Помогите новичку запрограммировать контроллер ATtiny13

#10

Сообщение vadd »

Здравствуйте. Хотелось бы собрать электронное управление заслонкой холодного,горячего воздуха в
автомобиль на шаговом двигателе. В программировании не силен, хочу попросить у вас помощи. Схему я
набросал. Суть в том, чтобы двигатель управлялся энкодором, общий угол поворота двигателя примерно 180
град ,угол поворота двигателя в каждую сторону примерно 90 град. (эту величину хотелось сделать
регулируемой, указать отвечающий параметр за кол-во шагов при прошивке МК), а также при повороте
энкодера в одну сторону зажигались светодиоды красного цвета, а в противоположную - синего, но при этом
светодиоды красного цвета выключались, и наоборот.
Вложения
Управление заслонкой.rar
(15.56 КБ) 2860 скачиваний
Аватара пользователя
Vasilii_II
Новичок
Сообщения: 4
Зарегистрирован: 12 мар 2015, 02:37

Re: Помогите новичку запрограммировать контроллер ATtiny13

#11

Сообщение Vasilii_II »

Помогите разобраться:
В выше приведенном тексте кода инициализация портов происходит выражением

Код: Выделить всё

 DDRB = 0b00001111;
писал подобную программу в для тех же целей что и обсуждалось здесь, но у меня не работает контроллер при задании в программе параметра DDRB некоторых значений, :

Код: Выделить всё

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

#12

Сообщение AntonChip »

Подключены все хедеры?
Частота установлена?
Аватара пользователя
Vasilii_II
Новичок
Сообщения: 4
Зарегистрирован: 12 мар 2015, 02:37

Re: Помогите новичку запрограммировать контроллер ATtiny13

#13

Сообщение Vasilii_II »

Да хидеры подключены, и частота выставлена перед хидером который за delay отвечает. Может с winAVR-20100110 что не так?
Аватара пользователя
AntonChip
Администратор
Сообщения: 265
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Помогите новичку запрограммировать контроллер ATtiny13

#14

Сообщение AntonChip »

Попробуйте установить последнюю версию Avrstudio4 и последнюю версию AVR GNU Toolchain
Аватара пользователя
Vasilii_II
Новичок
Сообщения: 4
Зарегистрирован: 12 мар 2015, 02:37

Re: Помогите новичку запрограммировать контроллер ATtiny13

#15

Сообщение Vasilii_II »

Попробовал обновиться и установил AVR GNU Toolchain, результаты не поменялись. Может кто-нибудь попробует скомпилировать мой Си файл, может быть с ним что не так!
Вложения
test_t13.rar
(651 байт) 2413 скачиваний
Аватара пользователя
AntonChip
Администратор
Сообщения: 265
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Помогите новичку запрограммировать контроллер ATtiny13

#16

Сообщение AntonChip »

А не слишком много нулей в #define F_CPU, частота получается 1,2ГГц
Аватара пользователя
Vasilii_II
Новичок
Сообщения: 4
Зарегистрирован: 12 мар 2015, 02:37

Re: Помогите новичку запрограммировать контроллер ATtiny13

#17

Сообщение Vasilii_II »

Согласен нулей чего-то я перебрал, но все равно это не решило проблемы и вариант с 4-ым инициализированным битом раньше работал!
Ответить