Forth http://fforum.winglion.ru/ |
|
amForth залить в железку http://fforum.winglion.ru/viewtopic.php?f=39&t=2618 |
Страница 15 из 15 |
Автор: | chu [ Пн мар 16, 2015 11:05 ] |
Заголовок сообщения: | Re: amForth залить в железку |
KPG писал(а): ... Не понятно как в macros.asm in_ out_ влияют на появление ошибок для atmega64 ... я в файле ...\core\words\no-jtag.asm сделал так Код: ; ( -- ) ; MCU ; disable jtag at runtime VE_NOJTAG: .dw $FF05 .db "-jtag",0 .dw VE_HEAD .set VE_HEAD = VE_NOJTAG XT_NOJTAG: .dw PFA_NOJTAG PFA_NOJTAG: cli .ifdef MCUCSR in_ temp0, MCUCSR .else in_ temp0, MCUCR .endif ori temp0, ( 1<<JTD) .ifdef MCUCSR out_ MCUCSR, temp0 out_ MCUCSR, temp0 ; needs to be done twice within 4 cycles .else out_ MCUCR, temp0 out_ MCUCR, temp0 ; needs to be done twice within 4 cycles .endif sei jmp_ DO_NEXT такая же ситуёвина со словом ( mode -- ) sleep ...\core\words\sleep.asm Код: ; ; sleep ( mode -- ) ; ; mode selects the type of sleep mode to use. Refer to the ; SMCR documentation for details. The following table is ; based on the ATmega328P docs. ; ; 0 = Idle ; 1 = ADC noise reduction ; 2 = Power down ; 3 = Power save ; 4 = Reserved ; 5 = Reserved ; 6 = Standby ; 7 = External standby ; ; Note that on the ATmega328P, Idle mode is the only sleep that ; leaves interrupts enabled AND the USART running. This means ; you can wake up out of Idle mode just by sending a char to the ; USART. For all other sleep modes, you must either use reset ; or provide some kind of timed or external event to wake up; ; the USART won't work. ; ; ( mode -- ) ; MCU ; put the controller into the specified sleep mode VE_SLEEP: .dw $ff05 .db "sleep", 0 .dw VE_HEAD .set VE_HEAD = VE_SLEEP XT_SLEEP: .dw PFA_SLEEP PFA_SLEEP: andi tosl, 7 ; leave only legal mode bits .ifdef SMCR lsl tosl ; move to correct location (bits 3-1) ori tosl, 1 ; set the SE bit out_ SMCR, tosl ; set the sleep config sleep ; nighty-night out_ SMCR, zerol ; 0 protects against accidental sleeps .else ; 0:15 28.02.2013 chu in_ tosh, MCUCR ; save Interrupt Sense Control bits andi tosh, 0x0F ; se=0 sm=idle 0:15 28.02.2013 swap tosl ; move to correct location (bits 6-4) ori tosl, ( 1<<SE ) ; set the SE bit or tosl, tosh ; restore Snterrupt Sense Control bits out_ MCUCR,tosl ; set the sleep config sleep ; nighty-night out_ MCUCR,tosh .endif loadtos ; pop argument from stack jmp_ DO_NEXT ; last 1:06 09.04.2013 chu правда в последних релизах эти слова отсутствуют (почемуто)... зы. атымели такия атымели |
Автор: | KPG [ Чт мар 19, 2015 17:42 ] |
Заголовок сообщения: | Re: amForth залить в железку |
Попробовал скомпилить последний релиз. Собралось с некоторыми варнингами начиная с Atmega16 Но что то опять где то Uart или прошивка не запускается в кристале или Proteus/ P.S. Хотелось бы, что бы после сборки на "произвольный" кристал и например тест в Proteus сборка откликалась по Uart Что этому может поспособствовать? (и какие могут быть рекомендации) |
Автор: | chu [ Чт мар 19, 2015 19:24 ] |
Заголовок сообщения: | Re: amForth залить в железку |
KPG писал(а): Хотелось бы, что бы после сборки на "произвольный" кристал... угу, хотелось бы... KPG писал(а): ... и например тест в Proteus ... насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio ) а с uart'ом да, раньше случались проблемы. связано было с кривой инициализацией приемопередатчика, из-за чего "устаревшие" контроллеры на связь не выходили. но сейчас (вроде как) это исправлено. KPG писал(а): ...и какие могут быть рекомендации chu писал(а): Это я на сторонних сайтах говорю: amforth - без проблем!
а на самом деле основная проблема - дотошная внимательность и обьемная рутина |
Автор: | KPG [ Вс апр 12, 2015 02:10 ] |
Заголовок сообщения: | Re: amForth залить в железку |
Заметил одну "особенность" при сборке amForth5.8 для Atmega162. Всё собралось, но первый Uart не заработал пока в template не оставил uart, вместо (логически верного uart_0 файла) и подправил не совпавшие названия меток (добавив 0 в названии меток для первого Uart) P.S. В Proteus всё равно не получилось запустить и для "произвольного" кристалла может не собраться из коробки. Для режима самопрограммирования достаточно разместить слова отмеченные в листинге для размещения в бут секторе(порядка 100 байт используя org директиву) и поэтому бут сектор в битах конфигурации может быть минимально возможным (например 128 байт если кристалл позволит) |
Автор: | KPG [ Ср апр 15, 2015 18:02 ] |
Заголовок сообщения: | Re: amForth залить в железку |
chu писал(а): насколько я помню, для Proteus'а надо как то хитро прошивку собирать ( в Atmel Studio ) А через ключи в bat файле? P.S. Попробовал твой uploader под Win7 64 как то сразу не заработал пришлось провести некоторую "изыскательскую" работу над кодом загрузчика и библиотекой работы с СOM портом что бы понять как не работает (в одном локальном месте так ещё и не понял как нарушается баланс стека в коде . В целом сейчас как то работает (отлаживал под АmForth 5.8 ), но есть некоторые ещё шероховатости в приеме ответных посылок (приходит в ответном считывании после отправки 0х0D несколько подтверждающих > обычно 2 е последовательности с возможными вариациями) И ещё код не хочет первоначально работать с СOM портом, а только после того как сначала отработала программа TeraTerm. Пробовал через ТераТерм загружать код, но бывает возникают какие то сбои на ровном месте и использование задержек в настройках COM порта не помогает. |
Автор: | KPG [ Вт июн 23, 2015 19:13 ] |
Заголовок сообщения: | Re: amForth залить в железку |
В библиотечном файле quotations.frt есть "небольшая" прореха приводящая к неработоспособности кода в последних сборках Код: \ anonymous definitions in a definition \ typical usage \ : foo ... [: some words ;] ... ; \ \ is equivalent to \ \ :noname some words ; Constant #temp# \ : foo ... #temp# ... ; \ : [: ( -- quotation-sys ) postpone ahead :noname ; immediate : ;] ( compile-time: quotation-sys -- ; run-time: -- xt ) postpone ; ] \ в этом месте добавил >r postpone then r> postpone literal ] ; immediate Тест кода из amForth Код: \ anonymous definitions in a definition : if-else ( ... f xt1 xt2 -- ... ) \ Postscript-style if-else rot if drop else nip then execute ; : test ( f -- ) [: ." true" ;] [: ." false" ;] if-else ; 1 test cr \ writes "true" 0 test cr \ writes "false" P.S. Возможно имеет смысл сообщить о выявленном дефекте кода. В некоторых файлах не казаны зависимости (например, что bitnames требует builds> определение. KPG писал(а): Пробовал через ТераТерм загружать код, но бывает возникают какие то сбои на ровном месте и использование задержек в настройках COM порта не помогает. В конфигурации COM API указал время тайминга по записи 0 - фиксируемые текущие ошибки пропали |
Автор: | chu [ Вт июн 30, 2015 06:59 ] |
Заголовок сообщения: | Re: amForth залить в железку |
KPG писал(а): В библиотечном файле quotations.frt есть "небольшая" прореха приводящая к неработоспособности кода в последних сборках ... сообщить о выявленном дефекте кода. amforth-devel — Development discussion and user support писал(а): ... my Russion needs probably some refresh. After your hint I
did some checks myself, and indeed the quotations did not work. The problem was a wrong LITERAL, introduced with release 5.6, that got fixed by re-using the previous version of literal.asm. Done with svn rev1866. Thanks for the hint and greetings to the Russian forthers! Matthias |
Автор: | KPG [ Пт авг 28, 2015 01:01 ] |
Заголовок сообщения: | Re: amForth залить в железку |
На страничке amForth появился раздел Проекты на amForth с описанием |
Страница 15 из 15 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |