Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн окт 02, 2023 17:28:08
Открыл глаза
Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44 Сообщений: 59 Откуда: Москва
Рейтинг сообщения:0
Народ, подскажите пожалуйста как передать порт и пин в функцию? Есть такая функция:
Код:
// функция свистоперделки (служебные сигналы) void buzz_n_blink(uint16_t duration, uint8_t quantity, uint16_t pause, uint8_t pin) { // аргументы: длительность, количество, пауза (2-я длительность), нога for (uint8_t i=0; i < quantity; i++) // количество оборотов цикла опеределено в quantity { PORTA |=(1<<pin); // поднимаем ногу loopdelay(duration); // вызываем задержку PORTA &=~(1<<pin); // опускаем ногу if (pause >= 1) loopdelay(pause); // если аргумент pause больше или равен единице, то запускаем второй таймер } }
Если порт только А, оно работает, а если порты разные то происходит бяка. Видимо не в те адреса попадаю... Порт пытался добавить как еще один аргумент.
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн окт 02, 2023 18:36:07
Открыл глаза
Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44 Сообщений: 59 Откуда: Москва
Рейтинг сообщения:0
Большое спасибо за помощь! Ругается на отсутствие квалификатора volatile для указателя. Который я добавил и ворнинг пропал... Не могли бы Вы объяснить в формате для дурачков зачем он там и разве так можно было, указывать его (volatile) прямо в там, где указываются аргументы функции? Остальное вроде бы понятно и спасибо за дополнение!
Добавлено after 15 minutes 48 seconds: Да уж, аппетит приходит во время еды... А нельзя сделать так, чтобы было как в дефайнах, например:
Код:
#define BUZZER PORTA4 // пищалка #define BLUE PORTB1 // синий светодиод #define GREEN PORTB0 // зеленый светодиод #define RED PORTA1 // красный светодиод
И каким-то образом передавать в функцию например GREEN, а в ней уже распарсить что за порт и что за пин?
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
порт для компилятора - переменная. Но ее значение может меняться извне. Поэтому она объявлена как волатильная. Что б компилятор свою оптимизацию туда не пихал. Соответственно, когда мы объявляем указатель на эту переменную - мы должны его написать так, как объявлена сама переменная. Поэтому компилятор у вас волатиль и попросил. Вы правильно сделали, что дописали.
Немножко странный вопрос. Не задумывался об этом, но стало интересно. Если main() незамкнут, не зациклен, не ведет к аппаратной остановке, что происходит в МК?
Немножко странный вопрос. Не задумывался об этом, но стало интересно. Если main() незамкнут, не зациклен, не ведет к аппаратной остановке, что происходит в МК?
Конечно странный. Что значит не замкнут? Что значит не зациклен? Что значит "не ведет к аппаратной остановке"? Одни вопросы. Учитесь формулировать свои вопросы. Без этого никак. Или так и будете дурачком выглядеть на форумах.
Всем доброго вечера. Есть Вольт Амперметр на Атмега8 с дисплеем от Нокия 1202. При подаче питания вентилятор сразу должен запуститься на полую 12в, а потом должен падать напряжение зависимости от температуры,но полностью не должен отключиться то что установлено PWM=190 там вроде 6..8в на кулере. На каком Языке написано не знаю. Помогите кто может,где что 0 или 1 ставить.
Благодарю.Ребята тут у меня целая проблема вот тут на картинке обозначил красным как их делать с какими кнопками или дайте пожалуйста ссылку какими кнопками как управляют при написании ПО.
Доброго времени суток. Есть ли у кого-то компилятор ICCTiny v6 ? Или какой-то другой, поддерживающий AVR без SRAM, такие как AT90S1200, ATtiny12, ATtiny28.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения