snn_krs

Members
  • Публикации

    248
  • Зарегистрирован

  • Посещение

Репутация

45 Обычный

О snn_krs

  • Звание
    Постоялец

Информация

  • Город
    Краснодар

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    микроконтроллеры
  • Оборудование
    Осциллограф, мультиметр
  1. Отправка строки в UART в stm32f030

    А я думаю это как раз тот случай. "HelloWorld!" + 0 = 12 символов и работает. Добавите еще 4 символа и снова будет работать. На картинке выше видно, если слово из 4-х букв например "Hell", то они располагаются в обратном порядке с 3-го по 0-й байт. Если довавить еще одну букву, то она будет не в 4-м а в 7-м байте. Чтение ПЗУ возможно с 0-го, 4-го и т.д. адресов. Чтение с 7-го байта вызовет ошибку.
  2. Отправка строки в UART в stm32f030

    Совсем недавно этот вопрос обсуждался в ветке "STM для чайников". В М0 в ПЗУ хранятся только не упакованные данные. Поэтому если строка с конечным 0 кратна 4-м все работает. Если не кратна то ошибка доступа к памяти.
  3. Atmega32u4 частота ШИМ

    После прочтения даташита посмотрите файл d:\Program\arduino-1.8.3\hardware\arduino\avr\cores\arduino\wiring.c. В нем есть функция init() в которой и задается частота шим. Но это может отразиться на других функциях типа измерения временных интервалов.
  4. STM32 для чайника

    Тогда самостоятельно пишем, чтото типа #define GPIO_AF_USART1 ((uint8_t)0x07) /* USART1 Alternate Function mapping */ #define GPIO_AF_USART2 ((uint8_t)0x07) /* USART2 Alternate Function mapping */ #define GPIO_AF_USART3 ((uint8_t)0x07) /* USART3 Alternate Function mapping */ Это из Кейла. Таких строк прийдется писать очень много. Подключая файлы *.h вы не увеличиваете размер кода, зато пользуетесь всеми определениями типа GPIO_AF_USART1.
  5. STM32 для чайника

    Все обозначения типа OSPEEDER, прописываются не в мануале, а в подключаемых файлах типа stm32f4x_gpio.h. Если хитите их использовать, подключите их в свой проект.
  6. 25Q32 + STM32F103 запись блока памяти 0x010000 до 0x01FFFF

    Попробуйте после разрешения записи считать оба регистра статуса и проанализировать. Возможно отключается не вся защита.
  7. Attiny13a + lcd16x2

    Индикатору нужно 6 ножек для управления. У тиньки их 5, а 6-я РЕСЕТ. Если вы ее перепрограммируете как выход, то уже не сможете читать и записывать ИСП программатором.
  8. Прочитать напряжение на ножке

    Попробуйте копнуть в сторону АЦП.
  9. Как подружить две ATMega8?

    В устройстве можете анализатором посмотреть время обновления, думаю больше 1 мс. У вас импульс очень короткий, анализатор его поймает, а Атмега нет. Если анализировать РС2 и РС3, то вы точно знаете первый или второй индикатор вы анализируете. Если анализировать как вы, то надо проверять все возможные символы.
  10. Как подружить две ATMega8?

    Для начала вставьте задержки при передаче в регистр. Регистр может и работает, а Атмега не успеет поймать такие короткие импульсы. PORTC1_bit := 0; // задержка 1 мс PORTC1_bit := 1; // задержка 1 мс При приеме надо ещё анализировать на какой разряд приходят данные. Ножки РС2 и РС3.
  11. Думаю получится то, что уже получилось. Если хотите не попадать в функцию задержки, то ставьте точку останава на команду следующую за _delay_ms() и запускайте на выполнение ( не в пошаговом режиме ).
  12. Похоже в 7-й версии плохо симулируется эта функция. Попробуйте в самое начало файла записать такую строку. #define __DELAY_BACKWARD_COMPATIBLE__ это описано в файле delay.h перед функцией void _delay_ms(double __ms)
  13. Вопросы От Начинающих По Мк

    Внутренний генератор на одну частоту 8 МГц. И есть делитель на 8 - CKDIV8. Есть еще внутренний низкочастотный генератор на 128 кГц.
  14. Измеритель мощности на atmega328p

    У вас u беззнаковое целое. -32768 это 0. Вход РС0 у вас ни куда не подключен
  15. Не могу совладать с uint8_t при работе с LCD1602A

    Если считывание идет правильно, то при выводе на индикатор надо считанное значение преобразовывать в символы. Использовать можно такую функцию char BinToHex( char val ) { switch( val ) { case 0: return '0'; case 1: return '1'; case 2: return '2'; case 3: return '3'; case 4: return '4'; case 5: return '5'; case 6: return '6'; case 7: return '7'; case 8: return '8'; case 9: return '9'; case 10: return 'A'; case 11: return 'B'; case 12: return 'C'; case 13: return 'D'; case 14: return 'E'; case 15: return 'F'; default: return ' '; } } И далее выводить по два символа charPer = eeReadByte(address); setPos(11, 0); sendChar(BinToHex((charPer >> 4) & 0x0F)); sendChar(BinToHex(charPer & 0x0F));