Клавиатура и NedoPC-90

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

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:у меня есть TCNT1L и TCNT1H и нет TCNT1, и точно также есть OCR1AL и OCR1AH и нет OCR1A - вроде в старом коде в этом смысле все Ок было...
Это я про io8535.h писал - греп сказал что TCN1 есть в iotn15.h, а в iomacros.h есть __inw и __outw как написано в комментариях как раз для 16-битного доступа к TCNT1 и OCR1
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

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

Post by SfS »

Shaos wrote:
Shaos wrote:у меня есть TCNT1L и TCNT1H и нет TCNT1, и точно также есть OCR1AL и OCR1AH и нет OCR1A - вроде в старом коде в этом смысле все Ок было...
Это я про io8535.h писал - греп сказал что TCN1 есть в iotn15.h, а в iomacros.h есть __inw и __outw как написано в комментариях как раз для 16-битного доступа к TCNT1 и OCR1
У меня стоят.
avr-binutils-2.14-alt1.i586.rpm
avr-gcc-3.3.1-alt1.i586.rpm
avr-gcc-c++-3.3.1-alt1.i586.rpm
avr-libc-1.0.4-alt1.i586.rpm
avr-libc-doc-1.0.4-alt1.i586.rpm

Качай и ставь - там все определения есть.

В той версии AVROS, что ты собирал в прошлый раз. просто не было модуля для поддержки 1го таймера и обращений к 16битным регистрам.

Кстати, на более высоких версиях, библиотека опять перелопачена, и основательно. Совместимость тоже теряется.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote:
Shaos wrote:у меня есть TCNT1L и TCNT1H и нет TCNT1, и точно также есть OCR1AL и OCR1AH и нет OCR1A - вроде в старом коде в этом смысле все Ок было...
Это я про io8535.h писал - греп сказал что TCN1 есть в iotn15.h, а в iomacros.h есть __inw и __outw как написано в комментариях как раз для 16-битного доступа к TCNT1 и OCR1
У меня стоят.
avr-binutils-2.14-alt1.i586.rpm
avr-gcc-3.3.1-alt1.i586.rpm
avr-gcc-c++-3.3.1-alt1.i586.rpm
avr-libc-1.0.4-alt1.i586.rpm
avr-libc-doc-1.0.4-alt1.i586.rpm

Качай и ставь - там все определения есть.

В той версии AVROS, что ты собирал в прошлый раз. просто не было модуля для поддержки 1го таймера и обращений к 16битным регистрам.

Кстати, на более высоких версиях, библиотека опять перелопачена, и основательно. Совместимость тоже теряется.
Смотрел на фтп altlinux.ru - нашел только совсем старые пакеты и совсем новые - а вот это версии (1.0.4) не нашел :(
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: Смотрел на фтп altlinux.ru - нашел только совсем старые пакеты и совсем новые - а вот это версии (1.0.4) не нашел :(
Определи эти TCNT1 ОСR1A - вручную в файле sysdef.h. Должно заработать.

#define TCNT1 TCNT1L
#define ОСR1A ОСR1AL
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Заработало ? или на чтото еще ругается ?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote: Смотрел на фтп altlinux.ru - нашел только совсем старые пакеты и совсем новые - а вот это версии (1.0.4) не нашел :(
Определи эти TCNT1 ОСR1A - вручную в файле sysdef.h. Должно заработать.

#define TCNT1 TCNT1L
#define ОСR1A ОСR1AL
Ок - только зачем ты O и С по русски написал? ;)

Я долго не мог понять почему у меня компилятор ругается :)

Теперь вот что осталось:

Code: Select all

In file included from hl/timer0.c:6,
                 from hl/__tmpsrc__.c:2:
/usr/include/avr/signal.h:7:2: warning: #warning "please include sig-avr.h instead"
In file included from hl/__tmpsrc__.c:14:
hl/keypad40.c: In function `keypad40_puart_init':
hl/keypad40.c:42: invalid lvalue in assignment
hl/keypad40.c: In function `keypad40_getch':
hl/keypad40.c:221: warning: implicit declaration of function `pgm_read_byte'
make: *** [create_hl] Ошибка 1
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Code: Select all

In file included from hl/timer0.c:6,
                 from hl/__tmpsrc__.c:2:
/usr/include/avr/signal.h:7:2: warning: #warning "please include sig-avr.h instead"
In file included from hl/__tmpsrc__.c:14:
hl/keypad40.c: In function `keypad40_puart_init':
hl/keypad40.c:42: invalid lvalue in assignment
hl/keypad40.c: In function `keypad40_getch':
hl/keypad40.c:221: warning: implicit declaration of function `pgm_read_byte'
make: *** [create_hl] Ошибка 1
Ну первое - понятно. Надо вместо signal.h подключать sig-avr.h (хотя вроде и так и этак работает).

Второе - pgm_read_byte - возможно вместо него надо использовать PRG_RDB() ?

Там есть такая штука - в старой версии avr-libc использовался макрос PRG_RDB() в новой - pgm_read_byte().
Попробуй в файле hl/keypad40.c заменить pgm_read_byte на PRG_RDB.

Кстати - может всетаки проще скачать нужную версию библиотек ? Если даже на altlinux ее нет - должна же она гдето в инете быть!

Ох и морока с этими версиями avr-glibc !
Кстати - уже виден свет в конце тоннеля насчет окончательной версии ОС (так сказать релиза). Попробую избавить насколько возможно людей от такой мороки - либо контроль версий введу либо откажусь от "проблемных" макросов вообще и введу свои.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

А сейчас ему не нравится DDRD...
hl/keypad40.c:42: invalid lvalue in assignment
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вроде собралось после обновления компилятора (см. viewtopic.php?t=8015&start=15)
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote:Вроде собралось после обновления компилятора (см. viewtopic.php?t=8015&start=15)
Ну и ладушки. А в железе пробовал ? Работает ?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

SfS wrote:
Shaos wrote:Вроде собралось после обновления компилятора (см. viewtopic.php?t=8015&start=15)
Ну и ладушки. А в железе пробовал ? Работает ?
Пока не пробовал - буду пробовать на этой неделе
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
SfS wrote:
Shaos wrote:Вроде собралось после обновления компилятора (см. viewtopic.php?t=8015&start=15)
Ну и ладушки. А в железе пробовал ? Работает ?
Пока не пробовал - буду пробовать на этой неделе
Решил вытащить сюда текст со схемой:

Code: Select all

40-кнопочная 3хвольтовая клавиятура с последовательным выходом.
------------------------------------------------------------------------------
Контакты:
  2 - Vcc=+3.3V
  3 - SO - выходной сигнал
  10- общий (0V)
------------------------------------------------------------------------------
Замечания:
    Выход SO (конт. 3 разъема) - инверсный.
    Т.е. на нем постоянно 0, а данные передаются импульсами +3.3вольта.
    Схема (см. ниже) инвертирует сигнал и согласует его с ТТЛ уровнями, что
    позволяет подключать клавиатуру к любому встроенному UARTу 
    микроконтроллеров.
    Скорость обмена - 9600.
------------------------------------------------------------------------------
Таблица кодов клавиш (коды нажатий - однобайтовые):
 
  Для всех клавиш при отпускании вырабатывается код (0x85,0x85),
  кроме клавиши Fn, для неё код отпускания (0x9e,0x9e)
------------------------
     Символьные               Служебные
    A = 0x4d B = 0x4b       Fn        = 0x01 (код отпускания 0x9e,0x9e)
    C = 0x65 D = 0x28       BSpc (<-) = 0x17
    E = 0x12 F = 0x29       Del       = 0x48
    G = 0x2a H = 0x2b       Enter(<-|)= 0x2c
    I = 0x68 J = 0x14       Left      = 0x2d
    K = 0x15 L = 0x16       Right     = 0x2e
    M = 0x49 N = 0x4a       Up        = 0x63
    O = 0x4f P = 0x4e       Down      = 0x1b
    Q = 0x10 R = 0x13       Phone     = 0x18
    S = 0x4c T = 0x6b       ToDo      = 0x1a
    U = 0x69 V = 0x64       Date      = 0x2f
    W = 0x11 X = 0x66       Memo      = 0x62
    Y = 0x6a Z = 0x67
    
    Speace = 0x19 (оба)
------------------------------------------------------------------------------
Схема сопряжения с TTЛ:
------------------------
Клавиатура                        ТТЛ
                (кремиевые диоды)
Vcc=+3.3V      D1  D2  D3
  2 ----------|<|-|<|-|<|-------- +5v
     |    |
 33К -    | 0.1мкф
    | |  ---
    | |  ---
     -    |
     |    |
 10 ----------------------------- GND (0v)
  
                     ----------- +5v
                     |
                     -
                    | | 10Ком
                    | |
                     -             
 SO - выход        к |--------------  SO - выход (ТТЛ-уровень)
      -------     | /
 3 --|100 Ом |----|<
      -------   б | \
                   э |
                     |
		     ------------ GND (0v)
------------------------------------------------------------------------------
Вобщем для начала собрал схему понижения напряжения - взял 3 диода 1N4001, резистор и конденсатор - получил напряжение 3.6В - нормально или еще понижать?
Я тут за главного - если что шлите мыло на me собака shaos точка net
SfS
Doomed
Posts: 491
Joined: 16 Apr 2005 22:35
Location: Томск

Post by SfS »

Shaos wrote: Вобщем для начала собрал схему понижения напряжения - взял 3 диода 1N4001, резистор и конденсатор - получил напряжение 3.6В - нормально или еще понижать?
Ты наверное взял диоды слишком хорошие :). У них падение маленькое.
Я брал КД-какието стеклянные (510 чтоли?). В общем напряжение на клаве было примерно 3.1-3.3 вольта. Мне кажется, что на 3.6 работать должно - но можешь для перестраховки еще один диод воткнуть. Или возьми сопротивление не 10к - а поменьше - скажем 3К. Напряжение чуток упадет.

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

Post by Shaos »

SfS wrote:
Shaos wrote: Вобщем для начала собрал схему понижения напряжения - взял 3 диода 1N4001, резистор и конденсатор - получил напряжение 3.6В - нормально или еще понижать?
Ты наверное взял диоды слишком хорошие :). У них падение маленькое.
Я брал КД-какието стеклянные (510 чтоли?). В общем напряжение на клаве было примерно 3.1-3.3 вольта. Мне кажется, что на 3.6 работать должно - но можешь для перестраховки еще один диод воткнуть. Или возьми сопротивление не 10к - а поменьше - скажем 3К. Напряжение чуток упадет.

В общем то я такой вопрос подробно не исследовал, хотя 0.3-0.5 вольта в данном случае не должны влиять - всетаки это клалва - ширпотреб и не рассчитана на прецензионное питание.
Ок - завтра еще похимичу. Вопрос - если включить клаву/индикатор/компорт, то сколько свободной памяти кода и данных останется на моей ATMEGA8535? Это к вопросу об интерпретаторе и, возможно, компиляторе RW1/RW0. И еще я забыл о внешнем флеш-накопителе...
Я тут за главного - если что шлите мыло на me собака shaos точка net