Пятница, 26.04.2024, 08:23
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | система дистанционного управления на ATtiny 2313 "c нуля" - Страница 23 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
система дистанционного управления на ATtiny 2313 "c нуля"
ВитГоДата: Суббота, 24.11.2012, 11:10 | Сообщение # 331
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
еще замечание по коду

вот так включать файл библиотеки нельзя!

Code

;*****************************************************************************************************
; Выход из прерывания
;*****************************************************************************************************

out_1:    ; сюда попадаешь для выхода
                 
; и потом сразу выполняешь код библиотеки !!! там сначала идет код инициализации !!!

.include "lcd5110mini.asm"  ; подключение драйвера дисплея

   pop temp4   ; извлекаем "SREG" ////////////////////////////////////////////////////
   out SREG, temp4

   RETI    ; точка выхода из прерывания
;*****************************************************************************************************


правильнее код библиотеки включить как нить так:
Code

;*****************************************************************************************************
; Выход из прерывания
;*****************************************************************************************************

out_1:   

   pop temp4   ; извлекаем "SREG" ////////////////////////////////////////////////////
   out SREG, temp4

   RETI    ; точка выхода из прерывания

.include "lcd5110mini.asm"  ; подключение драйвера дисплея
;*****************************************************************************************************


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 24.11.2012, 17:09 | Сообщение # 332
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
ну вот...
Прикрепления: 6756243.asm (5.8 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 24.11.2012, 17:57 | Сообщение # 333
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
и что видим на экране ?
импульсы регистрируются ?

опять таки а где вывод длительности паузы?


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 24.11.2012, 18:31 | Сообщение # 334
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Quote (ВитГо)
опять таки а где вывод длительности паузы?

а это что?
Code


proverka_flaga_fazy:

                          cpi R22,1 ______________________ ; мы вошли по нарастающему фронту ?
                          brne setup_rising_edge ___________ ; если мы вошли по падающему фронту, то переходим...

       
   _____________________________________________; здесь обработка если мы вошли по нарастающему фронту.

setup_falling_edge: _____________________________ ; метка - "установка прерывания на падающий фронт"

                    ldi R16,(1<<ISC01) _____________ ; устанавливаем прерывание на падающий фронт "INT0"
                     out MCUCR,R16

                     ldi R22,0  ______________________ ; устанавливаем флаг фазы (0=падающий фронт)

                     rcall out_disp ______________________ ; выводим на дисплей ( вот тут вывод на дисплей длительности паузы)

loop:
                         rjmp loop  ___________________________ ; все! тут программа зациклится и "повиснет в прерывании до полной перезагрузки"


Quote (ВитГо)
и что видим на экране ?
импульсы регистрируются ?


еще не попробовал... чуть позже...


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 24.11.2012, 19:01
 
uwrteyДата: Суббота, 24.11.2012, 20:17 | Сообщение # 335
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
мда, на экран выводится 000C000B всегда! и ни как не зависит от реальной длительности импульса и паузы.....

длительность импульса и паузы контролирую вручную! я припаял провод к int_0 и тычу им в +5 вольт, (так же между int_0 и общим постоянно висит резюк в 1 кОм )

немного изменил настройку портов

Добавлено (24.11.2012, 20:17)
---------------------------------------------
а-а, я кажется понял! сейчас исправлю..

Прикрепления: 3151838.asm (5.8 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 24.11.2012, 20:07
 
ВитГоДата: Суббота, 24.11.2012, 20:32 | Сообщение # 336
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
значит чтото не работает ! проверяй настройку портов задающих событие прерывания

Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 24.11.2012, 20:58 | Сообщение # 337
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
я вышел из положения вот так
Прикрепления: _2.asm (6.2 Kb)


не успеваю за своими мыслями......
 
uwrteyДата: Суббота, 24.11.2012, 21:03 | Сообщение # 338
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
а можно было так
Прикрепления: 8752941.asm (5.9 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 24.11.2012, 21:39 | Сообщение # 339
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
второй способ вроде нормальный..

а вот первый.. :-(

Code

out_disp:

  mov R16,XH
  swap R16   ; меняем местами старший полубайт и младший полубайт (SWAP - поменять нибблы местами)
  andi R16, 0x0f   ; маска 00001111 (печатаем младший полубайт)  
  rcall lcd_char   ; переходим на печать цифры

       ; !!! вот здесь что у тебя в R16 ? учти что ты уже как минимум вызывал lcd_char (посмотри портит ли она r16).
       ; но даже если не портит - ты же делал andi 0x0f - то есть в старшем полубайте точно ноль !!!!

  swap R16   ; меняем местами старший полубайт и младший полубайт (SWAP - поменять нибблы местами)
  andi R16, 0x0f   ; маска 00001111 (печатаем младший полубайт)  
  rcall lcd_char   ; переходим на печать цифры



в общем первый способ ничего нормального не выведет


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 24.11.2012, 23:02 | Сообщение # 340
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
вот поправил первый способ
Прикрепления: 1918573.asm (6.0 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 24.11.2012, 23:05 | Сообщение # 341
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
как минимум вывод на экран правильный :-)

что дает проверка ?


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 24.11.2012, 23:11 | Сообщение # 342
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Quote
; !!! вот здесь что у тебя в R16 ? учти что ты уже как минимум вызывал lcd_char (посмотри портит ли она r16).
; но даже если не портит - ты же делал andi 0x0f - то есть в старшем полубайте точно ноль !!!!

1) да портит -это я уже заметил, кода разбирался с тем как работает дисплей
2) об andi 0x0f я даже не подумал, а если быть точнее то я до конца не понимаю как работает andi

__________________________________________________

какой вариант лучше использовать? первый или второй?

__________________________________________________

вместо того, что бы тыкать проводком вручную в +5 вольт
может настроить шестую ножку МК ( int0 / PD2 ) на вывод
и выводить по очереди на нее лог_0 и лог_1 через задержку, что бы прерывание по int0 генерировалось программно ( как ты учил на четвертой странице этого форума )


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 24.11.2012, 23:35
 
ВитГоДата: Воскресенье, 25.11.2012, 01:45 | Сообщение # 343
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
мне второй больше понравился...
а так дело вкуса :-)

andi r16,0x0f работет так:
берется содержимое регистра R16
и проводится побитное И ... таким образом в битах 7 6 5 4 - будет 0 (так как у нас второй операнд в этих битах имеет нули, и в битах 3 2 2 1 - будут единицы только в том случае если у нас единица будет в R16 в соответствующем бите...

то есть останется только 4 младших бита


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 25.11.2012, 20:45 | Сообщение # 344
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
1)
Quote (ВитГо)
мне второй больше понравился...
а так дело вкуса :-)

