Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн окт 02, 2023 17:28:08
Открыл глаза
Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44 Сообщений: 46 Откуда: Москва
Рейтинг сообщения: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 больше или равен единице, то запускаем второй таймер } }
Если порт только А, оно работает, а если порты разные то происходит бяка. Видимо не в те адреса попадаю... Порт пытался добавить как еще один аргумент.
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy.
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн окт 02, 2023 18:36:07
Открыл глаза
Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44 Сообщений: 46 Откуда: Москва
Рейтинг сообщения:0
Большое спасибо за помощь! Ругается на отсутствие квалификатора volatile для указателя. Который я добавил и ворнинг пропал... Не могли бы Вы объяснить в формате для дурачков зачем он там и разве так можно было, указывать его (volatile) прямо в там, где указываются аргументы функции? Остальное вроде бы понятно и спасибо за дополнение!
Добавлено after 15 minutes 48 seconds: Да уж, аппетит приходит во время еды... А нельзя сделать так, чтобы было как в дефайнах, например:
Код:
#define BUZZER PORTA4 // пищалка #define BLUE PORTB1 // синий светодиод #define GREEN PORTB0 // зеленый светодиод #define RED PORTA1 // красный светодиод
И каким-то образом передавать в функцию например GREEN, а в ней уже распарсить что за порт и что за пин?
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ.
порт для компилятора - переменная. Но ее значение может меняться извне. Поэтому она объявлена как волатильная. Что б компилятор свою оптимизацию туда не пихал. Соответственно, когда мы объявляем указатель на эту переменную - мы должны его написать так, как объявлена сама переменная. Поэтому компилятор у вас волатиль и попросил. Вы правильно сделали, что дописали.
Немножко странный вопрос. Не задумывался об этом, но стало интересно. Если main() незамкнут, не зациклен, не ведет к аппаратной остановке, что происходит в МК?
Немножко странный вопрос. Не задумывался об этом, но стало интересно. Если main() незамкнут, не зациклен, не ведет к аппаратной остановке, что происходит в МК?
Конечно странный. Что значит не замкнут? Что значит не зациклен? Что значит "не ведет к аппаратной остановке"? Одни вопросы. Учитесь формулировать свои вопросы. Без этого никак. Или так и будете дурачком выглядеть на форумах.
Всем доброго вечера. Есть Вольт Амперметр на Атмега8 с дисплеем от Нокия 1202. При подаче питания вентилятор сразу должен запуститься на полую 12в, а потом должен падать напряжение зависимости от температуры,но полностью не должен отключиться то что установлено PWM=190 там вроде 6..8в на кулере. На каком Языке написано не знаю. Помогите кто может,где что 0 или 1 ставить.
Благодарю.Ребята тут у меня целая проблема вот тут на картинке обозначил красным как их делать с какими кнопками или дайте пожалуйста ссылку какими кнопками как управляют при написании ПО.
Доброго времени суток. Есть ли у кого-то компилятор ICCTiny v6 ? Или какой-то другой, поддерживающий AVR без SRAM, такие как AT90S1200, ATtiny12, ATtiny28.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения