[elektro] GPIO AF valtas / spike
hg12345
hg12345 at freemail.hu
Wed Aug 17 13:53:13 CEST 2016
Hi, szerintem az ST ARM-okban van ilyen funkció az UART/USART-ban.
ha csak egyszer akarod írni a AFR regiszterek, akkor
volatile register tmp;
tmp = (AFR & mask) | new;
AFR = tmp;
a "volatile", ha nem így csinálod kioptimalizálja,
amúgy megpróbálható egy sorba leírva, ezt áltálaban jó optimalizálja,
AFR = (AFR & mask) | new; (az AFR gyárilag "volatile")
ez biztos beolvassa a belső regiszterbe az AFR értéket elvégzi a műveletet és és kiírja.
Sokat segíthet, ha átállítás előtt úgy állítod a GPIO lábat, hogy a TX-nek megfelelő állapotú legyen, esetleg még segíthet az is ha mindig felhúzó ellenállást állítasz kimenetre, mert amikor átkapcsol ez mindig felhúz, még ha egy pillanatra bemenet lenne....
"uprogc ." <uprogc at gmail.com> írta:
>Jobban orulnek ha mar nem kellene a HW-t bonyolitani.
>
>2016-08-17 14:21 GMT+03:00 Pipi <lista at puzsar.hu>:
>
>> nem tudsz még egy lábat elhasználni?
>> pici soros ellenállás a tx-el, erre megy a másik gpio láb, ami vagy
>> kimenet, vagy ts/bemenet, ezzel adod a break-ot
>>
>> Idézet ("uprogc ." <uprogc at gmail.com>):
>>
>> Sziasztok,
>>>
>>> Break conditiont kell generalnom a usart-on.
>>> Ugy oldottam meg hogy atvaltok gpio-ra es lehuzom a tx labat t idore,
>>> aztan
>>> visszavaltok usart-ra es kuldom amit kell.
>>>
>>> Amikor kapcsolok vissza usart-ra ( gpio / AF valtas ) akkor van egy tuske
>>> a
>>> tx es rx pin-en.
>>> A tusket konkretan az AFR ketszeri irasa okozza a fv. vegen.
>>>
>>> Optimalizaltam ezt:
>>> void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource,
>>> uint8_t
>>> GPIO_AF)
>>>
>>> ugy hogy a fv. vegen csak ennyi maradt:
>>> *afr = temp_2;
>>> *afr |= temp;
>>>
>>> Az afr egy mutato , erteke :
>>> afr = &GPIOx->AFR[indx];
>>>
>>> Igy eltunt a tuske, viszont nem teljesen, veletlenszeruen megjelenik.
>>>
>>> Hogy tudnam meg jobban optimalizalni a gpio / af atvaltast ?
>>>
>>> Udv.
>>> Szabi
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>>
>>
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>-----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list