Планы на ближайшее время

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Планы на ближайшее время

Post by SfS »

Чтобы у читателей темы не создавалось впечатления, что в NedoPC-90 начался застой, буду кратко писать тут над чем работаю. Присоединяйтесь (в смысле - если кто над чем работает в этой же области - постите сюда планы, проекты, идеи) :)

Сейчас идет работа над следующими вещами:

1. Прикручивание NedoPC-90.AVROS к контроллеру ATMega128.
2. Прикручивание поддержки FLASH-памяти к NedoPC-90.AVROS.
3. Прикручивание клавиатуры (матрица 4х4) к NedoPC-90.AVROS.

Как будут результаты (то есть то, что можно сфотать и показать) - пришлю.
acidrain
Senior
Posts: 159
Joined: 28 Feb 2005 02:31
Location: Krasnodar, Russia

Re: Планы на ближайшее время

Post by acidrain »

SfS wrote:Чтобы у читателей темы не создавалось впечатления, что в NedoPC-90 начался застой, буду кратко писать тут над чем работаю. Присоединяйтесь (в смысле - если кто над чем работает в этой же области - постите сюда планы, проекты, идеи) :)

Сейчас идет работа над следующими вещами:

1. Прикручивание NedoPC-90.AVROS к контроллеру ATMega128.
2. Прикручивание поддержки FLASH-памяти к NedoPC-90.AVROS.
3. Прикручивание клавиатуры (матрица 4х4) к NedoPC-90.AVROS.

Как будут результаты (то есть то, что можно сфотать и показать) - пришлю.
Вот клава - это интересно. я пока с недопц-90 ничего не делал. А вот с мега8515 делаю, но к данной теме не относящееся. просто для того, чтоб понять, что как делается... Я ведь начинающий :)
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Re: Планы на ближайшее время

Post by SfS »

acidrain wrote:Вот клава - это интересно. я пока с недопц-90 ничего не делал.
А что тебя именно в прикручивании клавы интересует ? Это обычная матрица. 4 строки на 4 столбца. Опрос производим, подавая на строку 0 (остальные столбцы в 1) и считывая состояние столбцов. Чтобы опросить состояние всей клавиатуры надо 4 раза подать 0 на строки и 4 раза считать состояние столбцов. Ну и далее - задержки на дребезг и т.п., но это уже мелочи. Как опишу все в программе, так выложу новую версию NedoPC-90.AVROS.
acidrain wrote:А вот с мега8515 делаю, но к данной теме не относящееся. просто для того, чтоб понять, что как делается... Я ведь начинающий :)
Как это "не относящееся" ? Думаю и на меге8515 NedoPC-90.AVROS запустится без особых проблем. (На меге128 запустилась после исправления одной строчки в Makefile AVR-MCU=atmega128 и прошивки fuse-битов CKSEL0..3=0x0A, M103C=0).

Так что (я думаю) и на меге8515 все запустится после пары тычков.

Если есть вопросы - не стесняйся, спрашивай. Не факт, что на се отвечу, но чем смогу...
acidrain
Senior
Posts: 159
Joined: 28 Feb 2005 02:31
Location: Krasnodar, Russia

Re: Планы на ближайшее время

Post by acidrain »

SfS wrote:
acidrain wrote:Вот клава - это интересно. я пока с недопц-90 ничего не делал.
А что тебя именно в прикручивании клавы интересует ? Это обычная матрица. 4 строки на 4 столбца. Опрос производим, подавая на строку 0 (остальные столбцы в 1) и считывая состояние столбцов. Чтобы опросить состояние всей клавиатуры надо 4 раза подать 0 на строки и 4 раза считать состояние столбцов. Ну и далее - задержки на дребезг и т.п., но это уже мелочи. Как опишу все в программе, так выложу новую версию NedoPC-90.AVROS.
acidrain wrote:А вот с мега8515 делаю, но к данной теме не относящееся. просто для того, чтоб понять, что как делается... Я ведь начинающий :)
Как это "не относящееся" ? Думаю и на меге8515 NedoPC-90.AVROS запустится без особых проблем. (На меге128 запустилась после исправления одной строчки в Makefile AVR-MCU=atmega128 и прошивки fuse-битов CKSEL0..3=0x0A, M103C=0).

Так что (я думаю) и на меге8515 все запустится после пары тычков.

Если есть вопросы - не стесняйся, спрашивай. Не факт, что на се отвечу, но чем смогу...
Т.е. речь идет о механической клаве, как на спеке? а если пц клаву приделать? LordVader сделал для амиги на авр-ке контролер клавы...
Интересно, а Pelle C откомпилит аврос? =)
Спасибо за предложение о помощи! Буду рад замучать странными вопросами ;)))
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Re: Планы на ближайшее время

