PIC a High Endurance Flash

Jindrich Fucik fulda na seznam.cz
Středa Říjen 9 20:41:31 CEST 2019


InLine

Dne 9.10.2019 v 18:08 Jan Waclawek napsal(a):
> Strana 72, table 10-2 v pdf-ku ku 10f322. Mam pocit, ze konkretne
> tento typ ma uz io-port z tych najnovsich enhanced midrange core, aj
> ked cpu mikrokontrolera je len midrange core, teda ako typ 16f84. Ono
> si to treba vzdy cele pozriet v datasheete.

Ano, je to z modernějších mid-range. Má nějaké periferie z enhanced 
mid-range, ale je to staré core.

> Druha vec je to, ze aj software na tychto malych mikrokontroleroch ma
> svoje pravidla, ktorych je dobre sa drzat. Jedno z nich hovori, ze
> hardwarove eventy na io-pinoch, teda aj spominane IoC je vhodne
> skontrolovat aj softwarovo. Kazda hardwarova struktura ma svoje
> chybove stavy a chybnu funkciu. Ked pozries do pdf-ka na stranu 74,
> figure 11-1, tak aj tato hw-struktura pre IoC ma nejaku. Preto je
> vhodne este doplnit jej softwarovu kontrolu, nejaku sw-rutinu, napr.:
> if (input_pin ==1)
>   set_bit tmp,1;
> else
>   clr_bit tmp,1;
> 
> tmp=tmp<<1;
> if (tmp==0x0f)
>   IoC_Event();

Tohle právě ne. Normálně pokud na mid-range používám IoC, je striktně 
nedoporučeno číst daný port. Normálně mají mid-range v popisu třeba 
rozbor, co znamená čtení a co zápis. Například datasheet pro PIC16F628A 
kapitola 15.1 (Read-Modify-Write Operations) druhý odstavec:
"For example, a “clrf PORTB” instruction will read
PORTB, clear all the data bits, then write the result
back to PORTB. This example would have the unintended
result that the condition that sets the RBIF flag
would be cleared for pins configured as inputs and
using the PORTB interrupt-on-change feature."

Nebo třeba kapitola 5.2 (PORTB and TRISB Registers) poslední odstavec 
(vpravo nahoře):
"The interrupt-on-change feature is recommended for
wake-up on key depression operation and operations
where PORTB is only used for the interrupt-on-change
feature. Polling of PORTB is not recommended while
using the interrupt-on-change feature."

> Cpu HC05 od Motoroly mala pre podobne pripady instrukciu, ktora
> testovala logicky stav IRQ-pinu. Takze toto je znama vec uz velmi
> dlho, len je dobre si na nu spomenut... Neviem ci tuto app. note este
> najdete niekde na webe, ale svojho casu bola.

Ano, to si pamatuji. Ani Microchip na tuto hru nezapomíná, například v 
datasheetu pro PIC10F322 je tomu věnována kapitola 11.4 a example 11-1 
na straně 73.

> Inak dakujem za schemu na "snehulaka", len by som sa este rad spytal
> na frekvencie, ktorymi spinate a modulujete blikanie tej LED-ky. A
> mozete pridat aj frekvenciu, ktorou menite farbu.

sněhuláci vznikají poměrně živelně na různých procesorech - včetně 
base-line PIC10F200. Na base-line mají základnu z přetečení timeru s 
děličem 1:4 = 1 mHz / 1024 = cca 1kHz a pwm má rozlišení kolem 4 bitů 
(celkem 1/16kHz). U mid-range používám jako základnu Timer2 1:4, preload 
125 = 500 s defaultními hodinami (8MHz), takže 2Mhz / 500 = 4kHz a 
používám 6 bit PWM (4/64kHz). Ale není to dogma, pro některé efekty 
používám delší a pro jiné kratší pwm.

Na mid-range je větší práce dekódování DCC signálu, než blikání s 
LEDkou, na base-line ani DCC nepoužívám.


Další informace o konferenci Hw-list