Новая версия NedoPC-90.AVROS

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

Moderator: Shaos

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

Post by SfS »

Shaos wrote: Можно сделать один общий файл, например system/defs.h в котором будут написаны все разрешающие дефайны (закомментированные и раскомментированные), который будет инклудиться в каждый файл каталога system - в нем же можно будет обрабатывать условные варианты, типа для индикатора нужен NI-15 и т.д.
Можно конечно. Короче хочешь автоматом зависимости обрабатывать ? Я пока продумываю этот вариант. Но для конфига каждого отдельного устройства (адреса портов, режимы работы и т.п.) лучше иметь отдельный файл. Удобнее искать.

Наверное сделаю так. Структуру каталога system оставлю неизменной. Просто добавлю некий файл с описанием зависимостей, чтобы он при надобности включал то, чего не хватает. Подумаю и рожу чтонибудь.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Итак - новая версия! NedoPC-90.AVROS.v0.1.4.

Лежит все тут же: http://www.nedopc.org/nedopc/upload/Ned ... .4.tar.bz2
Версия оттестирована на AT90S8535 и ATMega128. При тестировании на ATMega128 была сохранена совместимость по ногам с интерфейсом NI-15. То есть теперь можно в модуль NedoPC-90.8535 смело втыкать ATmega128. Все будет пахать. Новый модуль назовем, скажем NedoPC-90.m128.

Состав модуля:
- центральный процессор - ATmega128.
- интерфейс NI-15. (через него цепляется, например, индикатор WP1602 как я писал ранее).
- порт RS232-0.
- порт RS232-1.(*)
- флешка AT45DB081 (1Mбайт) (*), цепляется по SPI.
- Матричная клавиатура 4х4 (16 кнопок)(*).

* - новое по сравнению с модулем NedoPC-90.8535.

Список изменений в NedoPC-90.AVROS.v0.1.4 по сравнению с NedoPC-90.AVROS.v0.1.3:

1. Добавлена возможность использования стандартными функциями printf() для печати на индикатор WP1602 (см. файл ../upl/main.c - там для этого надо раскомментировать две строчки).

2. Прддержка SPI-интерфейса. Файлы ../system/res_spi.h ../hl/spi.c ../hl/spi.h

3. Поддержка работы с FLASHкой AT45DB081. Файлы ../system/res_at45db081.h ../hl/at45db081.c ../hl/at45db081.h

4. Поддержка работы с клавиатурой (цепляется в моей версии на порт F, но можно конечно переопределить). Файлы ../system/res_key16.h ../hl/key16.c ../hl/key16.h

5. Добавлена поддержка второго UARTа. Теперь можно одновременно использовать UART0 и UART1. Настройки для каждого - абсолютно независимы, но находятся все в одном файле ../system/res_uart.h
Так же (поскольку UARTа теперь два) файл ../hl/uart.с превратился в два файла ../hl/uart0.с ../hl/uart1.с, файл ../hl/uart.h превратился в два файла ../hl/uart0.h ../hl/uart1.h.

6. Появился каталог ../fuses/
В нем хранятся файлы для тех процессоров, которые при стандартных fuse-битах не могут полноценно работать. Файлы с fuse-битами должные иметь имя ../fuses/fuse_<имя процессора>.hex. Если файл для процессора отсутствует, то fuse-биты не изменяются при программировании.

Ну вот вроде и все. Пользуйтесь, однако :)
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Post by CHRV »

Интересная сцылка http://cbsie.narod.ru/.
Видимо бывшие спектрумисяты на AVRах отрываются - оси пишут :).
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

CHRV wrote:Видимо бывшие спектрумисяты на AVRах отрываются - оси пишут :).
Ну я точно не с "отрыва" начал - по работе для авр-ок приходилось много писать. Все это пришло в некоторую систему, которую я потом причесал в единообразный вид и получилось нечто вроде ОС. В работе мне это помогало довольно сильно. Теперь я аврками по работе почти не знаимаюсь... Но не пропадать же коду ? Да и мне интересно поучавствовать в создании модулей типа того, что обсуждается в соседней теме.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Переход на версию avr-libc-1.2.5 и avr-gcc-3.4.4

Post by SfS »

Обновил линукс (у меня ALT стоит) и вместе с осталными пакетами обновились пакеты для AVR.

В связи с этим выяснилось, что avr-libc-1.2.5 не поддерживает некоторые макросы более старых версий avr-libc. В частности - макросы определенные в ina90.h. Этот файл там есть, но (как я понимаю) только для обратной совместимости и, в будущих версиях, от него скорее всего вообще откажутся.

Сейчас работаю над библиотекой обратной совместимости для того, чтобы NedoPC.AVROS собиралась на библиотеках, не ниже чем avr-libc-1.0.4. Думаю что день-другой на обкатку этого уйдет.

Параллельно пытаюсь освоить 40кнопочную клавиатуру, что прислал мне Shaos. Как все с ней выясню - напишу ее поддержку и выложу новую версию ОС. Ну и схему подключения клавиатуры к 5-вольтовым цепям заодно.

Правда тяжелый рок вчера скинул на меня новое испытание - сломавшийся смеситель в ванной и еще коечто из сантехники - так что придется наверное пол-вечера на починку потратить. Но это мелочи. Главное - процесс ползет.
User avatar
Shaos
Admin
Posts: 24086
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Переход на версию avr-libc-1.2.5 и avr-gcc-3.4.4

Post by Shaos »

SfS wrote:Обновил линукс (у меня ALT стоит) и вместе с осталными пакетами обновились пакеты для AVR.

В связи с этим выяснилось, что avr-libc-1.2.5 не поддерживает некоторые макросы более старых версий avr-libc. В частности - макросы определенные в ina90.h. Этот файл там есть, но (как я понимаю) только для обратной совместимости и, в будущих версиях, от него скорее всего вообще откажутся.

Сейчас работаю над библиотекой обратной совместимости для того, чтобы NedoPC.AVROS собиралась на библиотеках, не ниже чем avr-libc-1.0.4. Думаю что день-другой на обкатку этого уйдет.

Параллельно пытаюсь освоить 40кнопочную клавиатуру, что прислал мне Shaos. Как все с ней выясню - напишу ее поддержку и выложу новую версию ОС. Ну и схему подключения клавиатуры к 5-вольтовым цепям заодно.

Правда тяжелый рок вчера скинул на меня новое испытание - сломавшийся смеситель в ванной и еще коечто из сантехники - так что придется наверное пол-вечера на починку потратить. Но это мелочи. Главное - процесс ползет.
И это замечательно! :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24086
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote: Вот задаю я запуск разных задач по графику времен на разных уровнях - чем принципиально отличаются /upl/rtl_mac.h, rtl/hl_mac.h и osl/rtl_mac.h?
Почти ничем, это введено скорее для удобства. НО! В файле /upl/rtl_mac.h есть макросы типа T_INT_MAX_xx, которые вешают на прерывание процедуру, которая вызывыается с максимальной частотой (обычно - 1/256) тактовой. Минимальная же дискретность других уровней - 100мс.
Shaos wrote: Если конец одной задачи заползает на начало другой, она прервется? Или это зависит от уровня задачи, которая должна будет выполнится в этот момент?
Нет. Задачи одинаковые, по периоду вызова - равноправны. Но сущестыует защита от повторного вхождения. И еще - более быстрые задачи прерывают более медленные.
Странно ведёт себя счётчик прицепленный к 100 мс прерыванию - если программа крутится в цикле с getch и printf, то вроде считает правильно, а если программа крутится в циклах где одна арифметика создаётся ощущение, что счётчик вообще не вызывается - многозадачность чтоли кооперативная?
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: Странно ведёт себя счётчик прицепленный к 100 мс прерыванию - если программа крутится в цикле с getch и printf, то вроде считает правильно, а если программа крутится в циклах где одна арифметика создаётся ощущение, что счётчик вообще не вызывается - многозадачность чтоли кооперативная?
Как таковой "многозадачности" там вообще нет.
Просто в процедуре обработки прерывания таймера стоят счётчики. Они отсчитывают 100мс, 1с и так далее. И как отсчитают - вызывают процедуры (если они определены дефайнами). Так что любая очень длинная по времени процедура может завалить программу.

