roboforum.ru

Технический форум по робототехнике.

eZ430-Chronos

Re: eZ430-Chronos

Dmitry__ » 11 июл 2011, 14:34

боюсь с громкостью - засада, все жалуются, только дорабатывать напильником :(
да, дисплей ущербный, сильно ограничивает возможности
покурил разные исходники, ужас , память забита под завязку :shock:
где-то используют библиотеку с плавающей точкой (отьедает 5к памяти из 32к), нах на 7-ми сегментный индикатор?
исходники от poelzi: в режиме альтиметра используется нижний индикатор, при этом сквозь его прогу пролезает прога донор :D
в общем эйфория проходит :)
если серьезно заниматься часами, то надо сначала переписать ядро часов, уменьшить занимаемый обьем памяти раза в два. :o

Re: eZ430-Chronos

Vooon » 11 июл 2011, 21:12

Да, начальная архитектура прошивки мне не очень нравится, но там все на low-power-mode завязано.
А потом куча народу начало всякую фигню приделывать. Fp у poelzi отключается.

Альтиметр думаю переделать, метры мне нафиг не нужны, а вот давление в мм.рт.ст пригодились бы.
Функция акселерометра тоже не понятно, нафига на нем угломер делать?

А громкость то достаточная, но сам сигнал тупой. Слишком короткие импульсы.

Но что касается меню -- нужно переделывать. Оно конечно не плохо, но могло бы быть удобнее.

Но для игрушки за 1300р это все же очень не плохо, учитывая что на шару получаешь отладчик и радио на котором (думаю) можно организовать связь с тем же миниботом.

Re: eZ430-Chronos

Dmitry__ » 15 июл 2011, 05:19

В общем, решил посмотреть куда делись 31кб. из 32 кб. памяти в часах. Сделал листинг прошивки, просматриваю функции, останавливаюсь на memcpy, че-то как-то много всяких проверок для этой функции, какая тогда memmove?
Начинаю смотреть memmove и понимаю, что она бит в бит совпадает с memcpy, каждая по пол-кило :shock:
Причем, memmove вызывается только из 2-х функций в недрах simpliciti\Components\nwk\nwk.c
Удивительно, что народ пишет конфигураторы, чтоб выжать еще 200 байт и не видят такого ляпа.
Вот она парадигма инкапсуляции :o
Потом нахожу статью "Про memcpy, memmove и Open Source"
http://shura.luberetsky.ru/2011/03/31/pro-memcpy-memmove-i-open-source/
Ссылающаяся на "о началах программирования" !!!
http://avva.livejournal.com/2323823.html
Не знаю, баян или нет, но поучительно...

Позже заменю все memcpy на memmove, но боюсь чуда не произойдет, прошивка уменьшится на пол-кило, часы будут работать.

на память:
Код: Выделить всёРазвернуть
0000ecfa <memcpy>:
    ecfa:   0b 12          push   r11      
    ecfc:   0a 12          push   r10      
    ecfe:   09 12          push   r9      
    ed00:   04 12          push   r4      
    ed02:   21 82          sub   #4,   r1   ;r2 As==10
    ed04:   04 41          mov   r1,   r4   
    ed06:   84 4f 00 00    mov   r15,   0(r4)   ;0x0000(r4)
    ed0a:   84 4e 02 00    mov   r14,   2(r4)   ;0x0002(r4)
    ed0e:   0f 4d          mov   r13,   r15   
    ed10:   2a 44          mov   @r4,   r10   
    ed12:   19 44 02 00    mov   2(r4),   r9   ;0x0002(r4)
    ed16:   0f 93          tst   r15      
    ed18:   6e 24          jz   $+222       ;abs 0xedf6
    ed1a:   0a 99          cmp   r9,   r10   
    ed1c:   6c 24          jz   $+218       ;abs 0xedf6
    ed1e:   0d 4a          mov   r10,   r13   
    ed20:   0e 49          mov   r9,   r14   
    ed22:   0d 9e          cmp   r14,   r13   
    ed24:   35 2c          jc   $+108       ;abs 0xed90
    ed26:   0b 49          mov   r9,   r11   
    ed28:   0e 4a          mov   r10,   r14   
    ed2a:   0e db          bis   r11,   r14   
    ed2c:   1e f3          and   #1,   r14   ;r3 As==01
    ed2e:   4e 93          tst.b   r14      
    ed30:   16 24          jz   $+46        ;abs 0xed5e
    ed32:   0e 4a          mov   r10,   r14   
    ed34:   0e eb          xor   r11,   r14   
    ed36:   1e f3          and   #1,   r14   ;r3 As==01
    ed38:   4e 93          tst.b   r14      
    ed3a:   02 20          jnz   $+6         ;abs 0xed40
    ed3c:   2f 93          cmp   #2,   r15   ;r3 As==10
    ed3e:   02 2c          jc   $+6         ;abs 0xed44
    ed40:   0b 4f          mov   r15,   r11   
    ed42:   05 3c          jmp   $+12        ;abs 0xed4e
    ed44:   0e 4b          mov   r11,   r14   
    ed46:   1e f3          and   #1,   r14   ;r3 As==01
    ed48:   2d 43          mov   #2,   r13   ;r3 As==10
    ed4a:   0b 4d          mov   r13,   r11   
    ed4c:   0b 8e          sub   r14,   r11   
    ed4e:   0f 8b          sub   r11,   r15   
    ed50:   6e 49          mov.b   @r9,   r14   
    ed52:   ca 4e 00 00    mov.b   r14,   0(r10)   ;0x0000(r10)
    ed56:   1a 53          inc   r10      
    ed58:   19 53          inc   r9      
    ed5a:   3b 53          add   #-1,   r11   ;r3 As==11
    ed5c:   f9 23          jnz   $-12        ;abs 0xed50
    ed5e:   0b 4f          mov   r15,   r11   
    ed60:   12 c3          clrc         
    ed62:   0b 10          rrc   r11      
    ed64:   0b 93          tst   r11      
    ed66:   09 24          jz   $+20        ;abs 0xed7a
    ed68:   0e 4a          mov   r10,   r14   
    ed6a:   0d 49          mov   r9,   r13   
    ed6c:   2d 4d          mov   @r13,   r13   
    ed6e:   8e 4d 00 00    mov   r13,   0(r14)   ;0x0000(r14)
    ed72:   29 53          incd   r9      
    ed74:   2a 53          incd   r10      
    ed76:   3b 53          add   #-1,   r11   ;r3 As==11
    ed78:   f7 23          jnz   $-16        ;abs 0xed68
    ed7a:   0b 4f          mov   r15,   r11   
    ed7c:   1b f3          and   #1,   r11   ;r3 As==01
    ed7e:   3b 24          jz   $+120       ;abs 0xedf6
    ed80:   6f 49          mov.b   @r9,   r15   
    ed82:   ca 4f 00 00    mov.b   r15,   0(r10)   ;0x0000(r10)
    ed86:   1a 53          inc   r10      
    ed88:   19 53          inc   r9      
    ed8a:   3b 53          add   #-1,   r11   ;r3 As==11
    ed8c:   f9 23          jnz   $-12        ;abs 0xed80
    ed8e:   33 3c          jmp   $+104       ;abs 0xedf6
    ed90:   09 5f          add   r15,   r9   
    ed92:   0a 5f          add   r15,   r10   
    ed94:   0b 49          mov   r9,   r11   
    ed96:   0e 4a          mov   r10,   r14   
    ed98:   0e db          bis   r11,   r14   
    ed9a:   1e f3          and   #1,   r14   ;r3 As==01
    ed9c:   4e 93          tst.b   r14      
    ed9e:   13 24          jz   $+40        ;abs 0xedc6
    eda0:   0e 4a          mov   r10,   r14   
    eda2:   0e eb          xor   r11,   r14   
    eda4:   1e f3          and   #1,   r14   ;r3 As==01
    eda6:   4e 93          tst.b   r14      
    eda8:   03 20          jnz   $+8         ;abs 0xedb0
    edaa:   3f 90 03 00    cmp   #3,   r15   ;#0x0003
    edae:   02 2c          jc   $+6         ;abs 0xedb4
    edb0:   0b 4f          mov   r15,   r11   
    edb2:   01 3c          jmp   $+4         ;abs 0xedb6
    edb4:   1b f3          and   #1,   r11   ;r3 As==01
    edb6:   0f 8b          sub   r11,   r15   
    edb8:   3a 53          add   #-1,   r10   ;r3 As==11
    edba:   39 53          add   #-1,   r9   ;r3 As==11
    edbc:   6e 49          mov.b   @r9,   r14   
    edbe:   ca 4e 00 00    mov.b   r14,   0(r10)   ;0x0000(r10)
    edc2:   3b 53          add   #-1,   r11   ;r3 As==11
    edc4:   f9 23          jnz   $-12        ;abs 0xedb8
    edc6:   0b 4f          mov   r15,   r11   
    edc8:   12 c3          clrc         
    edca:   0b 10          rrc   r11      
    edcc:   0b 93          tst   r11      
    edce:   09 24          jz   $+20        ;abs 0xede2
    edd0:   29 83          decd   r9      
    edd2:   2a 83          decd   r10      
    edd4:   0e 4a          mov   r10,   r14   
    edd6:   0d 49          mov   r9,   r13   
    edd8:   2d 4d          mov   @r13,   r13   
    edda:   8e 4d 00 00    mov   r13,   0(r14)   ;0x0000(r14)
    edde:   3b 53          add   #-1,   r11   ;r3 As==11
    ede0:   f7 23          jnz   $-16        ;abs 0xedd0
    ede2:   0b 4f          mov   r15,   r11   
    ede4:   1b f3          and   #1,   r11   ;r3 As==01
    ede6:   07 24          jz   $+16        ;abs 0xedf6
    ede8:   3a 53          add   #-1,   r10   ;r3 As==11
    edea:   39 53          add   #-1,   r9   ;r3 As==11
    edec:   6f 49          mov.b   @r9,   r15   
    edee:   ca 4f 00 00    mov.b   r15,   0(r10)   ;0x0000(r10)
    edf2:   3b 53          add   #-1,   r11   ;r3 As==11
    edf4:   f9 23          jnz   $-12        ;abs 0xede8
    edf6:   2f 44          mov   @r4,   r15   
    edf8:   21 52          add   #4,   r1   ;r2 As==10
    edfa:   34 41          pop   r4      
    edfc:   39 41          pop   r9      
    edfe:   3a 41          pop   r10      
    ee00:   3b 41          pop   r11      
    ee02:   30 41          ret

Код: Выделить всёРазвернуть
0000ee04 <memmove>:
    ee04:   0b 12          push   r11      
    ee06:   0a 12          push   r10      
    ee08:   09 12          push   r9      
    ee0a:   04 12          push   r4      
    ee0c:   21 82          sub   #4,   r1   ;r2 As==10
    ee0e:   04 41          mov   r1,   r4   
    ee10:   84 4f 00 00    mov   r15,   0(r4)   ;0x0000(r4)
    ee14:   84 4e 02 00    mov   r14,   2(r4)   ;0x0002(r4)
    ee18:   0f 4d          mov   r13,   r15   
    ee1a:   2a 44          mov   @r4,   r10   
    ee1c:   19 44 02 00    mov   2(r4),   r9   ;0x0002(r4)
    ee20:   0f 93          tst   r15      
    ee22:   6e 24          jz   $+222       ;abs 0xef00
    ee24:   0a 99          cmp   r9,   r10   
    ee26:   6c 24          jz   $+218       ;abs 0xef00
    ee28:   0d 4a          mov   r10,   r13   
    ee2a:   0e 49          mov   r9,   r14   
    ee2c:   0d 9e          cmp   r14,   r13   
    ee2e:   35 2c          jc   $+108       ;abs 0xee9a
    ee30:   0b 49          mov   r9,   r11   
    ee32:   0e 4a          mov   r10,   r14   
    ee34:   0e db          bis   r11,   r14   
    ee36:   1e f3          and   #1,   r14   ;r3 As==01
    ee38:   4e 93          tst.b   r14      
    ee3a:   16 24          jz   $+46        ;abs 0xee68
    ee3c:   0e 4a          mov   r10,   r14   
    ee3e:   0e eb          xor   r11,   r14   
    ee40:   1e f3          and   #1,   r14   ;r3 As==01
    ee42:   4e 93          tst.b   r14      
    ee44:   02 20          jnz   $+6         ;abs 0xee4a
    ee46:   2f 93          cmp   #2,   r15   ;r3 As==10
    ee48:   02 2c          jc   $+6         ;abs 0xee4e
    ee4a:   0b 4f          mov   r15,   r11   
    ee4c:   05 3c          jmp   $+12        ;abs 0xee58
    ee4e:   0e 4b          mov   r11,   r14   
    ee50:   1e f3          and   #1,   r14   ;r3 As==01
    ee52:   2d 43          mov   #2,   r13   ;r3 As==10
    ee54:   0b 4d          mov   r13,   r11   
    ee56:   0b 8e          sub   r14,   r11   
    ee58:   0f 8b          sub   r11,   r15   
    ee5a:   6e 49          mov.b   @r9,   r14   
    ee5c:   ca 4e 00 00    mov.b   r14,   0(r10)   ;0x0000(r10)
    ee60:   1a 53          inc   r10      
    ee62:   19 53          inc   r9      
    ee64:   3b 53          add   #-1,   r11   ;r3 As==11
    ee66:   f9 23          jnz   $-12        ;abs 0xee5a
    ee68:   0b 4f          mov   r15,   r11   
    ee6a:   12 c3          clrc         
    ee6c:   0b 10          rrc   r11      
    ee6e:   0b 93          tst   r11      
    ee70:   09 24          jz   $+20        ;abs 0xee84
    ee72:   0e 4a          mov   r10,   r14   
    ee74:   0d 49          mov   r9,   r13   
    ee76:   2d 4d          mov   @r13,   r13   
    ee78:   8e 4d 00 00    mov   r13,   0(r14)   ;0x0000(r14)
    ee7c:   29 53          incd   r9      
    ee7e:   2a 53          incd   r10      
    ee80:   3b 53          add   #-1,   r11   ;r3 As==11
    ee82:   f7 23          jnz   $-16        ;abs 0xee72
    ee84:   0b 4f          mov   r15,   r11   
    ee86:   1b f3          and   #1,   r11   ;r3 As==01
    ee88:   3b 24          jz   $+120       ;abs 0xef00
    ee8a:   6f 49          mov.b   @r9,   r15   
    ee8c:   ca 4f 00 00    mov.b   r15,   0(r10)   ;0x0000(r10)
    ee90:   1a 53          inc   r10      
    ee92:   19 53          inc   r9      
    ee94:   3b 53          add   #-1,   r11   ;r3 As==11
    ee96:   f9 23          jnz   $-12        ;abs 0xee8a
    ee98:   33 3c          jmp   $+104       ;abs 0xef00
    ee9a:   09 5f          add   r15,   r9   
    ee9c:   0a 5f          add   r15,   r10   
    ee9e:   0b 49          mov   r9,   r11   
    eea0:   0e 4a          mov   r10,   r14   
    eea2:   0e db          bis   r11,   r14   
    eea4:   1e f3          and   #1,   r14   ;r3 As==01
    eea6:   4e 93          tst.b   r14      
    eea8:   13 24          jz   $+40        ;abs 0xeed0
    eeaa:   0e 4a          mov   r10,   r14   
    eeac:   0e eb          xor   r11,   r14   
    eeae:   1e f3          and   #1,   r14   ;r3 As==01
    eeb0:   4e 93          tst.b   r14      
    eeb2:   03 20          jnz   $+8         ;abs 0xeeba
    eeb4:   3f 90 03 00    cmp   #3,   r15   ;#0x0003
    eeb8:   02 2c          jc   $+6         ;abs 0xeebe
    eeba:   0b 4f          mov   r15,   r11   
    eebc:   01 3c          jmp   $+4         ;abs 0xeec0
    eebe:   1b f3          and   #1,   r11   ;r3 As==01
    eec0:   0f 8b          sub   r11,   r15   
    eec2:   3a 53          add   #-1,   r10   ;r3 As==11
    eec4:   39 53          add   #-1,   r9   ;r3 As==11
    eec6:   6e 49          mov.b   @r9,   r14   
    eec8:   ca 4e 00 00    mov.b   r14,   0(r10)   ;0x0000(r10)
    eecc:   3b 53          add   #-1,   r11   ;r3 As==11
    eece:   f9 23          jnz   $-12        ;abs 0xeec2
    eed0:   0b 4f          mov   r15,   r11   
    eed2:   12 c3          clrc         
    eed4:   0b 10          rrc   r11      
    eed6:   0b 93          tst   r11      
    eed8:   09 24          jz   $+20        ;abs 0xeeec
    eeda:   29 83          decd   r9      
    eedc:   2a 83          decd   r10      
    eede:   0e 4a          mov   r10,   r14   
    eee0:   0d 49          mov   r9,   r13   
    eee2:   2d 4d          mov   @r13,   r13   
    eee4:   8e 4d 00 00    mov   r13,   0(r14)   ;0x0000(r14)
    eee8:   3b 53          add   #-1,   r11   ;r3 As==11
    eeea:   f7 23          jnz   $-16        ;abs 0xeeda
    eeec:   0b 4f          mov   r15,   r11   
    eeee:   1b f3          and   #1,   r11   ;r3 As==01
    eef0:   07 24          jz   $+16        ;abs 0xef00
    eef2:   3a 53          add   #-1,   r10   ;r3 As==11
    eef4:   39 53          add   #-1,   r9   ;r3 As==11
    eef6:   6f 49          mov.b   @r9,   r15   
    eef8:   ca 4f 00 00    mov.b   r15,   0(r10)   ;0x0000(r10)
    eefc:   3b 53          add   #-1,   r11   ;r3 As==11
    eefe:   f9 23          jnz   $-12        ;abs 0xeef2
    ef00:   2f 44          mov   @r4,   r15   
    ef02:   21 52          add   #4,   r1   ;r2 As==10
    ef04:   34 41          pop   r4      
    ef06:   39 41          pop   r9      
    ef08:   3a 41          pop   r10      
    ef0a:   3b 41          pop   r11      
    ef0c:   30 41          ret

