Перекинул, не хочет(
Вот код слейва, может в нем кроется проблема?
#include <OneWireSlave.h>
#define pin A4
OneWireSlave ds(pin);
byte rom[8] = {0x22, 0xFF, 0x5E, 0x10, 0x00, 0x00, 0x80, 0x5A};
byte buf[4]; // Буфер для приема 4 байт данных
bool flag = true;
void setup() {
Serial.begin(9600);
ds.setRomnc(rom); // Устанавливаем адрес устройства
}
void loop() {
Data();
}
void Data() {
if(flag == true)
{
ds.waitForRequest(false); // Ожидаем запрос от Master
int received = ds.recvData(buf, sizeof(buf)); // Принимаем данные
if (received == 4) { // Проверяем, что принято 4 байта
unsigned long receivedNumber = 0; // Создаем переменную для хранения числа
// Собираем 4 байта обратно в число
for (int i = 0; i < received; i++) {
receivedNumber |= (unsigned long)buf[i] << (i * 8); // Собираем число из байтов
}
Serial.print("Received number: ");
Serial.println(receivedNumber+100000); // Выводим принятое число
// flag = false;
}
}
}
Очень странно, но если заливать через stlink передача работает только через пин PA12, может он нужен для протокола но при бутлоадере занят?
Взял я свою плату, прозвонил - А12 точно звонится на USB, так что поменять нужно было однозначно.
И второе. Вот ты перенес на А4, а без бутлоадер пробовал? Так же работает как и раньше без бутлоадера?
сейчас еще раз пин поменяю и залью через стлинк
Попробуй перекинуть на А9, там USART/TX пин, такой же как и А12 (но без подключения к USB).
Но всё это «пальцем в небо». Надо кого-то, кто с STM32 тесно работает.
@b707 , например. Если появится…
Если прошить через стлинк к порту PA4, передачи нет, к A9 тоже самое, если меняю на PA12 передача сразу идет, на слейве горят сразу же линии rx/tx, сейчас пробовал все через стлинк
Так может быть оно и не возможно?
Я имею ввиду 1 wire и serial использовать одновременно.
На AVR это точно так, а на STM32 не знаю…
тоже склоняюсь к этому, инфы насчет этого нарыть не смог, но видимо так оно и есть(
единственное не понимаю почему именно с PA12… если бы с другими пинами работал я бы еще понимал и принял, а тут странности какие-то…
Ха!
А ты прав. У А12 есть одна «особенность» (если смотреть схему). У него есть подтяжка к +3.3В через резистор 10кОм.
Попробуй использовать пин А2 (это USART2 TX) и с него резистор 10кОм на +3.3В.
Попробую!!!
То-есть резистор просто еще подкл к 3.3?
Да, один вывод резистора на пин А2, а второй вывод резистора на +3.3В. Это так называемая «подтяжка к плюсу».
Заработало! Ты лучший, спасибо!
И совместно с выводом в Serial?
Да, сейчас проверил, сериал при передаче работает, уриии
Если есть время и возможность - проверь пин А4. Будет работать или нет? Это чтобы понять USARTx обязателен на STM32 для 1-wire или нет.