Помогите разобраться с таймером

foxsto
Offline
Зарегистрирован: 28.03.2017

собираю дисплей на 7-сигментном светодиоде в основе 74ch595

динамическое обновление идет через три пина напрямую от АРДУИНО включением массы, функция LOOP пока что не заполнена сильно и индекатор работает с функц. (millis() -previousMillis >100)

почитал статьи про С+ узнал что если сделать на таймере прерывание то цитирую

(прерывание по совпадению. Это значит, что при совпадении таймера и регистра сравнения, ваша текущая программа остановится. После этого выполнится участок кода, который абсолютно не связан с основной программой. Внутри этого участка вы можете писать что угодно и не беспокоиться о том, что он как то повлияет на программу, выполнится он только когда значение таймера совпадет с регистром сравнения. После того как код внутри прерывания выполнится, программа продолжит работу с того места, где была остановлена.)

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

где вопрос?

foxsto
Offline
Зарегистрирован: 28.03.2017

вопрос простой покажите правельный пример прирывания по таймеру как это записывается на ардуино

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

ну, как-то так ISR (TIMER2_OVF_vect) {}

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

foxsto пишет:

вопрос простой покажите правельный пример прирывания по таймеру как это записывается на ардуино

В интернете куча статей по таймерам, спросите у гугла.

foxsto
Offline
Зарегистрирован: 28.03.2017

я так понимаю там библиотека нужна.

а если вот с таким таймером

enum Prescalers {
	PRESCALER_1 = 1, PRESCALER_8 = 2, PRESCALER_64 = 3, PRESCALER_256 = 4, PRESCALER_1024 = 5
};

void setup() {
	uint8_t prescaler = PRESCALER_1024;
	uint16_t topValue = 65535;
	pinMode(9, OUTPUT);
	TCCR1A = 0x40;			// Инвертирование пина 9 по сравнению
	TCCR1B = 0x08 | prescaler;	// Установить СТС режим и делитель частоты
	OCR1A = topValue;		// установить TOP равным topValue
}

void loop() {}

 

foxsto
Offline
Зарегистрирован: 28.03.2017

то что я находил написано не под Ардуино, у меня скетч в ардуино и переделывать его под С нет возможности

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

foxsto пишет:

то что я находил написано не под Ардуино, у меня скетч в ардуино и переделывать его под С нет возможности

хватит тупить! http://arduino.ru/Tutorial/Arduino_Interrupts

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

- No money, not funny! Sonny.

...

- How sad, too bad! Dad.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

foxsto пишет:

я так понимаю там библиотека нужна.

Где там?

foxsto пишет:

то что я находил написано не под Ардуино, у меня скетч в ардуино и переделывать его под С нет возможности

Открою страшную тайну: программирование ардуино - это Си с ардуиновскими библиотеками. Таймеры можно точно так же настраивать через регистры (без всяких библиотек), как и для "голых" микроконтроллеров AVR в Atmel Studio.

JasKo
Offline
Зарегистрирован: 21.11.2015

foxsto пишет:

я так понимаю там библиотека нужна.

а если вот с таким таймером

enum Prescalers {
	PRESCALER_1 = 1, PRESCALER_8 = 2, PRESCALER_64 = 3, PRESCALER_256 = 4, PRESCALER_1024 = 5
};

void setup() {
	uint8_t prescaler = PRESCALER_1024;
	uint16_t topValue = 65535;
	pinMode(9, OUTPUT);
	TCCR1A = 0x40;			// Инвертирование пина 9 по сравнению
	TCCR1B = 0x08 | prescaler;	// Установить СТС режим и делитель частоты
	OCR1A = topValue;		// установить TOP равным topValue
}

void loop() {}

 

 

Почитай здесь http://arduino.ru/forum/programmirovanie/dva-8-mi-segmentnykh-indikatorov?page=2

думаю все поймешь.

foxsto
Offline
Зарегистрирован: 28.03.2017

спасибо я уже все сделал и нашел нужные комманды под ардуино)

как и хотел получилось без библиотек и в рамках этого кода

foxsto
Offline
Зарегистрирован: 28.03.2017

Jeka_M пишет:

Открою страшную тайну: программирование ардуино - это Си с ардуиновскими библиотеками. Таймеры можно точно так же настраивать через регистры (без всяких библиотек), как и для "голых" микроконтроллеров AVR в Atmel Studio.

понятно что можно, но написание отличается, я бы наверное не просил под ардуино, под avr и так знаю

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

foxsto пишет:

понятно что можно, но написание отличается, я бы наверное не просил под ардуино, под avr и так знаю

Неправда, настройка таймеров через регистры ничем не отличается. Разве что в студии код пишем в main(), а в ардуино в setup() или loop().