Re: eZ430-Chronos

Vooon » 15 июл 2011, 20:52

Еще один. Вместо того чтобы убирать все возможные перекрытия, он тормозит все.
Только memcpy()! Только хардкор!

Re: eZ430-Chronos

Dmitry__ » 17 июл 2011, 13:30

>Еще один.
А, кто еще?

>Только memcpy()! Только хардкор!
И свой memcpy писать?

Re: eZ430-Chronos

Vooon » 18 июл 2011, 10:15

Тут других нет, а на лоре хватало всяких трололо.

Re: eZ430-Chronos

Grem » 23 сен 2011, 11:52

Тоже заказал себе часы, но 915MHz. Хотел альтиметр взять, но дорогие они и не практичные, посмотрим как часики работают в небе :)

Re: eZ430-Chronos

Dmitry__ » 23 сен 2011, 14:39

практикующий летун это хорошо :D
вот на ком будем альтиметр проверять...

Re: eZ430-Chronos

Strijar » 23 сен 2011, 16:54

Grem писал(а):Тоже заказал себе часы, но 915MHz. Хотел альтиметр взять, но дорогие они и не практичные, посмотрим как часики работают в небе :)


А чего их проверять - работают они. У меня один друг уже летает с такими

Re: eZ430-Chronos

Grem » 23 сен 2011, 17:49

У меня один друг уже летает

Я не умею летать, падать буду :)
А чего их проверять - работают они.

Где-то читал, что показания альтиметра обновляются раз в 5 сек., если это аппаратная фича, то пичаль. Придется нормальный альтиметр за 150-200$ покупать.

Re: eZ430-Chronos

Dmitry__ » 23 сен 2011, 18:24

Grem писал(а):Где-то читал, что показания альтиметра обновляются раз в 5 сек., если это аппаратная фича, то пичаль

Допилим прошивку :)
У меня из 32кб. маразма штатной прошивки осталось 22кб. Вплотную подошел к альтиметру, осталось только из него убрать арифметику с плавающей точкой. В прогу включил математику на аппаратном перемножителе, причесал драйвер дисплея (BCD арифметика). Меняю все переменные с ASCII на BCD. В часах ASCII с семисегментным индикатором :ROFL:

Re: eZ430-Chronos

Grem » 23 сен 2011, 19:11

Главное нужна фишка, чтоб можно было принять текущую высоту в качестве нулевой.

Re: eZ430-Chronos

Myp » 23 сен 2011, 21:44

почитай инструкцию, там вроде есть обнуление показаний альтиметра.

Re: eZ430-Chronos

Dmitry__ » 23 сен 2011, 22:52

Grem, думаю найдешь нужную себе альтернативную прошивку типа:

добавлен алгоритм автоматического выставления нуля
определена константа максимального уровня земли (по умолчанию 100м, при взлете выше этой высоты поправок не вносим)
при плавном изменении давления выводим символ R
обнуление высотомера по длительному нажатию *
при отображении высоты 0 убрал стрелку вверх

valera_ez4300_ver_0.01_prebeta.zip
http://www.skycentre.net/index.php?showtopic=10808&st=100

Re: eZ430-Chronos

Grem » 13 окт 2011, 15:55

Сегодня получил часы, экран замечательный :good:


cron
Rambler\'s Top100 Mail.ru counter