реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Чудеса, паразитные импульсы
MySOL
сообщение Nov 17 2012, 14:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Друзья, выручайте. Возникли проблемы с получением генератора прямоугольных импульсов. Микроконтроллер ATMEGA48. Вобщем суть такова: для одной схемки нужно было прилепить пул ап к выводу и на определённый промежуток прижимать его к земле. В протеусе всё летает как нужно. В итоге перенёс все на железо и тут понеслось: ничего не работает.(Это просто лирическое отступление и в суть программы вдаваться не стоит). Долго маялся и не мог понять в чём проблема. В итоге запилил простейший генератор прямоугольного сигнала и вот что я увидел на экране осциллографа:
Прикрепленное изображение


Я уже несколько недель маюсь с этой проблемой. Думал, что проблема в питалове. Подключал и ЛБП и батарейки. На входе стоит кондер на 10 мкф, такты задаются кварцем на 12 МГц. Пробовал и на внутреннем rc, ничего не изменилось. Есть ли какие нибудь соображения?

А по поводу той программки, что я писал вначале. Она должна прижать ногу микрухи на 500 мкс. На осциллографе этого не происходило, был просто моментальный скачёк до 0 и тут же отпускал:
Прикрепленное изображение


И ещё я пробовал на 2 микрухах везде оно и то же.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 17 2012, 14:24
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Что-то мне подсказывает , что проблемка именно а программке, ибо протеус вещь не подвластная разуму.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Smoky
сообщение Nov 17 2012, 14:28
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135



Цитата(MySOL @ Nov 17 2012, 20:19) *
Я уже несколько недель маюсь с этой проблемой. Думал, что проблема в питалове. Подключал и ЛБП и батарейки. На входе стоит кондер на 10 мкф, такты задаются кварцем на 12 МГц. Пробовал и на внутреннем rc, ничего не изменилось. Есть ли какие нибудь соображения?
И ещё я пробовал на 2 микрухах везде оно и то же.


Осциллограф не всегда может показать то что есть на самом деле, например из-за низкой полосы рабочих частот или большой ёмкости измерительного кабеля...


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
MySOL
сообщение Nov 17 2012, 15:00
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Цитата(ILYAUL @ Nov 17 2012, 18:24) *
Что-то мне подсказывает , что проблемка именно а программке, ибо протеус вещь не подвластная разуму.

Код
RES_DS:        LDI        TEMP,    0B00000000        ; Сброс
                    OUT        PORTB,    TEMP            ; Посылаем 0 в течении 500 мкс

                    LDI        DELAY1,    RP/3            ;RP=500 ( указан DSEG)

                    SUBI      DELAY1,    1                ; Задержка 500 мкс
                    BRNE            PC-1                    ;

                     CBI        DDRB,    0                ; Меняем вывод на ввод
            
                    SBIC     PINB,    0                ; Ждём пока датчик утопит шину
                     RJMP     PC-1

                    SBIS     PINB,    0                ; Ждём пока датчик будет готов к
                    RJMP     PC-1                    ; следующей команде

                    RET


Вобщем говоря это подпрограмма для 1-WIRE программы для проверки готовности датчика. Отправляем 0 в течении 500 мкс после чего ждём ответ ( в виде 0) от датчика. Думаю программа вполне понятна и объяснений не требует. И опять же повторюсь в протеусе осциль показал все как надо. А вот на железке задержка в 500 мкс отсутствует ( вторая картинка). Я прошу прощения. Тут скорее всего без нормальной осциллограмы мало что понятно. Я надеялся, что возможно с этим уже кто-то сталкивался. Я постараюсь сегодня завтра скинуть их. Просто у меня флешки сейчас нету
Go to the top of the page
 
+Quote Post
ae_
сообщение Nov 17 2012, 15:02
Сообщение #5


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(MySOL @ Nov 17 2012, 23:19) *
... нужно было прилепить пул ап к выводу и на определённый промежуток прижимать его к земле...

Для выхода с открытым стоком и pull-up так и должно быть. Вот фрагмент сигнала на 1-Wire для DS1820:


Прикрепленное изображение
Go to the top of the page
 
+Quote Post
MySOL
сообщение Nov 17 2012, 15:09
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Цитата(ae_ @ Nov 17 2012, 19:02) *
Для выхода с открытым стоком и pull-up так и должно быть. Вот фрагмент сигнала на 1-Wire для DS1820:


Прикрепленное изображение

Вы меня наверное не поняли. Все дело в том, что сигнал с мк не такой, какой должен быть
Go to the top of the page
 
+Quote Post
ae_
сообщение Nov 17 2012, 15:13
Сообщение #7


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(MySOL @ Nov 18 2012, 00:09) *
Вы меня наверное не поняли. Все дело в том, что сигнал с мк не такой, какой должен быть

А какой сигнал должен быть? Какое напряжение питания, сопротивление подтяжки и ёмкость нагрузки + ёмкость линии ?
Go to the top of the page
 
+Quote Post
MySOL
сообщение Nov 17 2012, 15:31
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Цитата(ae_ @ Nov 17 2012, 19:13) *
А какой сигнал должен быть? Какое напряжение питания, сопротивление подтяжки и ёмкость нагрузки + ёмкость линии ?

Скажем так. Вы угадали с датчиком. Всё это писалось для DS1820 ну и подключал всё как рекомендуется в дс. Проблемы с presence pulse. Я про него и говорил. Просто это хотелось бы пока не ввязываться в него и решить всё таки вопрос откуда беруться те "лишние" импульсы.

Сообщение отредактировал MySOL - Nov 17 2012, 15:43
Go to the top of the page
 
+Quote Post
ae_
сообщение Nov 17 2012, 15:45
Сообщение #9


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(MySOL @ Nov 18 2012, 00:31) *
... решить всё таки вопрос откуда беруться те "лишние" импульсы.

Ответьте хотя бы, какое сопротивление подтяжки ? Какова длина линии 1-wire ?
"лишние" импульсы могут выдавать другие устройства, подключенные к 1-wire.
Сделайте программно генератор импульсов 500мкс, отключите все остальные устройства, кроме резистора подтяжки, что видно на осциллографе?
Go to the top of the page
 
+Quote Post
MySOL
сообщение Nov 17 2012, 16:42
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Цитата(ae_ @ Nov 17 2012, 19:45) *
Ответьте хотя бы, какое сопротивление подтяжки ? Какова длина линии 1-wire ?
"лишние" импульсы могут выдавать другие устройства, подключенные к 1-wire.
Сделайте программно генератор импульсов 500мкс, отключите все остальные устройства, кроме резистора подтяжки, что видно на осциллографе?

Проблема решилась. Всему виной был осциллограф. Просто опыта обращения с ним мало, а у него есть свои особенности (осциллограф цифровой). Теперь видимо проблема того, что датчик молчит - это то, что я его запорол. Обидно. Я прошу прощение за беспокойство. Просто столько сил угрохал и времени, а тут не пашет и как обычно до конца хотелось верить, что проблема не в монтаже.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 17 2012, 16:52
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Если , честно то - кошмар.
Начнём с начала Из чего состоит импульс сброс присутствие - из 2-х фаз Сброса 480us- посылаемого MCU и ответа DS - присутствие
Код
LDI        TEMP,    0B00000000       ; Сброс
OUT        PORTB,    TEMP           ; Посылаем 0 в течении 500 мкс

Меняется на
Код
cbi PORTB, PD0

Задержка 500us
Код
sbi PORTB, PD0
CBI        DDRB,    PD0               ; Меняем вывод на ввод
SBIC     PINB,    PD0               ; Ждём пока датчик утопит шину
                     RJMP     PC-1



--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 17 2012, 19:14
Сообщение #12


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(MySOL @ Nov 17 2012, 15:00) *
Код
   LDI    DELAY1,    RP/3;RP=500 ( указан DSEG)
   SUBI      DELAY1,    1; Задержка 500 мкс
   BRNE      PC-1    ;

При 12 МГц тактовой и однобайтном счётчике, у вас программная задержка будет максимум на 64 мкс, а не на 500 мкс.
Вам следует использовать 2-х байтный счётчик задержки. Вернее всего, датчик у вас нормальный, просто не успевает
среагировать на короткий импульс.

Ниже, для примера, приведен реальный код для начала работы с 1-wire, вроде бы Fклок=10 МГц, проверьте
Код
rs1820:
    cbi    PORTB,0
    ldi    hdelay,high(1249);500us
    ldi    ldelay,low(1249)
rs1:    sbiw    ldelay,1
    brne    rs1
    sbi    PORTB,0
    ldi    temp1,0x1E    ;PB0-input
    out    DDRB,temp1
    ldi    hdelay,high(169);68us
    ldi    ldelay,low(169)
rs2:    sbiw    ldelay,1
    brne    rs2
    ldi    temp3,13    ;TempSensor failed
    sbic    PINB,0
    rjmp    rs4
    ldi    hdelay,high(1079);432us
    ldi    ldelay,low(1079)
rs3:    sbiw    ldelay,1
    brne    rs3
    ldi    temp1,0x1F    ;PB0-output
    out    DDRB,temp1
    clc
    ret
rs4:    ldi    temp1,0x1F    ;PB0-output
    out    DDRB,temp1
    ret


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Andrey_M
сообщение Nov 21 2012, 16:15
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 11-03-05
Из: Подмосковье
Пользователь №: 3 260



Запороть DS1820 можно толь ко кувалдой. Вылизывайте все таймиги и все заработает на ура.
Go to the top of the page
 
+Quote Post
MySOL
сообщение Nov 22 2012, 12:45
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 17-06-12
Пользователь №: 72 370



Благодарю за информацию, надеюсь заработает рано или поздно
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 22 2012, 23:58
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ILYAUL @ Nov 17 2012, 18:52) *
Код
sbi PORTB, PD0
CBI DDRB,    PD0            ; Меняем вывод на ввод

А для чего делается короткий пульс (запись 1 в порт когда пин настроен на вывод)?
подозреваю что если есть внешний pull-up достаточно управлять только DDR'ом.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 23:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01518 секунд с 7
ELECTRONIX ©2004-2016