Post by SfS »

acidrain wrote: Т.е. речь идет о механической клаве, как на спеке? а если пц клаву приделать? LordVader сделал для амиги на авр-ке контролер клавы...
Речь идет (в данном случае) о телефонной клаве. Прикручивать клаву от писюка - смысла в большинстве случаев не имеет. Если тебе надо сложно и много рулить устройством - это проще и удобнее сделать через RS232й.
А для пульта управления каким-нибудь простым устройством достаточно обычной 16-кнопочной клавиатуры. На двустрочном текстовом индикаторе WP1602 нетрудно организовать систему меню. (О том как его прикрутить тут уже рассказывалось, поддержка его в ОС тоже есть).

Кстати, о клаве от писюка. У нас тут парни занимались ее прикручиванием к АВРке, но сам я не делал этого. Говорят, что проблем никаких особых нет.
acidrain wrote:Интересно, а Pelle C откомпилит аврос? =)
Спасибо за предложение о помощи! Буду рад замучать странными вопросами ;)))
Я даже не знаю что такое есть Pelle C. Но думаю - врядли откомпилирует без обработки напильником. Самое простое - скачай gcc, он свободный. И не заморачивайся :)
Дело в том, что сама ОСька при компиляции завязана на библиотеки avr-libc и я не уверен, что Pelle C в состоянии их понять.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Итак, клавиатура прикручена, написаны процедуры ввода чисел и менюшки. Причем, через макросы их можно сконфигурить не только к имеющемуся на сегодня индикатору WP1602, но и к любому другому.

Для этого достаточно иметь процедуры:

1. Очистки индикатора.
2. Позиционирования курсора.
3. Вывода символа в позицию курсора со сдвигом курсора на следующую позицию.
4. Получения символа с клавиатуры (или еще откуда, если клава не устраивает).

Управляющие клавиши определяются также через макросы.

Сейчас идет прикручивание FLASHки AT45DB081b объемом 8Мбит (4096 секторов по 264 байта каждый). Проблема собственно не в прикручивании, а в поддержке какойнибудь примитивной файловой системы.

Скоро (в ближайшую неделю наверное) причешу и выложу то, что будет достаточно отлажено.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Ну вот, флешка прикручена. Сейчас сделаю нормальную прозрачную работу для пользователя (API для работы с флэшкой). И все скопом выложу.

Кстати, я сейчас в отпуске, потому появляюсь редко. Через неделю выйду на работу - буду постоянно на связи.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:Ну вот, флешка прикручена. Сейчас сделаю нормальную прозрачную работу для пользователя (API для работы с флэшкой). И все скопом выложу.

Кстати, я сейчас в отпуске, потому появляюсь редко. Через неделю выйду на работу - буду постоянно на связи.
Ты как специально покрываешь те девайсы, которые я хочу заюзать в прототипе калькулятора-компьютера со встроенным языком программирования RW1 :)

Мне остается только интерпретатор байт-кода написать и компилятор с RW1 в байт-код на самом RW1 - и тогда штучка на уровне "Электроники МК-85" получится, а то и лучше :idea:
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: Ты как специально покрываешь те девайсы, которые я хочу заюзать в прототипе калькулятора-компьютера со встроенным языком программирования RW1 :)
Неудивительно. Ведь связка клавиатура-дисплей-процессор-память покрывает огромное количество устройтв - от калькулятора до системы управления стиральной машиной.
Shaos wrote:Мне остается только интерпретатор байт-кода написать и компилятор с RW1 в байт-код на самом RW1 - и тогда штучка на уровне "Электроники МК-85" получится, а то и лучше :idea:
То есть ты хочешь запихать в AVR запихать интерпретатор RW1 ? Это прекрасно, только работать будет небыстро.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Флешка

Post by SfS »

Флешка представлена как единый файл размером от 0 до 1048320 байт. (имеется ввиду флешка AT49DB081).

Работа с флешкой требует в памяти кэша раззмером 264 байта.
Сделал для флешки следующие функции:

int open() - проверяет есть ли флешка, форматирована ли она и т.п. возвращает код ошибки в зависимости от результата. (0 - успешное выполнение).

int close() - синхронизирует содержимое флешки с кэшэм, завершает работу с флешкой и возвращает 0. Если флешка была не открыта предварительно функцией open() - возвращает -1.

int read(char* buf, long int size) - считывает size байт в буфер buf. Возвращает количество считанных байт или код ошибки (-1), если флешка была не открыта предварительно функцией open().

