chyba w tej chwili najtańszą opcją na ARMy jest dowolna płytka STM32DISCOVERY z wbudowanym programatorem ST-LINK v2, który ma wyprowadzone sygnały programujące interfejsu SWD na goldpiny. Dzięki temu układy, które zbudujesz będziesz mógł sobie programować przez ST-LINKA
Dużą zaleta STMów jest fakt, że w internecie jest już sporo projektów na różnego typu procesory z tej rodziny.
Dodatkowo ceny układów dostępnych w kamami.pl są całkiem przystępne.
zobacz sobie ceny układów z rdzeniem Cortex-M0 z rodziny STM32F030
np STM32030F4P6 (16kB Flash, 4kB RAM, UART, I2C, SPI, ADC, LQFP48), który może być odpowiednikiem atmegi16, a jest tylko za 3,68 brutto,
http://kamami.pl/index.php?ukey=product&productID=207211albo
STM32F051C8T6 (64kB Flash, 8kB RAM, 2xUART, 2xI2C, 2xSPI, ADC, TSSOP20) za 12,07 brutto.
http://kamami.pl/index.php?ukey=product&productID=189296A jak spojrzysz w cortex M3 to masz już dużo większy wybór również w przyzwoitych cenach (ethernet, can).
problemem może być raster wyprowadzeń układów, jest mniejszy niż w atmegach 16/32/64/128, przez co bez odpowiedniego doświadczenia w termotransferze możesz mieć trudności w wykonaniu płytki.
ustawianie i kasowanie bitów na portach wyjściowych wygląda podobnie, z tą różnicą, że masz 2 rejestry:
GPIOx->BSRR - 1 na danym bicie powoduje ustawienie wyjścia w stan wysoki (możesz oczywiście podać 0x5B, tylko trzeba pamiętać, że rejestr ma 16 bitów)
GPIOx->BRR - 1 na danym bicie powoduje ustawienie na wyjściu stanu niskiego
no ale możesz oczywiście korzystać z Standard Peripheral Library, np:
GPIO_ResetBits(GPIOB, GPIO_Pin_15);
GPIO_SetBits(GPIOB, GPIO_Pin_15);