Микроконтроллеры | Поясните по Си |
|
---|---|---|
Не могу никак ничерта понять в языках высокого уровня, но приходится чужие программы править. Буду благодарен за разъеснение : #define SET_PWM(v) OCR0A=(v) Что значит эта строка - что мы в ней задаём ? Далее - как я понимаю отработка какого-то прерывания : uint8_t overflow; Что в этих строках задано ? ISR(TIMER1_COMPA_vect){ Это я понимаю начало процедуры обработки пррывания по совпадения А для таймера 1 Как я понимаю равнозначно SBI PORTD, 1 ? Переменная "enabled" нигде не определяется но активно изменяется (1 или 0) - что это ? overflow = 1; Что за конструкция += ? Уже спрашивал - но не понял. Гугл дает очень много информации но не по делу. Следующая процедура как я понял : int16_t integral; ISR(TIMER1_CAPT_vect){ if(y < 1000) return; Если Y1000 то из процедуры сразу выходим - так ? |
|
|
|
||
Wladimir_TS: Это макрос - замена операции низкого уровня чем-то более удобоваримым. Wladimir_TS: uint8_t overflow; обявлены переменные overflow, freq_correct и enabled. Wladimir_TS: PORTD ^= 1PD1; Инвертирование бита PD1, только у Вас ошибочно написано 1PD1, должно быть PD1. Wladimir_TS: Переменная "enabled" нигде не определяется но активно изменяется (1 или 0) - что это ? Так она же объявлена выше. Wladimir_TS: Прибавление 32768 к текущему значению OCR1A . Wladimir_TS: int16_t integral; Объявление переменной integral, типа int16_t. |
|
|
Wladimir_TS: Объявление переменной "int16_t Переменная integral , её тип int16_t |
|
|
Tadas: Вообще-то, poruchik прав. Присоединяюсь. И с разбора чужих элементарных программ с комментами. Но книги в первую очередь. Причем одного Шпака будет маловато. |
|
|
Wladimir_TS: Уже спрашивал - но не понял. Я тогда Вам отвечал подробно на этот вопрос. Если не поняли, тогда не вижу смысла что-то дальше объяснять, не в коня корм, не ваше это, забейте. Хотя, если у кого много времени, нечего делать и хочется поболтать.... |
|
|
poruchik: А Шпака бегло пролистать? Все вопросы отпадут... Ссылочку ткните ? Арс: Я тогда Вам отвечал подробно на этот вопрос. Если не поняли, тогда не вижу смысла что-то дальше объяснять, не в коня корм, не ваше это, забейте. Знаю, что не в коня - пфтаюсь освоить языки высокого уровня уже лет 15 - но не лезет. С другой стороны есть слово НАДО, и никуда не денешся. Клин клином вышибают... схемотехники все меньше нужны - а программисты разбегаются. Свое пишу на ассемблере, а чужое приходиться править - да и ту программу на ассемблер не перенести - там дальше страшенная математика... А теперь по существу : Tadas: SET_PWM(255); равнозначно OCR0A=255; Тоесть слово на слово - OCR0A=255 это встроенная в компилятор команда - так ? Вопрос кстати - а где в программе прописывать тип кристалла - визуально нету нигда, но компилируется ...... (компилятор - штатный к AVR Studio.. (AVR GCC вроде зовется)) Tadas: Wladimir_TS: uint8_t overflow; А что тода значит "volatile" ? а что значит ххх_t ? в типе - unit8 как-то понятнее - значит _t это какое-то добавление ? Tadas: Прибавление 32768 к текущему значению OCR1A . А так будет корректно ? : OCR1A = OCR1A+32768 ? |
|
|
Wladimir_TS, OCR1A = OCR1A+32768; // Да, это то же самое, что и OCR1A+=32768; |
|
|
Wladimir_TS: А что тода значит "volatile" ? Wladimir_TS: Ссылочку ткните ? Который год ....лентяй Вы батенька... http://padabum.com/d.php?id=2878 |
|
|
Swamp_Dok: А static служит для объявления статических переменных, то есть если переменную объявили в какой-либо функции, вызвали, она произвела какие-то действия, завершилась, и, если потом снова вызвать эту функции, то значение переменной с пометкой static сохранится с прошлого вызова. А "volatile" ? poruchik: Который год ....лентяй Вы батенька... Под контроллеры не связывался - только с "большими" машинами... |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |