Portál AbcLinuxu, 7. května 2025 05:14
x.core.usart0.init(9600); x.core.gpio14.set(HIGH); ...lenze neviem ci je to mozne pri pouziti C-cka (nie je ani tak problem dostat do struktury funkciu, skor je problem ze funkcia netusi kde sa nachadza) neviete niekdo o sposobe ako by sa to dalo dosiahnut? vdaka
Ale když jsem ty příklady zkompiloval pro avr s optimalizací Os a vypsal vysledek kompilace v asm, tak jsem dostal:
Pro volaní: core.uart0.init(9600); core.uart1.init(115200); core.i2c.init(400000); Výsledek: ldi r22,lo8(9600) ldi r23,hi8(9600) ldi r24,hlo8(9600) ldi r25,hhi8(9600) rcall uart0_init ldi r22,lo8(115200) ldi r23,hi8(115200) ldi r24,hlo8(115200) ldi r25,hhi8(115200) rcall uart1_init ldi r22,lo8(400000) ldi r23,hi8(400000) ldi r24,hlo8(400000) ldi r25,hhi8(400000) rcall i2c_initČekal jsem, že se bude pracně prohrabávat tou datovou strukturou. Určitě by se pak hodilo vytvořit soubor například config.h, kde budou makra ENABLE_I2C atd. a knihovny řádně prošpekovat těmito makry, aby se nechtěné funkce nelinkovaly k výsledné aplikaci. Možná pro komunikační rozhraní vytvořit jednotné funkce open(), close(), read(), write(), ioctl() atd. Takový framework by se spíše hodil např. pro ARM7 procesory u AVR bych měl obavy, aby to nebylo až moc "rozežraný", to víte paměti je málo.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.