Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

atmega16 в ардуино

Вт ноя 08, 2022 14:43:35

здравствуйте, я переделал ардуино уно на атмега 16 написал угломер по энкодеру и в коде генерируется импульс после полного оборота, может есть у кого код преобразования импульса из переменной в количество оборотов? типа тахометра и вывод на дисплей 16х2


}
else // Вращение шпинделя влево
{
Spindle_Direction = Spindle_Direction_CCW;
Enc_Pos--;
if (Enc_Pos < 0) // полный оборот
{
Enc_Pos = Enc_Line - 1;
TahoSetPulse(); // при проходе 0 генерим сигнал Taho
if (Mode_On_flag == true) // проверка режима на ON/OFF, только! после прохода 0 разрешаем счет до к.деления
{
Step_On_flag = true;
}
}
}

Re: atmega16 в ардуино

Вт ноя 08, 2022 17:20:31

А сосчитать число импульсов за 1 секунду уже ну никак?

Re: atmega16 в ардуино

Ср ноя 09, 2022 12:00:44

Частотомер / периодомер...
:sleep:
Только вот мега 16 это уже не нанка в принципе - надо ставить платформу MightyCore и соответственно раскладку выводов делать.
:roll:

Re: atmega16 в ардуино

Ср ноя 09, 2022 12:20:26

Странный вопрос: коль энкодер, так, значит квадратурный - так? Коль квадратурный, то подключен к таймеру - так? Коль к таймеру подключен, то что мешает связать с ним другой таймер по достижению нужного количества отсчетов и считать обороты чисто аппаратно? Ну, а ежели аврка так не умеет, можно в прерывании того самого таймера счетчик инкрементировать/декрементировать (только нужно иметь флаг, в какую сторону переполнение произошло).

Re: atmega16 в ардуино

Сб ноя 12, 2022 07:37:31

я переделал на атмегу 8535 , скетч переписал на нее и привел код в рабочее состояние, дальше будет развитие на управление шаговым мотором в зависимости от числа оборотов, угол по энкодеру уже считает данный скетч, у энкодера три канала выхода ABZ , Z канал это один импульс на оборот , на меге 8535 есть INT2 я когда прописываю третье прерывание по внешнему признаку, только когда я подключаю к нему импульсы то все остальные прерывания не работают, attachInterrupt(2, fan_interrupt, FALLING); эта команда с атмегой 8535 не работает, может у кого есть код как включить все три прерывания?

Re: atmega16 в ардуино

Сб ноя 12, 2022 09:41:41

Вообще-то D2 это INT0...

Syntax
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); (recommended)
attachInterrupt(interrupt, ISR, mode); (not recommended)
attachInterrupt(pin, ISR, mode) ; (not recommended Arduino Due, Zero only)

для "стандартного" референса INT2 недоступно, там надо таки много покопаться и в дебрях IDE и в описании платформы MightyCore (с учетом вариантов раскладки выводов - их там аж три имеется - стандартный, sanguino и bobuino)...
8)

Re: atmega16 в ардуино

Сб ноя 12, 2022 10:11:56

3 прерывания ATmega8535 работают. Попробовал с 3-мя действиями со светодиодами.
Код:
attachInterrupt(0, fan_interrupt_0, FALLING);
attachInterrupt(1, fan_interrupt_1, FALLING);
attachInterrupt(2, fan_interrupt_2, FALLING);
Вложения
3_int.jpg
(180.62 KiB) Скачиваний: 44

Re: atmega16 в ардуино

Сб ноя 12, 2022 12:57:19

а как в скетче прописывал? можешь скинуть ?

Добавлено after 58 seconds:
у меня при включении третьего прерывания все гаснет и виснет,


для "стандартного" референса INT2 недоступно, там надо таки много покопаться и в дебрях IDE и в описании платформы MightyCore (с учетом вариантов раскладки выводов - их там аж три имеется - стандартный, sanguino и bobuino)...


а как прописать чтобы третье прерывание заработало?

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:23:36

На схеме со светиками раскладка кристалла...НО...
имена прерываний "по ардуиновски" будут отличаться
для bobuino
dip40 bobuino.pdf
(1.19 MiB) Скачиваний: 53

int0 - D2
int1 - D3
int2 - D6
или для "стандарт"
dip40standard.pdf
(610.72 KiB) Скачиваний: 55

int0 - D10
int1 - D11
int2 - D2
то же и для "sanguino" (там другие выводы меняются)
dip40 sanguino.pdf
(610.57 KiB) Скачиваний: 50

int0 - D10
int1 - D11
int2 - D2
конкретика какая платформа выбрана (и соответственно загрузчик и фузы) надо выставить в соответствующих вкладках IDE - компилятор будет вести обработку имен выводов согласно выбранной платформы (строка pinout)
8)
Последние данные лучше посмотреть на сайте:
https://github.com/MCUdude
https://github.com/MCUdude/MightyCore
8)

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:43:46

MightyCore -> ATmega8535, Internal Clock 8 MHz
Соотв. прерывание поднимает соотв. флаг.
Файл Proteus (v8.13) внутри.
Вложения
sketch_nov12b.zip
(32.75 KiB) Скачиваний: 49
Последний раз редактировалось veso74 Сб ноя 12, 2022 13:47:26, всего редактировалось 1 раз.

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:46:37

вторую ссылку пробовал пишет что эта библиотека атмегой не поддерживается

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:48:39

Arduino IDE какая версия установлено?

Устанавливается нормально. Win7 64 bit, Arduino IDE v1.8.19
Вложения
ard.jpg
(122.74 KiB) Скачиваний: 39

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:51:07

1.8.19 32 бит

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:56:04

Это прожка под использование PCINT, а не набора INT0-INT2, что также требует некоторой "алхимии" с установкой библиотек.
Исходно у vik vik взяты за основу "стандартные" прерывания платформ для IDE.
8)

Re: atmega16 в ардуино

Сб ноя 12, 2022 13:56:56

Просто скачайте архива библиотеки и распаковайте архив в MyDoc/Arduino/hardware
(убрать ...-master с имя папки)
Вложения
Untitled-2.jpg
(73.75 KiB) Скачиваний: 66

Re: atmega16 в ардуино

Сб ноя 12, 2022 14:00:45

Ошибка компиляции для платы ATmega8535.
вот такую хрень выдал

Re: atmega1Сфотографируйте настройки выбранного микро6 в ард

Сб ноя 12, 2022 14:01:59

Сделайте скрийншот настройки выбранного микроконтроллера в Arduino IDE.

Re: atmega16 в ардуино

Сб ноя 12, 2022 14:04:47

выбран стандарт , а под какой вариант эта библиотека?

Re: atmega16 в ардуино

Сб ноя 12, 2022 14:06:06

Не понял вопрос о вариантах?
---
Это прожка под использование PCINT, а не набора INT0-INT2...

Нет. Посм. файл WInterrupts.c.

Re: atmega16 в ардуино

Сб ноя 12, 2022 14:09:23

вот варианты
Вложения
скрин.jpg
(158.89 KiB) Скачиваний: 47
Ответить