Jump to content

DarkDigger

Members
  • Posts

    44
  • Joined

  • Last visited

Everything posted by DarkDigger

  1. Никогда не сталкивался с подобным, не знал как это сделать. За направление спасибо. Нет, не запишется. Проверенно на отладке. С Вами всё в порядке?
  2. Если кому интересно: необходимо подключить библиотеку #include <avr/pgmspace.h> создавать глобальные переменные вида: const char str_1[] PROGMEM="Password: "; копировать строку в озу strcpy_P(buf, str_2); и работать уже с buf....
  3. Выхлопом компилятора. И глюками, когда компилятор говорил что память почти всё... Можно ли как-то освободить эту память?
  4. Здравствуйте, есть функция, принимающая указатель (отправка данных в сеть,через w5500): void w5500_send_array(unsigned int addr, unsigned char bsb, char *data, unsigned char count){ unsigned char cont_phase=0; //фаза контроля SPI_PORT&=~(1<<SPI_SS); //вкл w5500 SPDR = msb_of_int(addr); while(!(SPSR&(1<<SPIF))); SPDR=lsb_of_int(addr); while(!(SPSR&(1<<SPIF))); cont_phase=(bsb<<3)|(1<<2); SPDR=cont_phase; while(!(SPSR&(1<<SPIF))); for (unsigned char i=0; i<count; i++){ SPDR=data[i]; while(!(SPSR&(1<<SPIF))); } SPI_PORT|=(1<<SPI_SS); } вызывает её вот эта фунцция: void w5500_tx(unsigned char socket, char *text, unsigned char count){ unsigned int addr=0; unsigned char sock_bsb=0; sock_bsb=socket*4+1; addr=(w5500_get(0x24,sock_bsb)<<8)|w5500_get(0x25,sock_bsb); //читаем Sn_TX_WR w5500_send_array(addr,(socket*4+2),text,count); w5500_send(0x24,sock_bsb, msb_of_int(addr+count)); w5500_send(0x25,sock_bsb, lsb_of_int(addr+count)); w5500_send(0x01,sock_bsb, SEND); } В тексте программы, отправку данных осуществляю с помощью вызова функции: w5500_tx(0,"Blablabla\n\r",11); //пример Массив "Blablabla\n\r" отправляется сначала в функцию w5500_tx затем в w5500_send_array. Где под конец и должен умереть. Но нет, он остаётся в ОЗУ... Я понимаю, что делаю что-то не так. Если много текста необходимо отправить в сеть, ОЗУ просто не хватает. Как по завершению передачи данных освободить память?
  5. Здравствуйте. Ищу настенный термостат с возможностью управления через локальную сеть: вёб морда, ssh или telnet через wifi или ethernet (если надо дотяну витую пару). Все варианты что я нашёл работают через свои какие-то сервера и только через приложение на телефоне.
  6. Нет, я внимательно проверил, и тестировал именное 1250. В общем я нашёл и протестировал (если кому надо, могу выложить видео с тестом) нормальное решение для гальванической развязки i2c, 1-ware и подобных интерфейсов. MAX14933
  7. Спасибо, но не работает... При выборе "неметал" пропадает выбор имени цепи, и контактная площадке ничего не подведёшь... Это только у меня такой геморой?
  8. Здравствуйте, обновился до 6 версии... Раньше в редакторе ПП, в свойствах контактной площадке был выбор на каких слоях меди печатать, теперь выбор стал просто идиотским (см. картинку) Контактная площадка соединена только снизу, и сверху печатать мне не нужно. Выбрал: "Только сединённые слои", но печатает сверху просто не подключенную площадку. Может кто-нибудь сталкивался с такой проблемой?
  9. А Вы считаете за дс-дс 500 рэ это в порядке вещей? Или поиск того же товара, но в другом месте и за меньшие деньги это глупо? Наверное вы сын/дочь олигарха, по крайней мере по образу мышления. Вопрос вот в чём: на али написано: "100% новый и оригинальный". Чьё производство? TI?
  10. Здравствуйте. Нужна такая микруха, но в чип и дипе стоит как-то несерьёзно дорого. Как вы думаете, на али оригинал (TI)? Я понимаю, что на 100% точно никто не знает, просто нужен совет) Ссылка
  11. Yurkin2015, hasl спасибо огромное, разобрался.
  12. Здравствуйте. Споткнулся на ровном месте на элементарном вопросе. Большая просьба разъяснить что я делаю не так. микроконтроллер: atmega8 компилятор: avr-gcc (GCC) 10.2.0 Среда разработки: Eclipse Version: 2020-03 (4.15.0) OC: Arch linux 5.11.11 Но это не важно. Проблема (возможно в моей голове проблема) возникает и с компилятором gcc в моей системе. Суть. Обнуление 7 бита порта D PORTD=~(1<<7); //вроде простая операция. Я понимаю что проще PORTD=0b0111 1111; но цифра 7 это дефайн в начале библиотеке И вот варнинг: ../LCD.h:23:15: warning: unsigned conversion from 'int' to 'uint8_t' {aka 'volatile unsigned char'} changes value from '-129' to '127' [-Woverflow] Что за? Ок. Эксперимент. unsigned char tmp=0; tmp=~0xff; Причём такую простую операцию я попробовал сделать и скомпилировать не под AVR, а под x86 Варнинг тот же ../LCD.h:24:6: warning: unsigned conversion from 'int' to 'unsigned char' changes value from '-256' to '0' [-Woverflow] Я так понимаю, что число 0b1111 1111 после побитовой инверсии преобразуется в число 0b0000 0000 и присваивается переменной tmp. Откуда предупреждение? Ок, если сделать так: unsigned char tmp=0; tmp=0xff; tmp=~tmp; Всё ок. Что не так?
  13. Не напрямую конечно, через транзистор, с защитным диодом и т.д. SPI mode 0 будет нормально работать с этой микросхемой?
  14. Насколько я понял, если дёрнуть 11 ножку на +, то из регистра выводятся данные на параллельный выход, и регист очищается. То есть в регист прилетит куча данных, передаваемых другим устройствам (причём будет храниться последний байт, предыдущие уйдут на 9 ножку), на параллельном выходе ничего меняться не будет до тех пор, пока не дернёшь 11 ножку... Стоп! Я понял как надо! После передачи данных другим устройствам, передаю столько байт, сколько сдвиговых регистров подключено по цепочке (другие устройства игнорируют эти данные) и дёргую 11 ноги всем сразу. Мысли правильные?
  15. Потихоньку разрабатываю устройство на атмеге16(не суть) к которой на шину SPI планирую подключить W5500 и регистры сдвига 74hc595 для управления релюхами (~16 шт.). И понимаю, что скорее всего не получится. У W5500 есть ножка SS, при высоком уровне на которой она игнорирует всё на шине, у 74hc595 такой функции я не нашёл. То есть не получится?
  16. Замонавшись читать на эльфийском даташит на эту микросхему, заказал перевод на русский. Выкладываю в общий доступ. Может кому поможет. w5500.pdf
  17. Спасибо за ответы) Вопрос по контактору. Теоретически, если он год будет включён, с ним ничего не случится? Мощность в включённом контакторе фирмы иек 5 ватт. То есть ток ~0.023А. При цене 5Рэ за кВт получается ~18Рэ в месяц)
  18. В общем кроме контактора (пускатель фактически и есть контактор) вариантов нет?
  19. Здравствуйте уважаемые. Делаю электрику в загородном доме с небольшой автоматикой. Хочу, что бы при постановке на охрану выключались часть розеток (ну мол что бы не мучаться с вопросом, а выключил ли я утюг:) ) Проблемы в выборе исполнительного устройства. Можно поставить модульный контактор, но тогда прийдётся его катушку держать под напряжением (если контакты НО, когда я дома, если НЗ, когда дома никого нет) Есть импульсные реле, но на большой ток (на группу розеток думаю ~25А) и больше 1 группы контаков (одна группа контактов отойдёт для мониторинга состояния реле) что-то не нашёл... Нашёл вот такое решение: https://ekfgroup.com/catalog/products/motornyy-privod-av-m1-ekf-averes смущает, что аналогов вообще больше нет. Может через семистор? Вот такой например: https://www.chipdip.ru/product/bta40-800b
  20. Здравствуйте. Решил протестировать двунаправленный изолятор ADUM 1250, мол он подходит для шины i2c, 1-ware... Может я ошибаюсь в рассуждениях, поправте меня пожалуйста, если это так, но мне кажется, что логика должна быть такова: слева подтянули к нулю, то справа тоже шина должна подтянуться к нулю и наоборот. В общем независимо кто подтянет к нулю, вся шина подтянется к нулю... Снял видео теста, так как на словах объяснить сложно: Видео теста Строго не судите, первый раз снимал
×
×
  • Create New...