Forth http://fforum.winglion.ru/ |
|
Применение Форта для ARM, AVR, MSP430, PIC ... http://fforum.winglion.ru/viewtopic.php?f=39&t=9 |
Страница 6 из 17 |
Автор: | chu [ Чт янв 21, 2016 08:48 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Вовремя Matthias Trute начал amforth на MSP430 прививать. Респект. |
Автор: | Ilya [ Пт янв 22, 2016 00:29 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
chu писал(а): Ilya писал(а): ...Могу подкинуть свою либу для RTC. Спасибо-давай! Ilya писал(а): Может передашь amForth ребятам? Сформулируй инф. сообщение, может со ссылками, чтобы было чего писать. Надеюсь админ меня не загонит в вечный бан. Держи! RTC для stm32l153rb Код: \ \ rtc.f v1.0 \ stm32l152rb \ Ilya Abdrahimov \ REQUIRE st32l152.f \ REQUIRE interrupts.f \ Words: \ rtc-init - rtc initialization \ rtc-set-time - set time ( hh mm ss -- ) \ rtc-set-date - set date ( yy wd mm dd -- ) \ rtc-get-time - get time ( -- hh mm ss ) \ rtc-get-date - get date ( -- yy wd mm dd ) \ rtc-alarm-init - rtc initialization ( addra addrb -- ) \ addra&addrb - Address your words alarm handlers \ rtc-alarma-set - initialization alarm A ( hh mm -- ) \ hh - hour, mm - minutes \ rtc-alarmb-set - initialization alarm B ( hh mm -- ) \ hh - hour, mm - minutes \ rtc-alarma-disable - disable Alarm A \ rtc-alarmb-disable - disable Alarm B \ rtc-alarma-gt - Get Alarm A time ( -- hh mm ) \ rtc-alarmb-gt - Get Alarm B time ( -- hh mm ) $10000000 constant RCC_APB1ENR_PWREN \ Power interface clock enable $100 constant PWR_CR_DBP \ Disable Backup Domain write protection $400000 constant RCC_CSR_RTCEN \ RTC clock enable $0 constant RCC_CSR_RTCSEL_NOCLOCK \ No clock $10000 constant RCC_CSR_RTCSEL_LSE \ LSE oscillator clock used as RTC clock $20000 constant RCC_CSR_RTCSEL_LSI \ LSI oscillator clock used as RTC clock $30000 constant RCC_CSR_RTCSEL_HSE \ HSE oscillator clock divided by 2, 4, 8 or 16 by RTCPRE used as RTC clock : dec>bcd #10 /mod 4 lshift or ; : bcd>dec dup $f and swap 4 rshift 10 * + ; \ RTC initialization : rtc-init ( -- ) \ $20 RTC_ISR bit@ 0= \ Calendar has been initialized ? \ IF RCC_APB1ENR @ RCC_APB1ENR_PWREN or RCC_APB1ENR ! \ Power interface clock enable PWR_CR_DBP PWR_CR bis! \ Disable Backup Domain write protection \ $800000 rcc_csr bis! \ $800000 rcc_csr bic! \ $1 RCC_CSR bis! \ LSI on \ begin $2 RCC_CSR bit@ until \ wait LSI ready 1 8 lshift RCC_CSR bis! \ LSE on begin $200 RCC_CSR bit@ until \ wait LSE ready RCC_CSR @ RCC_CSR_RTCSEL_LSE or RCC_CSR ! \ 10: LSI oscillator clock used as RTC/LCD clock RCC_CSR_RTCEN RCC_CSR bis! \ RTC clock enable $ca RTC_WPR c! $53 RTC_WPR c! \ THEN ; : rtc-cal-set-on $80 RTC_ISR bis! begin $40 rtc_isr bit@ until \ Calendar registers update is allowed. $7f00ff RTC_PRER ! \ From LSI, LSE - $ff $7f00ff RTC_PRER ! ; : rtc-cal-set-off $80 RTC_ISR bic! ; \ Set 12/24 time notation : rtc-12/24 ( n -- ) \ 1 - am/pm, 0 -24h $20 RTC_ISR bit@ \ Calendar has been initialized ? if rtc-cal-set-on if #400000 RTC_TR bis! else #400000 RTC_TR bic! then rtc-cal-set-off else drop then ; : rtc-set-time ( h m s -- ) $20 RTC_ISR bit@ \ Calendar has been initialized ? if rtc-cal-set-on dec>bcd swap dec>bcd 8 lshift or swap dec>bcd 16 lshift or RTC_TR ! rtc-cal-set-off else drop 2drop \ clear stack then ; : rtc-set-date ( yy wd mm dd -- ) $20 RTC_ISR bit@ \ Calendar has been initialized ? if rtc-cal-set-on dec>bcd swap dec>bcd 8 lshift or swap 13 lshift or swap dec>bcd 16 lshift or RTC_DR ! rtc-cal-set-off else 2drop 2drop \ clear stack then ; : rtc-get-time ( -- h m s ) rtc_tr @ dup >r 16 rshift bcd>dec r@ 8 rshift $ff and bcd>dec r> $ff and bcd>dec ; : rtc-get-date ( -- yy wd mm dd ) rtc_dr @ dup >r 16 rshift bcd>dec r@ 8 rshift dup $e0 and 5 rshift swap $1f and bcd>dec r> $ff and bcd>dec ; \ rtc-alarm \ SAMPLE: \ ' youalarmAhandler ' youalarmBhandler rtc-alarm-init \ 4 26 set-alarma \ 0 variable alarma-addr \ Alarm A interrupt handler 0 variable alarmb-addr \ Alarm B interrupt handler : irq-alarm RTC_ISR @ $300 and case $100 of alarma-addr @ $100 RTC_ISR bic! endof $200 of alarmb-addr @ $200 RTC_ISR bic! endof endcase ?dup if execute then 1 17 lshift exti_pr bis! ; : rtc-alarm-time ( hh mm -- n ) 0 1 31 lshift or \ date/day don't care Alarm comparison swap dec>bcd 8 lshift or \ mm swap dec>bcd 16 lshift or \ hh ; : alarma-mask 1 21 lshift \ Alarm A output enabled 1 12 lshift or \ Alarm A interrupt enbled 1 8 lshift or \ Alarm A enabled ; : alarmb-mask 1 22 lshift \ Alarm B output enabled 1 13 lshift or \ Alarm B interrupt enbled 1 9 lshift or \ Alarm B enabled ; : rtc-alarma-disable ( -- ) alarma-mask RTC_CR bic! ; : rtc-alarmb-disable ( -- ) alarmb-mask RTC_CR bic! ; : rtc-alarma-set ( hh mm -- ) rtc-cal-set-on rtc-alarmb-disable 1 8 lshift RTC_ISR bic! $100 rtc_isr bic! \ rtc-alarm-time RTC_ALRMAR ! 1 22 lshift RTC_CR bic! \ Alarm B output disabled alarma-mask RTC_CR bis! rtc-cal-set-off ; : rtc-alarmb-set ( hh mm -- ) rtc-cal-set-on rtc-alarma-disable 1 9 lshift RTC_ISR bic! $200 rtc_isr bic! \ rtc-alarm-time RTC_ALRMBR ! 1 21 lshift RTC_CR bic! \ Alarm A output disabled alarmb-mask RTC_CR bis! rtc-cal-set-off ; \ Get Alarm A time : rtc-alarma-gt ( -- hh mm ) RTC_ALRMAR @ dup 16 rshift $ff and bcd>dec swap 8 rshift $ff and bcd>dec ; \ Get Alarm B time : rtc-alarmb-gt ( -- hh mm ) RTC_ALRMBR @ dup 16 rshift $ff and bcd>dec swap 8 rshift $ff and bcd>dec ; : rtc-alarm-init ( addra addrb -- ) alarmb-addr ! alarma-addr ! ['] irq-alarm irq-rtc_alarm ! RCC_APB2ENR_SYSCFGEN RCC_APB2ENR bis! RTC_Alarm_IRQn nvic-enable 1 17 lshift exti_rtsr bis! 1 17 lshift exti_imr bis! ; \ sample \ : t rtc-get-time cr rot . ." :" swap . ." :" . ; \ : d rtc-get-date cr . ." / " . drop ." /" . ; \ : re cr ." isr:" rtc_isr @ hex. space ." cr:" rtc_cr @ hex. ; \ : mya cr ." Alarm A:" t cr ; \ : myb cr ." Alarm B:" t cr ; rtc-init \ ' mya ' myb rtc-alarm-init \ 12 34 56 rtc-set-time \ 12 36 rtc-alarma-set TFT для amForth hx8352graphics.frt Код: \ marker =lcd-graphics= : _wrtData csl [ $22 ] literal wrtCmd wrtData ; \ Draw a pixel with the foreground color \ This function assumes it will be nested within hwAccess functions : _pixel ( x y --- ) over over ( x y --- x y x y) setBounds ( x y x y --- ) fgColor @ _wrtData ; \ Draw a pixel with the foreground color \ This function obtains hwAccess : pixel ( x y --- ) \ Obtain exclusive access to all hardware I/O hwAccess[ _pixel \ Release exclusive access to all hardware I/O ]hwAccess clearBounds ; variable y2 variable x2 variable y1 variable x1 \ Draw a rectangle filled with foreground color \ This function assumes it will be nested within hwAccess functions : _filledRect ( x1 y1 x2 y2 --- ) y2 ! x2 ! y1 ! x1 ! x1 @ y1 @ x2 @ y2 @ setBounds fgColor @ _wrtData x2 @ x1 @ - abs 1+ y2 @ y1 @ - abs 1+ [ 0 ] literal do dup [ 0 ] literal do wrl wrh loop loop drop ; \ Draw a rectangle filled with foreground color \ This function obtains hwAccess : filledRect ( x1 y1 x2 y2 --- ) \ Obtain exclusive access to all hardware I/O hwAccess[ _filledRect \ Release exclusive access to all hardware I/O ]hwAccess ; \ Draw horizontal line with foreground color \ This function assumes it will be nested within hwAccess functions : _hLine ( x y len --- ) >r ( x y len --- x y ) over over ( x y --- x y x y ) swap ( x y x y --- x y y x ) r> ( x y y x --- x y y x len ) + ( x y y x len --- x y y x+len ) swap ( x y y x+len --- x y x+len y ) _filledRect ; \ Draw horizontal line with foreground color \ This function obtains hwAccess : hLine ( x y len --- ) hwAccess[ _hLine ]hwAccess ; \ Draw vertical line with foreground color \ This function assumes it will be nested within hwAccess functions : _vLine ( x y len --- ) 2>r ( x y len --- x ) dup ( x --- x x ) 2r> ( x x --- x x y len ) over ( x x y len --- x x y len y ) + ( x x y len y --- x x y y+len ) rot ( x x y y+len --- x y y+len x ) swap ( x y y+len x --- x y x y+len ) _filledRect ; \ Draw vertical line with foreground color \ This function obtains hwAccess : vLine ( x y len --- ) hwAccess[ _vLine ]hwAccess ; variable y2 variable x2 variable y1 variable x1 \ Draw a rectangle with foreground color : rect ( x1 y1 x2 y2 --- ) y2 ! x2 ! y1 ! x1 ! hwAccess[ x1 @ y1 @ x2 @ x1 @ - abs _hLine x1 @ y2 @ x2 @ x1 @ - abs _hLine x1 @ y1 @ y2 @ y1 @ - abs _vLine x2 @ y1 @ y2 @ y1 @ - abs _vLine ]hwAccess ; variable radius variable y variable x \ Draw filled circle with foreground color : filledCircle ( x y radius --- ) radius ! y ! x ! 1 radius @ negate hwAccess[ do [ 1 ] literal radius @ negate do i i * j j * + radius @ radius @ * < if x @ i + y @ j + i negate 2* _hLine x @ i + y @ j - i negate 2* _hLine leave then loop loop ]hwAccess ; variable dx variable dy variable error \ Draw a circle with foreground color : circle ( x y radius --- ) radius ! y ! x ! radius @ 0 <> if 0 dx ! radius @ dy ! 3 radius @ 2 * - error ! hwAccess[ begin dy @ dx @ > while x @ dx @ - y @ dy @ - _pixel x @ dy @ - y @ dx @ - _pixel x @ dy @ + y @ dx @ - _pixel x @ dx @ + y @ dy @ - _pixel x @ dx @ - y @ dy @ + _pixel x @ dy @ - y @ dx @ + _pixel x @ dy @ + y @ dx @ + _pixel x @ dx @ + y @ dy @ + _pixel [ 0 ] literal error @ > if error @ dx @ [ 4 ] literal * [ 6 ] literal + + error ! else error @ dx @ dy @ - [ 4 ] literal * [ 10 ] literal + + error ! dy @ 1- dy ! then dx @ 1+ dx ! repeat ]hwAccess then ; \ Swap the value of two variables : swapVars ( v1addr v2addr --- ) over over ( v1addr v2addr --- v1addr v2addr v1addr v2addr ) @ ( v1addr v2addr v1addr v2addr --- v1addr v2addr v1addr v2 ) swap @ ( v1addr v2addr v1addr v2 --- v1addr v2addr v2 v1 ) >r ( v1addr v2addr v2 v1 --- v1addr v2addr v2 ) rot ( v1addr v2addr v2 --- v2addr v2 v1addr ) ! ( v2addr v2 v1addr --- v2addr ) r> ( v2addr --- v2addr v1 ) swap ( v2addr v1 --- v1 v2addr ) ! ( v1 v2addr --- ) ; variable steep variable derror \ Draw line with foreground color \ This function assumes it will be nested within hwAccess functions : _line ( x1 y1 x2 y2 --- ) y2 ! x2 ! y1 ! x1 ! y2 @ y1 @ - abs x2 @ x1 @ - abs > steep ! steep @ if x1 y1 swapVars x2 y2 swapVars then x1 @ x2 @ > if x1 x2 swapVars y1 y2 swapVars then y2 @ y1 @ - abs derror ! y1 @ y2 @ > if -1 dy ! else 1 dy ! then x2 @ x1 @ - dx ! dx @ 1 rshift error ! y1 @ y ! x2 @ 1+ x1 @ do steep @ if y @ i _pixel else i y @ _pixel then error @ derror @ - error ! error @ 0< if dy @ y +! dx @ error +! then loop ; \ Draw line with foreground color \ This function obtains hwAccess : line ( x1 y1 x2 y2 --- ) hwAccess[ _line ]hwAccess ; \ Storage for graphics cursor variable cursorX variable cursorY \ Setup defaults 0 cursorX ! 0 cursorY ! : moveCursor ( x y --- ) cursorY ! cursorX ! ; \ Draw a line to the given location from the position of the graphics cursor \ then update the cursor's position with the new location : lineTo ( x y --- ) 2>r cursorX @ cursorY @ 2r> over over cursorY ! cursorX ! line ; hx8352Priting.frt Код: \ On screen printing functions for the SSD1289 65K Color LCD Controller \ Written for AmForth \ By: Craig A. Lindley \ Last Update: 11/13/2103 \ Must have ssd1289Graphics.frt, utilities.frt, font.frt loaded marker _PRINT_ \ Return cell at offset into font specified on the stack : font@ ( offset --- cell ) FONT + @i ; \ Render a row of font data : renderFontRow ( font_row_data --- ) [ 0 ] literal [ FWIDTH 1- ] literal \ For all bits of font row data do dup ( font_row_data --- font_row_data font_row_data ) \ Create bitmask for individual bit [ 1 ] literal i lshift and if \ If bit set fgColor @ wrtData else \ If bit not set bgColor @ wrtData then [ -1 ] literal +loop drop ; \ Print a character from the font \ This function assumes it will be nested within hwAccess functions : _printChar ( c --- ) csl [ $22 ] literal wrtCmd \ Calculate start of char data in font [ $20 ] literal - CELLSPERCHAR * ( c --- offset ) \ Set bounds around char cursorX @ cursorY @ cursorX @ [ FWIDTH 1- ] literal + cursorY @ [ FHEIGHT 1- ] literal + setBounds [ CELLSPERCHAR ] literal [ 0 ] literal \ For all rows of font char data do dup ( offset --- offset offset ) i + ( offset offset --- offset offset+i ) font@ ( offset offset+i --- offset font_row_data ) [ ROWSPERCELL ] literal [ 1 ] literal = \ One row per cell ? if \ Yes renderFontRow else \ No dup ( offset font_row_data --- offset font_row_data font_row_data ) [ 8 ] literal rshift renderFontRow [ $FF ] literal and renderFontRow then loop drop ; : setXY [ FHEIGHT ] literal * cursorY ! [ FWIDTH ] literal * cursorX ! ; \ Print a character from the font \ This function obtains hwAccess : printChar ( c x y --- ) hwAccess[ setXY _printChar ]hwAccess ; : lcd_emit ( c -- ) _printChar [ FWIDTH ] literal cursorX +! ; \ Switch emit to LCD : emit->lcd ( -- ) ['] lcd_emit ['] emit defer! ; \ Switch emit to serial : emit->tx0 ( -- ) \ ['] tx-isr ['] emit defer! ['] tx-poll ['] emit defer! ; \ Number to LCD : lcd_. ( n -- ) emit->lcd . emit->tx0 ; \ String in RAM to LCD : lcd_type ( adr u -- ) emit->lcd type emit->tx0 ; \ ~ilya \ Печатаем из флэшки : lcd_typef dup 2/ swap over 2* - + over + swap ?do i @i dup [ $ff ] literal and lcd_emit >< [ $ff ] literal and ?dup if lcd_emit then loop ; variable addr variable count variable count2 variable flag \ Print string from flash horizontally : horizPrintString ( addr count --- ) count ! addr ! count @ 1 rshift count2 ! count @ 2 mod 0 <> flag ! count2 @ 0 do addr @ @i dup [ $FF ] literal and _printChar [ FWIDTH ] literal cursorX +! [ 8 ] literal rshift _printChar [ FWIDTH ] literal cursorX +! [ 1 ] literal addr +! loop flag @ if addr @ @i [ $FF ] literal and _printChar FWIDTH cursorX +! then ; \ Print string from flash vertically : vertPrintString ( addr count --- ) count ! addr ! count @ 1 rshift count2 ! count @ 2 mod 0 <> flag ! count2 @ 0 do addr @ @i dup $FF and _printChar FHEIGHT cursorY +! 8 rshift _printChar FHEIGHT cursorY +! 1 addr +! loop flag @ if addr @ @i $FF and _printChar FHEIGHT cursorY +! then ; variable dps \ Compile a string to flash and return its address and count : f" $22 parse ( addr count --- ) count ! addr ! count @ 1 rshift count2 ! count @ 2 mod 0 <> flag ! dp dps ! count2 @ 0 do addr @ c@ 1 addr +! addr @ c@ 8 lshift or 1 addr +! , loop flag @ if addr @ c@ , then dps @ count @ ; \ Define a label that places itself on the display : label: ( x y addr count --- ) create , , , , does> dup over over 3 + @i swap 2 + @i moveCursor 1+ @i swap @i ; и шрифты: Код: \ Small Font used for on screen printing for the SSD1289 65K Color LCD Controller \ Written for AmForth \ By: Craig A. Lindley \ Last Update: 11/15#inclu/2103 marker _FONT_ &8 constant FWIDTH &12 constant FHEIGHT &6 constant CELLSPERCHAR &2 constant ROWSPERCELL \ 8x12 font with characters between $20 .. $5F create FONT $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ space $0000 , $2020 , $2020 , $2020 , $0020 , $0000 , \ ! $0028 , $5050 , $0000 , $0000 , $0000 , $0000 , \ " $0000 , $2828 , $FC28 , $50FC , $5050 , $0000 , \ # $0020 , $78A8 , $A060 , $3028 , $A8F0 , $2000 , \ $ $0000 , $48A8 , $B050 , $2834 , $5448 , $0000 , \ % $0000 , $2050 , $5078 , $A8A8 , $906C , $0000 , \ & $0040 , $4080 , $0000 , $0000 , $0000 , $0000 , \ ' $0004 , $0810 , $1010 , $1010 , $1008 , $0400 , \ left paren $0040 , $2010 , $1010 , $1010 , $1020 , $4000 , \ right paren $0000 , $0020 , $A870 , $70A8 , $2000 , $0000 , \ * $0000 , $2020 , $20F8 , $2020 , $2000 , $0000 , \ + $0000 , $0000 , $0000 , $0000 , $0040 , $4080 , \ , $0000 , $0000 , $00F8 , $0000 , $0000 , $0000 , \ - $0000 , $0000 , $0000 , $0000 , $0040 , $0000 , \ . $0008 , $1010 , $1020 , $2040 , $4040 , $8000 , \ / $0000 , $7088 , $8888 , $8888 , $8870 , $0000 , \ 0 $0000 , $2060 , $2020 , $2020 , $2070 , $0000 , \ 1 $0000 , $7088 , $8810 , $2040 , $80F8 , $0000 , \ 2 $0000 , $7088 , $0830 , $0808 , $8870 , $0000 , \ 3 $0000 , $1030 , $5050 , $9078 , $1018 , $0000 , \ 4 $0000 , $F880 , $80F0 , $0808 , $8870 , $0000 , \ 5 $0000 , $7090 , $80F0 , $8888 , $8870 , $0000 , \ 6 $0000 , $F890 , $1020 , $2020 , $2020 , $0000 , \ 7 $0000 , $7088 , $8870 , $8888 , $8870 , $0000 , \ 8 $0000 , $7088 , $8888 , $7808 , $4870 , $0000 , \ 9 $0000 , $0000 , $2000 , $0000 , $0020 , $0000 , \ : $0000 , $0000 , $0020 , $0000 , $0020 , $2000 , \ ; $0004 , $0810 , $2040 , $2010 , $0804 , $0000 , \ < $0000 , $0000 , $F800 , $00F8 , $0000 , $0000 , \ = $0040 , $2010 , $0804 , $0810 , $2040 , $0000 , \ > $0000 , $7088 , $8810 , $2020 , $0020 , $0000 , \ ? $0000 , $7088 , $98A8 , $A8B8 , $8078 , $0000 , \ @ $0000 , $2020 , $3050 , $5078 , $48CC , $0000 , \ A $0000 , $F048 , $4870 , $4848 , $48F0 , $0000 , \ B $0000 , $7888 , $8080 , $8080 , $8870 , $0000 , \ C $0000 , $F048 , $4848 , $4848 , $48F0 , $0000 , \ D $0000 , $F848 , $5070 , $5040 , $48F8 , $0000 , \ E $0000 , $F848 , $5070 , $5040 , $40E0 , $0000 , \ F $0000 , $3848 , $8080 , $9C88 , $4830 , $0000 , \ G $0000 , $CC48 , $4878 , $4848 , $48CC , $0000 , \ H $0000 , $F820 , $2020 , $2020 , $20F8 , $0000 , \ I $0000 , $7C10 , $1010 , $1010 , $1090 , $E000 , \ J $0000 , $EC48 , $5060 , $5050 , $48EC , $0000 , \ K $0000 , $E040 , $4040 , $4040 , $44FC , $0000 , \ L $0000 , $D8D8 , $D8D8 , $A8A8 , $A8A8 , $0000 , \ M $0000 , $DC48 , $6868 , $5858 , $48E8 , $0000 , \ N $0000 , $7088 , $8888 , $8888 , $8870 , $0000 , \ O $0000 , $F048 , $4870 , $4040 , $40E0 , $0000 , \ P $0000 , $7088 , $8888 , $88E8 , $9870 , $1800 , \ Q $0000 , $F048 , $4870 , $5048 , $48EC , $0000 , \ R $0000 , $7888 , $8060 , $1008 , $88F0 , $0000 , \ S $0000 , $F8A8 , $2020 , $2020 , $2070 , $0000 , \ T $0000 , $CC48 , $4848 , $4848 , $4830 , $0000 , \ U $0000 , $CC48 , $4850 , $5030 , $2020 , $0000 , \ V $0000 , $A8A8 , $A870 , $5050 , $5050 , $0000 , \ W $0000 , $D850 , $5020 , $2050 , $50D8 , $0000 , \ X $0000 , $D850 , $5020 , $2020 , $2070 , $0000 , \ Y $0000 , $F890 , $1020 , $2040 , $48F8 , $0000 , \ Z $0038 , $2020 , $2020 , $2020 , $2020 , $3800 , \ [ $0040 , $4040 , $2020 , $1010 , $1008 , $0000 , \ \ $0070 , $1010 , $1010 , $1010 , $1010 , $7000 , \ ] $0020 , $5000 , $0000 , $0000 , $0000 , $0000 , \ ^ $0000 , $0000 , $0000 , $0000 , $0000 , $00FC , \ _ $0020 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ' $0000 , $0000 , $0030 , $4838 , $483C , $0000 , \ a $0000 , $C040 , $4070 , $4848 , $4870 , $0000 , \ b $0000 , $0000 , $0038 , $4840 , $4038 , $0000 , \ c $0000 , $1808 , $0838 , $4848 , $483C , $0000 , \ d $0000 , $0000 , $0030 , $4878 , $4038 , $0000 , \ e $0000 , $1C20 , $2078 , $2020 , $2078 , $0000 , \ f $0000 , $0000 , $003C , $4830 , $4078 , $4438 , \ g $0000 , $C040 , $4070 , $4848 , $48EC , $0000 , \ h $0000 , $2000 , $0060 , $2020 , $2070 , $0000 , \ i $0000 , $1000 , $0030 , $1010 , $1010 , $10E0 , \ j $0000 , $C040 , $405C , $5070 , $48EC , $0000 , \ k $0000 , $E020 , $2020 , $2020 , $20F8 , $0000 , \ l $0000 , $0000 , $00F0 , $A8A8 , $A8A8 , $0000 , \ m $0000 , $0000 , $00F0 , $4848 , $48EC , $0000 , \ n $0000 , $0000 , $0030 , $4848 , $4830 , $0000 , \ o $0000 , $0000 , $00F0 , $4848 , $4870 , $40E0 , \ p $0000 , $0000 , $0038 , $4848 , $4838 , $081C , \ q $0000 , $0000 , $00D8 , $6040 , $40E0 , $0000 , \ r $0000 , $0000 , $0078 , $4030 , $0878 , $0000 , \ s $0000 , $0020 , $2070 , $2020 , $2018 , $0000 , \ t $0000 , $0000 , $00D8 , $4848 , $483C , $0000 , \ u $0000 , $0000 , $00EC , $4850 , $3020 , $0000 , \ v $0000 , $0000 , $00A8 , $A870 , $5050 , $0000 , \ w $0000 , $0000 , $00D8 , $5020 , $50D8 , $0000 , \ x $0000 , $0000 , $00EC , $4850 , $3020 , $20C0 , \ y $0000 , $0000 , $0078 , $1020 , $2078 , $0000 , \ z $0018 , $1010 , $1020 , $1010 , $1010 , $1800 , \ { $1010 , $1010 , $1010 , $1010 , $1010 , $1010 , \ | $0060 , $2020 , $2010 , $2020 , $2020 , $6000 , \ } $40A4 , $1800 , $0000 , $0000 , $0000 , $0000 , \ ~ и large font Код: \ Large Font used for on screen printing for the SSD1289 65K Color LCD Controller
\ Written for AmForth \ By: Craig A. Lindley \ Last Update: 11/15/2103 marker _FONT_ &16 constant FWIDTH &16 constant FHEIGHT &16 constant CELLSPERCHAR &1 constant ROWSPERCELL \ 16x16 font with characters between $20 .. $5F create FONT $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ space $0000 , $0000 , $0700 , $0F80 , $0F80 , $0F80 , $0F80 , $0F80 , $0700 , $0700 , $0000 , $0000 , $0700 , $0700 , $0700 , $0000 , \ ! $0000 , $0E38 , $0E38 , $0E38 , $0E38 , $0630 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ " $0000 , $0C30 , $0C30 , $0C30 , $7FFE , $7FFE , $0C30 , $0C30 , $0C30 , $0C30 , $7FFE , $7FFE , $0C30 , $0C30 , $0C30 , $0000 , \ # $0000 , $0240 , $0240 , $0FF8 , $1FF8 , $1A40 , $1A40 , $1FF0 , $0FF8 , $0258 , $0258 , $1FF8 , $1FF0 , $0240 , $0240 , $0000 , \ $ $0000 , $0000 , $0000 , $0E10 , $0E30 , $0E70 , $00E0 , $01C0 , $0380 , $0700 , $0E70 , $0C70 , $0870 , $0000 , $0000 , $0000 , \ % $0000 , $0000 , $0F00 , $1980 , $1980 , $1980 , $0F00 , $0F08 , $0F98 , $19F8 , $18F0 , $18E0 , $19F0 , $0F98 , $0000 , $0000 , \ & $0000 , $0000 , $0700 , $0700 , $0700 , $0E00 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ' $0000 , $0000 , $00F0 , $01C0 , $0380 , $0700 , $0E00 , $0E00 , $0E00 , $0E00 , $0700 , $0380 , $01C0 , $00F0 , $0000 , $0000 , \ left paren $0000 , $0000 , $0F00 , $0380 , $01C0 , $00E0 , $0070 , $0070 , $0070 , $0070 , $00E0 , $01C0 , $0380 , $0F00 , $0000 , $0000 , \ right paren $0000 , $0000 , $0180 , $1188 , $0990 , $07E0 , $07E0 , $3FFC , $3FFC , $07E0 , $07E0 , $0990 , $1188 , $0180 , $0000 , $0000 , \ * $0000 , $0000 , $0000 , $0000 , $0180 , $0180 , $0180 , $0FF0 , $0FF0 , $0180 , $0180 , $0180 , $0000 , $0000 , $0000 , $0000 , \ + $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0700 , $0700 , $0700 , $0E00 , $0000 , \ , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FF8 , $1FF8 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ - $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0700 , $0700 , $0700 , $0000 , $0000 , \ , $0000 , $0000 , $0002 , $0006 , $000E , $001C , $0038 , $0070 , $00E0 , $01C0 , $0380 , $0700 , $0E00 , $1C00 , $0000 , $0000 , \ / $0000 , $0000 , $0FF0 , $1C38 , $1C78 , $1CF8 , $1CF8 , $1DB8 , $1DB8 , $1F38 , $1F38 , $1E38 , $1C38 , $0FF0 , $0000 , $0000 , \ 0 $0000 , $0000 , $0180 , $0180 , $0380 , $1F80 , $1F80 , $0380 , $0380 , $0380 , $0380 , $0380 , $0380 , $1FF0 , $0000 , $0000 , \ 1 $0000 , $0000 , $0FE0 , $1C70 , $1C38 , $0038 , $0070 , $00E0 , $01C0 , $0380 , $0700 , $0E38 , $1C38 , $1FF8 , $0000 , $0000 , \ 2 $0000 , $0000 , $0FE0 , $1C70 , $1C38 , $0038 , $0070 , $03C0 , $03C0 , $0070 , $0038 , $1C38 , $1C70 , $0FE0 , $0000 , $0000 , \ 3 $0000 , $0000 , $00E0 , $01E0 , $03E0 , $06E0 , $0CE0 , $18E0 , $1FF8 , $1FF8 , $00E0 , $00E0 , $00E0 , $03F8 , $0000 , $0000 , \ 4 $0000 , $0000 , $1FF8 , $1C00 , $1C00 , $1C00 , $1C00 , $1FE0 , $1FF0 , $0078 , $0038 , $1C38 , $1C70 , $0FE0 , $0000 , $0000 , \ 5 $0000 , $0000 , $03E0 , $0700 , $0E00 , $1C00 , $1C00 , $1FF0 , $1FF8 , $1C38 , $1C38 , $1C38 , $1C38 , $0FF0 , $0000 , $0000 , \ 6 $0000 , $0000 , $1FFC , $1C1C , $1C1C , $1C1C , $001C , $0038 , $0070 , $00E0 , $01C0 , $0380 , $0380 , $0380 , $0000 , $0000 , \ 7 $0000 , $0000 , $0FF0 , $1C38 , $1C38 , $1C38 , $1F38 , $07E0 , $07E0 , $1CF8 , $1C38 , $1C38 , $1C38 , $0FF0 , $0000 , $0000 , \ 8 $0000 , $0000 , $0FF0 , $1C38 , $1C38 , $1C38 , $1C38 , $1FF8 , $0FF8 , $0038 , $0038 , $0070 , $00E0 , $07C0 , $0000 , $0000 , \ 9 $0000 , $0000 , $0000 , $0000 , $0380 , $0380 , $0380 , $0000 , $0000 , $0380 , $0380 , $0380 , $0000 , $0000 , $0000 , $0000 , \ : $0000 , $0000 , $0000 , $0000 , $0380 , $0380 , $0380 , $0000 , $0000 , $0380 , $0380 , $0380 , $0700 , $0000 , $0000 , $0000 , \ ; $0000 , $0070 , $00E0 , $01C0 , $0380 , $0700 , $0E00 , $1C00 , $1C00 , $0E00 , $0700 , $0380 , $01C0 , $00E0 , $0070 , $0000 , \ < $0000 , $0000 , $0000 , $0000 , $0000 , $3FFC , $3FFC , $0000 , $0000 , $3FFC , $3FFC , $0000 , $0000 , $0000 , $0000 , $0000 , \ = $0000 , $1C00 , $0E00 , $0700 , $0380 , $01C0 , $00E0 , $0070 , $0070 , $00E0 , $01C0 , $0380 , $0700 , $0E00 , $1C00 , $0000 , \ > $0000 , $03C0 , $0FF0 , $1E78 , $1838 , $0038 , $0070 , $00E0 , $01C0 , $01C0 , $0000 , $0000 , $01C0 , $01C0 , $01C0 , $0000 , \ ? $0000 , $0FF8 , $1C1C , $1C1C , $1C1C , $1C1C , $1CFC , $1CFC , $1CFC , $1CFC , $1C00 , $1C00 , $1C00 , $1FF0 , $07F8 , $0000 , \ @ $0000 , $0000 , $03C0 , $07E0 , $0E70 , $1C38 , $1C38 , $1C38 , $1C38 , $1FF8 , $1C38 , $1C38 , $1C38 , $1C38 , $0000 , $0000 , \ A $0000 , $0000 , $1FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 , $0FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $1FF0 , $0000 , $0000 , \ B $0000 , $0000 , $07F0 , $0E38 , $1C38 , $1C00 , $1C00 , $1C00 , $1C00 , $1C00 , $1C00 , $1C38 , $0E38 , $07F0 , $0000 , $0000 , \ C $0000 , $0000 , $1FE0 , $0E70 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $0E70 , $1FE0 , $0000 , $0000 , \ D $0000 , $0000 , $1FF8 , $0E18 , $0E08 , $0E00 , $0E30 , $0FF0 , $0FF0 , $0E30 , $0E00 , $0E08 , $0E18 , $1FF8 , $0000 , $0000 , \ E $0000 , $0000 , $1FF8 , $0E18 , $0E08 , $0E00 , $0E30 , $0FF0 , $0FF0 , $0E30 , $0E00 , $0E00 , $0E00 , $1F00 , $0000 , $0000 , \ F $0000 , $0000 , $07F0 , $0E38 , $1C38 , $1C38 , $1C00 , $1C00 , $1C00 , $1CF8 , $1C38 , $1C38 , $0E38 , $07F8 , $0000 , $0000 , \ G $0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1FF0 , $1FF0 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0000 , $0000 , \ H $0000 , $0000 , $0FE0 , $0380 , $0380 , $0380 , $0380 , $0380 , $0380 , $0380 , $0380 , $0380 , $0380 , $0FE0 , $0000 , $0000 , \ I $0000 , $0000 , $01FC , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $3870 , $3870 , $3870 , $3870 , $0FE0 , $0000 , $0000 , \ J $0000 , $0000 , $1E38 , $0E38 , $0E70 , $0EE0 , $0FC0 , $0F80 , $0F80 , $0FC0 , $0EE0 , $0E70 , $0E38 , $1E38 , $0000 , $0000 , \ K $0000 , $0000 , $1F00 , $0E00 , $0E00 , $0E00 , $0E00 , $0E00 , $0E00 , $0E00 , $0E08 , $0E18 , $0E38 , $1FF8 , $0000 , $0000 , \ L $0000 , $0000 , $1C1C , $1E3C , $1F7C , $1FFC , $1FFC , $1DDC , $1C9C , $1C1C , $1C1C , $1C1C , $1C1C , $1C1C , $0000 , $0000 , \ M $0000 , $0000 , $1C1C , $1C1C , $1E1C , $1F1C , $1F9C , $1DDC , $1CFC , $1C7C , $1C3C , $1C1C , $1C1C , $1C1C , $0000 , $0000 , \ N $0000 , $0000 , $03E0 , $07F0 , $0E38 , $1C1C , $1C1C , $1C1C , $1C1C , $1C1C , $1C1C , $0E38 , $07F0 , $03E0 , $0000 , $0000 , \ O $0000 , $0000 , $1FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 , $0FF0 , $0E00 , $0E00 , $0E00 , $0E00 , $1F00 , $0000 , $0000 , \ P $0000 , $0000 , $03E0 , $0F78 , $0E38 , $1C1C , $1C1C , $1C1C , $1C1C , $1C7C , $1CFC , $0FF8 , $0FF8 , $0038 , $00FC , $0000 , \ Q $0000 , $0000 , $1FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 , $0FF0 , $0E70 , $0E38 , $0E38 , $0E38 , $1E38 , $0000 , $0000 , \ R $0000 , $0000 , $0FF0 , $1C38 , $1C38 , $1C38 , $1C00 , $0FE0 , $07F0 , $0038 , $1C38 , $1C38 , $1C38 , $0FF0 , $0000 , $0000 , \ S $0000 , $0000 , $1FFC , $19CC , $11C4 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $07F0 , $0000 , $0000 , \ T $0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ U $0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 , $0000 , $0000 , \ V $0000 , $0000 , $1C1C , $1C1C , $1C1C , $1C1C , $1C1C , $1C9C , $1C9C , $1C9C , $0FF8 , $0FF8 , $0770 , $0770 , $0000 , $0000 , \ W $0000 , $0000 , $1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 , $0380 , $07C0 , $0EE0 , $1C70 , $1C70 , $1C70 , $0000 , $0000 , \ X $0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 , $0380 , $0380 , $0380 , $0FE0 , $0000 , $0000 , \ Y $0000 , $0000 , $1FF8 , $1C38 , $1838 , $1070 , $00E0 , $01C0 , $0380 , $0700 , $0E08 , $1C18 , $1C38 , $1FF8 , $0000 , $0000 , \ Z $0000 , $0000 , $07F0 , $0700 , $0700 , $0700 , $0700 , $0700 , $0700 , $0700 , $0700 , $0700 , $0700 , $07F0 , $0000 , $0000 , \ [ $0000 , $0000 , $1000 , $1800 , $1C00 , $0E00 , $0700 , $0380 , $01C0 , $00E0 , $0070 , $0038 , $001C , $0007 , $0000 , $0000 , \ $0000 , $0000 , $07F0 , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $07F0 , $0000 , $0000 , \ ] $0000 , $0180 , $03C0 , $07E0 , $0E70 , $1C38 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ^ $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $7FFF , $7FFF , \ _ $0000 , $0000 , $1C00 , $1C00 , $0700 , $0700 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ' $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $0070 , $0070 , $0FF0 , $1C70 , $1C70 , $1C70 , $0FD8 , $0000 , $0000 , \ a $0000 , $0000 , $1E00 , $0E00 , $0E00 , $0E00 , $0FF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $1BF0 , $0000 , $0000 , \ b $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C70 , $1C70 , $1C00 , $1C00 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ c $0000 , $0000 , $00F8 , $0070 , $0070 , $0070 , $0FF0 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FD8 , $0000 , $0000 , \ d $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C70 , $1C70 , $1FF0 , $1C00 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ e $0000 , $0000 , $03E0 , $0770 , $0770 , $0700 , $0700 , $1FE0 , $1FE0 , $0700 , $0700 , $0700 , $0700 , $1FC0 , $0000 , $0000 , \ f $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FD8 , $1C70 , $1C70 , $1C70 , $1C70 , $0FF0 , $07F0 , $0070 , $1C70 , $0FE0 , \ g $0000 , $0000 , $1E00 , $0E00 , $0E00 , $0E00 , $0EF0 , $0F38 , $0F38 , $0E38 , $0E38 , $0E38 , $0E38 , $1E38 , $0000 , $0000 , \ h $0000 , $0000 , $01C0 , $01C0 , $01C0 , $0000 , $0FC0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $0FF8 , $0000 , $0000 , \ i $0000 , $0000 , $0070 , $0070 , $0070 , $0000 , $03F0 , $0070 , $0070 , $0070 , $0070 , $0070 , $0070 , $1C70 , $0CF0 , $07E0 , \ j $0000 , $0000 , $1E00 , $0E00 , $0E00 , $0E00 , $0E38 , $0E70 , $0EE0 , $0FC0 , $0EE0 , $0E70 , $0E38 , $1E38 , $0000 , $0000 , \ k $0000 , $0000 , $0FC0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $0FF8 , $0000 , $0000 , \ l $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FF8 , $1C9C , $1C9C , $1C9C , $1C9C , $1C9C , $1C9C , $1C9C , $0000 , $0000 , \ m $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FE0 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0000 , $0000 , \ n $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FE0 , $0000 , $0000 , \ o $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1BF0 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $0FF0 , $0E00 , $0E00 , $1F00 , \ p $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FB0 , $38E0 , $38E0 , $38E0 , $38E0 , $38E0 , $1FE0 , $00E0 , $00E0 , $01F0 , \ q $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1EF0 , $0FF8 , $0F38 , $0E00 , $0E00 , $0E00 , $0E00 , $1F00 , $0000 , $0000 , \ r $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0FE0 , $1C30 , $1C30 , $0F80 , $03E0 , $1870 , $1870 , $0FE0 , $0000 , $0000 , \ s $0000 , $0000 , $0000 , $0100 , $0300 , $0700 , $1FF0 , $0700 , $0700 , $0700 , $0700 , $0770 , $0770 , $03E0 , $0000 , $0000 , \ t $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0FD8 , $0000 , $0000 , \ u $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1C70 , $1C70 , $1C70 , $1C70 , $1C70 , $0EE0 , $07C0 , $0380 , $0000 , $0000 , \ v $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1C1C , $1C1C , $1C1C , $1C9C , $1C9C , $0FF8 , $0770 , $0770 , $0000 , $0000 , \ w $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1CE0 , $1CE0 , $0FC0 , $0780 , $0780 , $0FC0 , $1CE0 , $1CE0 , $0000 , $0000 , \ x $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0E38 , $0E38 , $0E38 , $0E38 , $0E38 , $07F0 , $03E0 , $00E0 , $01C0 , $1F80 , \ y $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $1FE0 , $18E0 , $11C0 , $0380 , $0700 , $0E20 , $1C60 , $1FE0 , $0000 , $0000 , \ z $0000 , $0000 , $01F8 , $0380 , $0380 , $0380 , $0700 , $1C00 , $1C00 , $0700 , $0380 , $0380 , $0380 , $01F8 , $0000 , $0000 , \ { $0000 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $01C0 , $0000 , \ | $0000 , $0000 , $1F80 , $01C0 , $01C0 , $01C0 , $00E0 , $0038 , $0038 , $00E0 , $01C0 , $01C0 , $01C0 , $1F80 , $0000 , $0000 , \ } $0000 , $0000 , $1F1C , $3B9C , $39DC , $38F8 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , $0000 , \ ~ |
Автор: | Ilya [ Пт янв 22, 2016 00:31 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Ну и touch Код: \
\ touch1.f \ ~ilya \ 24.01.2014 \ Контроллер: ADS7843/TSC2046 \ Controller: ADS7843/TSC2046 \ Touch_CLK -- PH3 \ Touch_CS -- PE3 \ Touch_DIN -- PL1 \ Touch_DOUT -- PE5 \ Touch_IRQ -- PE4 marker =touch= \ &46 constant PORTE \ Data Register, Port E \ &258 constant PORTH \ PORT H Data Register \ &267 constant PORTL \ PORT L Data Register PORTH 3 portpin: T_CLK \ PORTE 3 portpin: T_CS \ PORTL 1 portpin: T_DIN \ PORTE 5 portpin: T_OUT \ PORTE 4 portpin: T_IRQ \ PORTE 3 port:hi t_csh PORTE 3 port:lo t_csl &105 constant EICRA \ External Interrupt Control Register A &106 constant EICRB \ External Interrupt Control Register B &61 constant EIMSK \ External Interrupt Mask Register &10 constant INT4Addr \ External Interrupt Request 4 variable temp_x variable temp_y variable datacount \ Посылаем байт в индикатор \ Submitting byte indicator : wr-touch ( c -- ) t_csl &8 0 do dup i lshift [ $80 ] literal and if T_DIN high else T_DIN low then T_CLK low T_CLK high loop drop ; \ Принимаем данные (12 бит) из индикатора \ Receiving data (12 bits) from the indicator : rd-touch ( -- n ) 0 t_csl &12 0 do T_CLK high T_CLK low 1 lshift T_OUT pin_high? if 1 or then loop ; : _read-touch ( c -- n ) wr-touch T_CLK high T_CLK low rd-touch ; : read-touch $90 _read-touch \ читаем x $d0 _read-touch \ читаем y dup 1 4095 within ( x y -- x y fy ) rot dup 1 4095 within ( x y fy -- y fy x fx ) rot and if ( temp_x +! temp_y +! ) 1 datacount +! else drop drop 0 0 then ; variable touch-x variable touch-y variable touch-state \ Есть реакция от тача \ Any response from the sensor \ Получаем значение x,y \ We get value x,y : read-touch-xy ( -- x y ) \ 0 temp_x ! 0 temp_y ! 0 datacount ! 2 0 do read-touch temp_x +! temp_y +! 20 ms loop temp_x @ datacount @ / \ усредняем значение x (average value x) 100 1025 */ 400 swap - dup touch-x ! temp_y @ datacount @ / \ усредняем значение y (average value y) 100 1570 */ dup touch-y ! \ 1 touch-state ! ; \ Есть касание ? \ There are touch ? : touch? ( -- f ) T_IRQ pin_low? ; : init-touch T_IRQ pin_input T_IRQ pin_pullup_on T_CS pin_output T_CLK pin_output T_OUT pin_input T_DIN pin_output t_csl T_CLK high T_CLK low \ ['] isr-t INT4Addr int! \ \ 0 EICRB ! \ Прерывение по спаду \ $10 EIMSK c@ or EIMSK c! \ Включаем прерывания от сенсора ; \ marker =test= \ : test \ lcd-init \ init-touch +int \ begin \ 300 ms \ read-touch-xy \ touch? \ if \ read-touch-xy \ cr . space . \ 5 1 setXY s" X: " lcd_typef 7 1 setXY touch-x @ lcd_. \ 12 1 setXY s" Y: " lcd_typef 15 1 setXY touch-y @ lcd_. \ then \ \ again \ ; |
Автор: | chu [ Пт янв 22, 2016 09:28 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Ilya писал(а): В принципе успел адаптировать либу TFT (граф примитивы+печать) и ещё добавил touch. Может передашь amForth ребятам? Зазипую, оставлю на roboforum'е, сообщу в amforth-devel — Development discussion and user support. А чего с лицензией? Amforth сейчас под GPLv3, кажись. Я не бельмес в копирайтах. У меня когда спрашивали, я отмолчался, а потом американец "мои либы" выложил в комьюнити. Ilya писал(а): Держи! RTC для stm32l153rb Дякую вэри мач. Ilya писал(а): Надеюсь админ меня не загонит в вечный бан. ХЗ |
Автор: | chu [ Пт янв 22, 2016 10:04 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Посмотрел тексты, выложить пока можно только touch1.f, кажется. А для hx8352graphics.frt требуются какие-то include'ы. "Просвещённый запад" не поймет. ЗЫ. Кто б просветил меня, темного, в двух словах на пальцах про эти лицензии... |
Автор: | Ilya [ Пт янв 22, 2016 11:32 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
chu писал(а): Посмотрел тексты, выложить пока можно только touch1.f, кажется. А для hx8352graphics.frt требуются какие-то include'ы. "Просвещённый запад" не поймет. ЗЫ. Кто б просветил меня, темного, в двух словах на пальцах про эти лицензии... Сорри! Забыл выложить 1-й файл (hx8352.f). TFT написал Craig A. Lindley, а лишь обработал напильником и прикрутил touch. Кину на электропочту. По поводу RTC : st32l152.f - основные константы. Генерится скриптом. В каталоге common/registergenerator имеется скрипт и мануал. interrupts.f - ясно из названия. Вышлю. |
Автор: | KPG [ Вс янв 24, 2016 11:17 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Вроде ещё не было ссылки Raspberry Pi JonesFORTH O/S P.S. Код: pijFORTHos forked from M2IHP13-admin/JonesForth-arm
|
Автор: | Ilya [ Пн фев 08, 2016 02:33 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Уважаемый! У меня закрались сомнения по поводу либы 1-wire, если у тебя есть возможность, то потести Plz! Всё портирование заключается в замене значений тут: Код: : 1w.init %11 5 2* lshift gpioa_pupdr bic! ; : 1w.output %01 5 2* lshift gpioa_moder bis! ; : 1w.input %01 5 2* lshift gpioa_moder bic! ; : 1w.out0 32 16 lshift gpioa_bsrr bis! ; : 1w.out1 32 gpioa_bsrr bis! ; : 1w.in 32 gpioa_idr bit@ ; ЗЫ Я малость "поджарил" (перепутал полярность питалова) свои ds18b20 при переезде на серию F. ЗЗЫ Ты ещё не пробовал разобраться с PLL? Планирую перестроить свой "умный дом" именно на данном девайсе. |
Автор: | chu [ Пн фев 08, 2016 10:47 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Привет. К сожалению, не смогу (пока) выполнить твою просьбу, не достиг еще должного "просветления" ни в stm'ах ни в mecrisp'е. 1. немного освоил Код: compiletoram? ( -- ? ) Currently compiling into ram ? , научился чистить память.compiletoram ( -- ) Makes ram the target for compiling compiletoflash ( -- ) Makes flash the target for compiling eraseflash 2. сильно притормаживаю на "особенностях" mecrisp'а. например отсутствует стандартное literal вместо него есть literal, и теперь надо делать так Код: : name ... bla-bla [ decimal nuber literal, ] bla-bla ; .я в ступоре: Код: 0-foldable ( -- ) Current word becomes foldable with zero constants это что такое?1-foldable ( -- ) Current word becomes foldable with one constants 2-foldable ( -- ) Current word becomes foldable with two constants 3-foldable ( -- ) Current word becomes foldable with 3 constants ... 7-foldable ( -- ) Current word becomes foldable with 7 constants 3. написал стопку в десяток строчек вспомогательных определений для облегчения ковыряния в ливере cortex'а. параллельно уже читаю Ю Д., Ядро CORTEX-M3 компании ARM(2012).djvu, the definitive guid to the arm cortex M3.pdf Discovering the STM32 Microcontroller.pdf, STM32F100 Reference Manual.pdf и тому подобное... метод "научного тыка" рулит! 4. вопросы, вопросы... вот в mecrisp'е для "ногодрыжества" используется метод побитового доступа bit-band? не уверен. а это уже напрямую касается 1-wire. как я понял, в stm'ах для delay'ев кошерно пользовать таймеры (их дофига). снова 1-wire. а питание 3.3v\5.0v у ds18b20 влияет на его временные параметры или нет? вопросы... Похоже, весь физический уровень для 1-wire надо делать заново... |
Автор: | Ilya [ Ср фев 10, 2016 02:17 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
chu писал(а): Привет. К сожалению, не смогу (пока) выполнить твою просьбу, не достиг еще должного "просветления" ни в stm'ах ни в mecrisp'е. 1. немного освоил Код: eraseflash , научился чистить память.2. сильно притормаживаю на "особенностях" mecrisp'а. например отсутствует стандартное literal вместо него есть literal, и теперь надо делать так Код: : name ... bla-bla [ decimal nuber literal, ] bla-bla ; .я в ступоре: Код: 0-foldable ( -- ) Current word becomes foldable with zero constants это что такое?3. написал стопку в десяток строчек вспомогательных определений для облегчения ковыряния в ливере cortex'а. параллельно уже читаю метод "научного тыка" рулит! 4. вопросы, вопросы... вот в mecrisp'е для "ногодрыжества" используется метод побитового доступа bit-band? не уверен. а это уже напрямую касается 1-wire. как я понял, в stm'ах для delay'ев кошерно пользовать таймеры (их дофига). снова 1-wire. а питание 3.3v\5.0v у ds18b20 влияет на его временные параметры или нет? вопросы... Похоже, весь физический уровень для 1-wire надо делать заново... 1. Я правильно понимаю, что аналог Код: marker по "местному" Код: cornerstone при "компиляции" от текущего HERE и до конца текущего "сектора" флэш забивает 0xFFFF, а при исполнении соответственно выполняем Код: eraseflashfrom ?2. Я тоже пытался использовать Код: literal, , на что мне главный буржуин сказал так:Цитата: A hint: Instead of [ 1 17 lshift literal, ] exti_pr bis! just write 1 17 lshift exti_pr bis! Mecrisp-Stellaris can do constant folding and will do it automatically. Look: : 11+ 3 dup * 2 + + ; ok. see 11+ 200012EE: B500 push { lr } 200012F0: 360B adds r6 #B 200012F2: BD00 pop { pc } ok. и попросил убрать Код: literal, из моих исходников!0-foldable - сам нахожусь в недоумении. 3. Тут удобнее тыкать. Флэш не слетает. 4. для простоты использую bis! & bic! |
Автор: | Ilya [ Ср фев 10, 2016 04:36 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
А-а-а! Починил "свою" 1w Ошибка была в моей либе us&ms . "Особенности" конфигурирования! RTFM!!! |
Автор: | chu [ Вс фев 21, 2016 11:04 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Ilya писал(а): В принципе я начинал курить с NVIC (прерывания) Привет! Победил NVIC? В документе Cortex™-M3 Technical Reference Manual Revision: r1p1 пишут 8.1 About the NVIC писал(а): You can only fully access the NVIC from privileged mode, but you can pend interrupts in user-mode if you enable the Configuration Control Register (see Configuration Control Register on page 8-25). Any other user-mode access causes a bus fault. И вот мучает меня вопрос - mecrisp в каком режиме работает: privileged или user-mode? Пытаюсь прочесть спец.регистр CONTROL: Код: : control@ dup [ $F3EF8614 , ] inline ; ok. это ассемблерная инструкция mrs r6, control Облом-с: Код: ok. control@ w0b.r Unhandled Interrupt 00000003 ! Unhandled Interrupt 00000003 ! . . Unhandled Interrupt 00000003 ! Код команды верный, сверился с ассемблером от осо: Код: OP{ 0xF3EF8000 }OP mrs ЗЫ. Немецкий в исходниках выносит моск напрочь... |
Автор: | KPG [ Вс фев 21, 2016 11:12 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Chu По какой инструкции (шагов) собирается Mecrisp из исходников. P.S. VFX для STM32 от MPE не "мучил"? Тоже достаточно интересный "квест" |
Автор: | chu [ Вс фев 21, 2016 12:52 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
Не собирал, взял готовую прошивку для STM32VL DISCOVERY. VFX не мучал. Раздражает документация по STM32. Куча мануалов, в которых информация дублируется. Надо постараться, чтобы найти ответы на возникающие вопросы. Например так и не нашел исчерпывающего ответа на вопрос: какие инструкции и регистры(ресурсы) недоступны в непривилегированном user режиме ... А на mecrisp описание практически отсутствует. И этот долбаный дойч-инглиш-ассемблер в сырцах... AmForth более интеллигентно сделан. |
Автор: | Ilya [ Вс фев 21, 2016 16:13 ] |
Заголовок сообщения: | Re: Применение Форта для ARM, AVR, MSP430, PIC ... |
chu писал(а): Ilya писал(а): В принципе я начинал курить с NVIC (прерывания) Привет! Победил NVIC? ХЗ в каком режиме это всё работает, но с NVIC пока проблем не имею. Куда интереснее ковырять RCC! Вот тут надо быть повнимательнее и очень помогают блок-схемы из ДШ. Вот тут малость пободался с переносом ms&us на f429. Разгоняю камень через PLL, на шине частота 30 MHz, но не заметил ссылочку "если прескалер >1, то такт. частота таймеров x2 ...". Я в ассемблерные дебри не лезу пока - благо дури хватает. Меня попёрло и теперь у меня уже 3-и СТМ-ки! Сейчас переношу либы на stm32f411. ЗЫ А попробуй написать письмо главному буржую. Чёй-то он на последнее моё письмо пока не ответил, а ведь собирался выпустить новый релиз в январе. |
Страница 6 из 17 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |