Как объявить контакт сброса PB3 ATtiny44 в программе (используя платформу IDE arduino)
В продолжение моего предыдущего вопроса:
Здравствуйте, я хочу знать, как получить доступ к контакту сброса PB3 микросхемы ATtiny44. У меня закончились контакты, поэтому я использую их как контакты ввода-вывода, но не могу объявить их в коде.
На этом рисунке выше показано, что PB3 — это контакт 11. Но если я объявлю его как контакт 11, контакт сброса вообще не будет работать.
// в setup():
DDRB |= (uint8_t)(1U << 3);
// в цикле():
PORTB |= (uint8_t)(1U << 3); // установить для PB3 значение "высокий"
PORTB &= ~((uint8_t)(1U << 3)); // установить для PB3 значение "низкий"
Этот код работает только с прямым объявлением.
В моем коде мне просто нужно добавить номер контакта в команду, например #define CSN 2
.
Обновлено
#include <avr/io.h>
const int led = 0;
#define led1 11
// функция настройки запускается один раз, когда вы нажимаете сброс или питание платы
void setup() {
// инициализируем цифровой вывод LED_BUILTIN как выход.
pinMode(led, OUTPUT);
pinMode(led1, OUTPUT);
}
// функция цикла запускается снова и снова навсегда
void loop() {
digitalWrite(led, HIGH);
digitalWrite(led1, HIGH);
delay(1000); // ждем секунду
digitalWrite(led1, LOW);
digitalWrite(led, LOW); // выключаем светодиод, понижая напряжение
delay(1000); // ждем секунду
}
Это код, который не работает (светодиод 1 сбрасывает контакт как GPIO). Даже если я изменю объявление led1 на PB3 в PCINT11, это все равно не сработает.
1 ответ
Лучший ответ:
Я решил свою проблему, установив библиотеку spenceKonde ATtinyCore. Контакт RESET — это контакт 11 микросхемы attiny44, и для доступа к нему внутри кода нам нужна библиотека attinyCore, а не Damellis (у damellis нет доступа к программированию RESET).
- Использование внешнего сброса для запуска приема радиосигнала
- Сброс Arduino Uno в коде
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Как сбросить или отформатировать Arduino?
- Связь ATtiny85 с компьютером через USB
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Радиочастотное дистанционное управление с использованием VirtualWire на ATtiny85, работающем на частоте 8 МГц на внутреннем генераторе
Покажите полный компилируемый/тестируемый пример, демонстрирующий, как он влияет на контакт с помощью манипуляций с регистрами GPIO и не влияет на него с помощью уже предоставленного attinycore цифрового контакта 11., @timemage
@timemage Вы можете проверить редактирование выше, @electro_nooobbbb
Вижу. Это не похоже на то, что я описал. В основном я ищу предлог, чтобы на самом деле проверить это. Я полностью ожидаю, что если я потрачу время на то, чтобы выкопать свой высоковольтный программатор и подключить его, чтобы я мог восстановиться из RSTDISBL, и я проведу свой собственный тест, я обнаружу, что цифровой контакт 11 с правильной компоновкой в attinycore будет работать просто отлично, и проблема не совсем в том, что написано. Если я приложу такие усилия, я буду знать, что я не воображаю, но я все равно не смогу написать ответ, который, как я думаю, решит эту проблему для вас. Это уже задокументировано., @timemage
извинение? Я выполнил свой тест, но светодиод на сбросе остается полностью выключенным, и согласно коду он должен мигать, тогда как второй светодиод, подключенный к контакту 13, правильно мигает. Это моя проблема. я добавил свою конфигурацию fusebit для справки., @electro_nooobbbb
Я использую библиотеку damellis для использования arduino в качестве интернет-провайдера., @electro_nooobbbb
Под оправданием, если вы имеете в виду причину использования сброса. Причина в том, что у меня закончились выводы, и для завершения проекта мне нужен еще один вывод GPIO, и использование сброса, поскольку GPIO, является единственным решением, которое я вижу., @electro_nooobbbb
Это может быть частью вашей проблемы, если это приводит к несовместимой компиляции скетча. Я не знаю, зачем вы это делаете, attinycore предоставляет возможность программирования через ардуино в качестве провайдера. Под «извинением» я подразумеваю, что не хочу тратить несколько часов на то, чтобы найти все, просто чтобы показать, что все ведет себя именно так, как я ожидал, и «проблема на самом деле не такая, как написано», как, например, то, что вы только что сказали о попытке используйте два пакета поддержки платы таким образом, что это может легко испортить ситуацию. Это не было в вопросе., @timemage
Я думаю, что есть некоторое недоразумение. Я использую только ATtiny44, для программирования я использую HVP, потому что мне нужно отключить вывод сброса. Для написания кода я использую платформу Arduino и нахожусь на завершающем этапе своей программы., @electro_nooobbbb
Это соответствует моему пониманию. Если в вопросе отображается информация, которая заставляет меня чувствовать, что я могу воспроизвести ваш тест, и я не уверен, что он не сработает только для меня, я найду время воссоздать проблему здесь., @timemage
@timemage Итак, вы думаете, что объявление его как pin11 сработает, @electro_nooobbbb
Я отформатировал ваш вопрос во второй раз, пожалуйста, не перезаписывайте его снова. ;-) -- Если контакт работает при прямом доступе, как я показал вам в другом вопросе, и не работает с номером контакта 11, этот номер контакта или выбор платы в IDE не совпадают. Какую плату вы выбрали в IDE? -- О, кстати, этот ответ подтверждает мое предположение, что контакт PB3 не имеет номера контакта., @the busybee
@thebusybee, обратите внимание, что по какой-то необъяснимой причине они пытались использовать пакет damellis board для своего определения программиста вместо пакета attinycore. я не удивлюсь, если он перекомпилируется под ядром damellis перед загрузкой, потому что они выбрали этот пакет платы для использования его версии записи arduinoisp.ino Programmers.txt. Я полностью ожидаю, что если настроить attinycore с attinyX4 и использовать собственную запись в файлеprogramrs.txt для arduinoisp.ino, отключить сброс и использовать контакт 11, все будет работать нормально. поэтому я пытался заставить их обновить свой вопрос., @timemage
@thebusybee и timemage Привет, просто обновление, я решил свою проблему. Я установил spencekonde attiny Core, и у меня это сработало, теперь я могу назначить контакт сброса как 11, использовать HVP для отключения сброса. Спасибо., @electro_nooobbbb
Отличные новости! Теперь, чтобы помочь будущим посетителям (включая себя через несколько недель :-P), пожалуйста, напишите фактический ответ и отметьте его как «принятый»., @the busybee
@thebusybee Хорошо, эта проблема была решена, и я также написал ответ, я создам еще один пост, потому что у меня есть другая проблема с тем же проектом., @electro_nooobbbb
@thebusybee https://arduinoprosto.ru/q/92329/reading-constant-battery-voltage-and-using-the-obtained-value-in-sensor-formula Не могли бы вы проверить это?, @electro_nooobbbb