значит, будем использовать второй ! wink

2)
Quote (uwrtey)
вместо того, что бы тыкать проводком вручную в +5 вольт
может настроить шестую ножку МК ( int0 / PD2 ) на вывод
и выводить по очереди на нее лог_0 и лог_1 через задержку, что бы прерывание по int0 генерировалось программно ( как ты учил на четвертой странице этого форума )


тут что скажешь?

3)
Quote (ВитГо)
andi r16,0x0f работет так:
берется содержимое регистра R16
и проводится побитное И ... таким образом в битах 7 6 5 4 - будет 0 (так как у нас второй операнд в этих битах имеет нули, и в битах 3 2 2 1 - будут единицы только в том случае если у нас единица будет в R16 в соответствующем бите...


я понял, andi R16, ob00001111
там где нули значения регистра r16 очистятся, а где единицы там они останутся не изменёнными

то-есть если R16=ob10101010
то после маски andi R16, ob00001111
от содержимого R16 останется ob00001010 smile то-ест старший ниббл (полубит) мы безвозвратно потеряем!


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 25.11.2012, 20:47
 
ВитГоДата: Воскресенье, 25.11.2012, 21:22 | Сообщение # 345
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Quote (uwrtey)
2)
Quote (uwrtey)
вместо того, что бы тыкать проводком вручную в +5 вольт
может настроить шестую ножку МК ( int0 / PD2 ) на вывод
и выводить по очереди на нее лог_0 и лог_1 через задержку, что бы прерывание по int0 генерировалось программно ( как ты учил на четвертой странице этого форума )

тут что скажешь?


это и нужно делать ! вручную точно ничего хорошего не получиться...


Виталий (аka ВитГо)
 
Форум » Разработка электронных устройств » Разрабатываю ! » система дистанционного управления на ATtiny 2313 "c нуля" (пошаговое изучение строительства систем радиоуправления)
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz