Как объявить контакт сброса 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.

PB3 ATtiny


Обновлено

#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, это все равно не сработает.

Конфигурация Fusebits

, 👍2

Обсуждение

Покажите полный компилируемый/тестируемый пример, демонстрирующий, как он влияет на контакт с помощью манипуляций с регистрами 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


1 ответ


Лучший ответ:

0

Я решил свою проблему, установив библиотеку spenceKonde ATtinyCore. Контакт RESET — это контакт 11 микросхемы attiny44, и для доступа к нему внутри кода нам нужна библиотека attinyCore, а не Damellis (у damellis нет доступа к программированию RESET).

,