Вешать обильную арифметику (особенно с плавающей точкой) в перывание вообще не стоит в этой системе. Лучше выставлять флаги и обрабатывать объёмные вычисления в основном цикле.
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

После долгих и мучительный страданий от сгорания платы, решил выложить поправленную версию:

NedoPC-90.AVROS.v0.1.7

http://www.nedopc.org/nedopc/upload/Ned ... .7.tar.bz2

Список поддерживаемых (то есть протестированных) устройств и модулей:

-------------------------------------------------------------------------------
Поддерживаемые контроллеры (на которых тестировалась система):

AT90S8535
AT90S8515
ATiny2313
ATMega8515
ATMega8535
ATMega128
-------------------------------------------------------------------------------
Поддержка устройств:
-------------------------------------------------------------------------------
Встроенные:
TC0, TC1 (таймеры-счётчики)
UART0, UART1 (RS232)
PWM (ШИМ)
SPI (мастер)
I2C (мастер)
INT0 (прерывание)
ADC (АЦП)
EXTMEM (Контроллер внешнего ОЗУ)
-------------------------------------------------------------------------------
Внешние (имена модулей):
at45db081 (флеш 1Мбайт, через SPI).

key16 (матричная клавиатура 16 кнопок, подключается к встроенному
порту ввода-вывода).

keypad40 (40-кнопочная клавиатура от Shaos'a, выход - последовательный,
9600.
Может работать как с программным UART (используется TC1 и
INT0), так и с аппаратным UART на 9600).

ni_15 (шина NI-15. Работает с шиной, расположенной в адресном
пространстве внешней памяти с помощью модуля extmem или
эмулирует шину NI-15 с помощью встроенных портов ввода-вывода).

wp1602_ni15 (индикатор текстовый 2х16 символов, работает по шине NI-15).
-------------------------------------------------------------------------------
Модули аппаратно-независимые (или почти независимые :-) :
editor (строка редактирования, тестировалась на терминале и wp1602_ni15).
menu (меню, тестировалось на терминале и wp1602_ni15).
mlan и mlans (однопроводный интерфейс, мастер и слэйв соответственно.
ЭТО НЕ MICROLAN!!! Времянки - другие!
Но позволяет связываться по 5вольтовой линии метров на 200.).
-------------------------------------------------------------------------------
User avatar
Shaos
Admin
Posts: 24086
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Круто! Будем смотреть...
Я тут за главного - если что шлите мыло на me собака shaos точка net
Freshman
Novelist
Posts: 39
Joined: 08 Dec 2008 14:08
Location: Finland

Post by Freshman »

А на чем вы запускаете эту недоОСЬ? В смысле - что за платформа? Или на бредовой доске что-то собрано?
User avatar
Shaos
Admin
Posts: 24086
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Freshman wrote:А на чем вы запускаете эту недоОСЬ? В смысле - что за платформа? Или на бредовой доске что-то собрано?
Я вот на этом запускал:

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
Freshman
Novelist
Posts: 39
Joined: 08 Dec 2008 14:08
Location: Finland

Post by Freshman »

Понятно. А на Atmega32 пойдет?
Freshman
Novelist
Posts: 39
Joined: 08 Dec 2008 14:08
Location: Finland

Post by Freshman »

В связи с вялотекущим проектом (переделка игрушки сына - "тупого робота" в робота продвинутого - на сервоприводах) мне нужна многозадачная ОСь, как можно проще. Что можете посоветовать?
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Freshman wrote:В связи с вялотекущим проектом (переделка игрушки сына - "тупого робота" в робота продвинутого - на сервоприводах) мне нужна многозадачная ОСь, как можно проще. Что можете посоветовать?
Если нет привязки к AVR, то лучше глянь тему про ARM. NedoPC.ARMOS - предназначена для серии AT91SAM7xx.

viewtopic.php?t=8824

Цена от жирных АВРок не отличается существенно, но встроенные 64К ОЗУ, 256К флешки, десятки МГЦ и куча ног - это преимущества.
Ну и плюс там у меня многозадачность сделана гораздо лучше. Есть таймеры, блокировки и прочее.

В общем - гораздо приятнее программировать, чем AVROS.