int write(char* buf, long int size) - записывает size байт из буфера buf во флешку. Возвращает количество записанных байт или код ошибки (-1), если флешка была не открыта предварительно функцией open().


В общем все работает... НО! Не быстро - увы... 1мегабайт на ATmega128 - 8MГц пишется порядка 3х минут. То есть скорость записи (средняя) - всего около 5.5 Кбайт/сек. С другой стороны - вряд ли надо единовременно писать объемы больше нескольких Кбайт.

В общем судите сами для чего это все подходит, а для чего - нет. Скоро выложу исходники и схемы.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote:Мне остается только интерпретатор байт-кода написать и компилятор с RW1 в байт-код на самом RW1 - и тогда штучка на уровне "Электроники МК-85" получится, а то и лучше :idea:
То есть ты хочешь запихать в AVR запихать интерпретатор RW1 ? Это прекрасно, только работать будет небыстро.
Точнее интерпретатор байткода RW0. И в будущем - редактор и компилятор из RW1 в RW0. В первом приближении важна функциональность, а не скорость!
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: Точнее интерпретатор байткода RW0. И в будущем - редактор и компилятор из RW1 в RW0. В первом приближении важна функциональность, а не скорость!
Что касается интерпретатора - то я за. Только с RW я почти никак не знаком - только понаслышке.
Предусматривает ли этот самый RW возможность определения своих не-RW функций ? Чтобы, скажем, все времякритичные куски писать на асме и С, которые будут постоянно прошиты в программной памяти, а из RW обращаться с ними как со встроенными функциями языка ? Тогда ОС обретет именно смысл ОС - в ней будет сосредоточены все критические части плюс интерпретатор байт-кода.
Тогда для пользователя (то есть RW-программиста) расширение ОС будет равносильно добавлению новых команд-функций в язык RW.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote: Точнее интерпретатор байткода RW0. И в будущем - редактор и компилятор из RW1 в RW0. В первом приближении важна функциональность, а не скорость!
Что касается интерпретатора - то я за. Только с RW я почти никак не знаком - только понаслышке.
Предусматривает ли этот самый RW возможность определения своих не-RW функций ? Чтобы, скажем, все времякритичные куски писать на асме и С, которые будут постоянно прошиты в программной памяти, а из RW обращаться с ними как со встроенными функциями языка ? Тогда ОС обретет именно смысл ОС - в ней будет сосредоточены все критические части плюс интерпретатор байт-кода.
Тогда для пользователя (то есть RW-программиста) расширение ОС будет равносильно добавлению новых команд-функций в язык RW.
RW1 имеет специальную команду COMMAND N, где N - номер внешней операции, которая может быть реализована в коде процессора и иметь доступ ко всем регистрам и переменным виртуальной машины.

Вопрос - у тебя обязательно задавать лишь периодические действия, которые по прерыванию выполняются определенное кол-во раз в секунду или можно основную ветку программы тоже организовать?
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: RW1 имеет специальную команду COMMAND N, где N - номер внешней операции, которая может быть реализована в коде процессора и иметь доступ ко всем регистрам и переменным виртуальной машины.
А ей синоним дать можно ? Скажем нечто вроде

#define FileOpen(f) COMMAND 4(f)

чтобы понятнее писать было ?
Shaos wrote:Вопрос - у тебя обязательно задавать лишь периодические действия, которые по прерыванию выполняются определенное кол-во раз в секунду или можно основную ветку программы тоже организовать?
Конечно ! Все что в ../upl/main.c это обычная программа, которая начинается с функции main(). На прерывания вешаются только действия привязанные ко времени.

Если я правильно понял, то ты хочешь в основную ветку интерпритатор RW0 запихать ?

Я на досуге ознакомлюсь с RW поподробнее - может что еще попридумаю.
User avatar
Shaos
Admin
Posts: 24088
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote: RW1 имеет специальную команду COMMAND N, где N - номер внешней операции, которая может быть реализована в коде процессора и иметь доступ ко всем регистрам и переменным виртуальной машины.
А ей синоним дать можно ? Скажем нечто вроде

#define FileOpen(f) COMMAND 4(f)

чтобы понятнее писать было ?
Можно описать подпрограмму:

FileOpen() // A=f
{
command 4
}

и вызывать ее в виде FileOpen(f), где f может быть указателем на строку (первый аргумент автоматически передастся в регистр A):

def filename[10]="file.txt"
FileOpen(&filename) // A=&filename;CALL FileOpen
Я тут за главного - если что шлите мыло на me собака shaos точка net