User Tag List

Страница 11 из 28 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя
Показано с 101 по 110 из 280

Тема: Микроконтроллеры STM32, "с нуля".

  1. #101

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Собственно, я уже запустил прием на прерываниях.
    "Hello, World!" уже погонял в обоих направлениях.
    Завтра отчитаюсь на суд знатоков
    Нужен еще пример?

    ---------- Post added at 12:12 ---------- Previous post was at 11:49 ----------

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение

    Теперь вкратце о подаче 0 или 1 на выход пина.
    GPIOB->ODR |= GPIO_ODR_ODR_7; - записываем 1 в бит регистра пина.
    GPIOB->ODR &= ~GPIO_ODR_ODR_7; - сбрасываем битик пина, на выходе - 0.
    Все хорошо но эти операции не атомарные да и ЧМЗ же .
    Для атомарных операций с портами GPIO есть регистр GPIOx_BSRR

    6.3.5 I/O data bitwise handling
    The bit set reset register (GPIOx_BSRR) is a 32-bit register which allows the application to
    set and reset each individual bit in the outputdata register (GPIOx_ODR). The bit set reset
    register has twice the size of GPIOx_ODR.
    To each bit in GPIOx_ODR, correspond two control bits in GPIOx_BSRR: BSRR(i) and
    BSRR(i+SIZE). When written to 1, bit BSRR(i) setsthe corresponding ODR(i) bit. When
    written to 1, bit BSRR(i+SIZE) resetsthe ODR(i) corresponding bit.
    Writing any bit to 0 in GPIOx_BSRR does not have any effect on the corresponding bit in
    GPIOx_ODR. If there is an attempt to bothset and reset a bit in GPIOx_BSRR, the set
    action takes priority.
    Using the GPIOx_BSRR register to change the values of individual bits in GPIOx_ODR is a
    “one-shot” effect that does not lock the GPIOx_ODR bits. The GPIOx_ODR bits can always
    be accessed directly. The GPIOx_BSRR register provides a way of performing atomic
    bitwise handling.
    There is no need for the software to disable interrupts when programming the GPIOx_ODR
    at bit level: it is possible to modify one or more bits in a single atomic AHB write access.


    Логически разделен на два 16 битных . Запись 1 в младший устанавливает соответствующий бит в порту, запись в старший сбрасывает .

    Код:
    GPIOA->BSRRL = GPIO_BSRR_BS_0;  // установить бит 0 PORTA
    
    GPIOA->BSRRH =GPIO_BSRR_BS_0;  // сбросить   бит 0 PORTA


    ---------- Post added at 13:12 ---------- Previous post was at 12:12 ----------

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Я почему-то думаю, что часы мы обязательно сделаем, одним из первых проектов. просто так принято в мире микроконтроллеров, сначала часы и термометр, затем всё остальное

    Часики (RTC) + или набортный LCD или LED дисплей -
    аппаратный драйвер LED описан здесь http://kazus.ru/forums/showpost.php?...95&postcount=8
    с автоматической коррекцией разнояркости сегментов .
    Либо здесь попроще http://kazus.ru/forums/showpost.php?...postcount=3239
    Или любой дисплей с SPI (от сотовых) .

    Для термодатчиков (1wire) пользуем USART .
    Последний раз редактировалось dosikus; 04.05.2014 в 13:15.
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  2. #102

    Регистрация
    11.01.2006
    Адрес
    Брест/Минск
    Сообщений
    8,398
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    188
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    60 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а, если не секрет, почему L-ку выбрали изначально? А не F-ку какую-нить, там 207-407? И девборда под 407 поинтереснее будет...
    С уважением, Александр.
    Scorpion ZS-256 Turbo+ GMX-2048
    SID-Blaster/ZX
    Музей ретрокомпьютеров в Минске!
    Здесь ничего нет => http://byteman.by
    И здесь тоже --->>> http://bytespace.by

  3. #103

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    Или любой дисплей с SPI (от сотовых) .
    Не будем нарушать традиции



    ---------- Post added at 13:36 ---------- Previous post was at 13:33 ----------

    Цитата Сообщение от BYTEMAN Посмотреть сообщение
    а, если не секрет, почему L-ку выбрали изначально?
    Начали с тем, что было в наличии.

    ---------- Post added at 13:37 ---------- Previous post was at 13:36 ----------

    Цитата Сообщение от dosikus Посмотреть сообщение
    Нужен еще пример?
    Да, конечно.
    Запустить-то я запустил, но интересен правильный метод.

    ---------- Post added at 13:38 ---------- Previous post was at 13:37 ----------

    Цитата Сообщение от dosikus Посмотреть сообщение
    Все хорошо но эти операции не атомарные да и ЧМЗ же .
    Для атомарных операций с портами GPIO есть регистр GPIOx_BSRR
    Разъясни пожалуйста "на пальцах", что такое атомарная операция?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  4. #104

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Разъясни пожалуйста "на пальцах", что такое атомарная операция?
    http://ru.wikipedia.org/wiki/%D0%90%...86%D0%B8%D1%8F

    Есть еще Bit Banding http://eugenemcu.ru/publ/13-1-0-77
    Последний раз редактировалось dosikus; 04.05.2014 в 14:24.
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  5. #105

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    http://ru.wikipedia.org/wiki/%D0%90%...86%D0%B8%D1%8F
    Убиться тапком....
    По рузски это можно озвучить так, что атомарная операция блокирует используемый ресурс на время своего выполнения, дабы прочие процессы не лезли туда же со своими хотелками?

    ---------- Post added at 14:12 ---------- Previous post was at 14:07 ----------

    Цитата Сообщение от dosikus Посмотреть сообщение
    Для атомарных операций с портами GPIO есть регистр GPIOx_BSRR
    Внес исправление в сообщение о GPIO, спасибо!
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  6. #106

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Да, конечно.
    Запустить-то я запустил, но интересен правильный метод.
    Доберусь завтра до железа ...
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  7. #106
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #107

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    dosikus, еще хотелось бы прояснить вопрос об альтернативных функциях.
    Например, включение SPI и IIC на пины.
    Вижу, что для этого используется регистр AFR, но почему 0 или 1, и каким образом выбрать именно нужную функцию из возможных.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  9. #108

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сейчас изображу ...
    Например для USART .
    Идем на раздел 4 Pin descriptions даташита .
    Смотрим таблицу 9 Table 9. Alternate function input/output
    Ищем необходимую нам АФ . Смотрим на каких пинах висит и значение АФ .
    В нашем случае это пины PA9 и P10 и значение АФ для обоих AFIO7 .



    Идем в референсе мануал.
    6.4.9 GPIO alternate function low register (GPIOx_AFRL) (x = A..H)
    и
    6.4.10 GPIO alternate function high register (GPIOx_AFRH) (x = A..H)

    Два 32х битных регистра . По 4бита на каждый пин .
    Определены в хэдере как массив .
    Код:
     __IO uint16_t BSRRH;        /*!< GPIO port bit set/reset high registerBSRR,   Address offset: 0x1A      */
      __IO uint32_t LCKR;         /*!< GPIO port configuration lock register,       Address offset: 0x1C      */
      __IO uint32_t AFR[2];       /*!< GPIO alternate function low register,        Address offset: 0x20-0x24 */
      __IO uint16_t BRR;          /*!< GPIO bit reset register,                     Address offset: 0x28      */
      uint16_t RESERVED3;         /*!< Reserved,                                    0x2A                      */
    } GPIO_TypeDef;
    В итоге нам нужно в регистр GPIOA_AFRH, в позиции AFRH10 и AFRH9 занести значения AFIO7 (0x07).

    и получаем :

    Код:
    GPIOA->AFR[1] |= (7<<(4*2)) |(7<<(4*1));


    ---------- Post added at 15:26 ---------- Previous post was at 14:44 ----------

    Для SPI1 :
    пины PA5-PA7 , AFIO5 .
    или
    пины PB3-PB5 , AFIO5
    NSS не трогаю ибо толку от него 0 ...

    ---------- Post added at 15:30 ---------- Previous post was at 15:26 ----------

    В конструкции
    Код:
    GPIOA->AFR[1] |= (7<<(4*2)) |(7<<(4*1));
    семерки - значение АФ .
    двойка и единица - порядковые номера пинов , если разделить 16битный порт на два 8ми битных...
    Последний раз редактировалось dosikus; 04.05.2014 в 15:50.
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

  10. #109

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dosikus Посмотреть сообщение
    В конструкции
    Да, вот именно тут я уже минут пять и зависаю, пытаюсь логически объяснить себе ускользающую суть...
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  11. #110

    Регистрация
    29.03.2005
    Адрес
    Ярославль
    Сообщений
    1,102
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ewgeny7,
    Суть - сдвигаем значение АФ на позицию пина, а позиция кратна 4ке ...
    Здесь проще магическими числами заляпать .
    Последний раз редактировалось dosikus; 04.05.2014 в 16:09.
    ZXM-Phoenix 1024+PROF ROM+SMUC+VGA
    Profi 1024+CF+CPM+VGA
    ATARI 800XL+SIO2PC+SIO2SD
    RK86@Maximite

Страница 11 из 28 ПерваяПервая ... 789101112131415 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 19
    Последнее: 30.09.2011, 03:08
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Ответов: 18
    Последнее: 27.08.2008, 20:27
  5. Ответов: 6
    Последнее: 20.11.2007, 11:29

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •