Перейти к содержанию
    

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

post-72370-1353161486_thumb.jpg

 

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

 

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

post-72370-1353161877_thumb.jpg

 

И ещё я пробовал на 2 микрухах везде оно и то же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

И ещё я пробовал на 2 микрухах везде оно и то же.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 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 мкс отсутствует ( вторая картинка). Я прошу прощения. Тут скорее всего без нормальной осциллограмы мало что понятно. Я надеялся, что возможно с этим уже кто-то сталкивался. Я постараюсь сегодня завтра скинуть их. Просто у меня флешки сейчас нету

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... нужно было прилепить пул ап к выводу и на определённый промежуток прижимать его к земле...

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

 

post-26695-1353164402_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

post-26695-1353164402_thumb.png

Вы меня наверное не поняли. Все дело в том, что сигнал с мк не такой, какой должен быть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы меня наверное не поняли. Все дело в том, что сигнал с мк не такой, какой должен быть

А какой сигнал должен быть? Какое напряжение питания, сопротивление подтяжки и ёмкость нагрузки + ёмкость линии ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой сигнал должен быть? Какое напряжение питания, сопротивление подтяжки и ёмкость нагрузки + ёмкость линии ?

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

Изменено пользователем MySOL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... решить всё таки вопрос откуда беруться те "лишние" импульсы.

Ответьте хотя бы, какое сопротивление подтяжки ? Какова длина линии 1-wire ?

"лишние" импульсы могут выдавать другие устройства, подключенные к 1-wire.

Сделайте программно генератор импульсов 500мкс, отключите все остальные устройства, кроме резистора подтяжки, что видно на осциллографе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ответьте хотя бы, какое сопротивление подтяжки ? Какова длина линии 1-wire ?

"лишние" импульсы могут выдавать другие устройства, подключенные к 1-wire.

Сделайте программно генератор импульсов 500мкс, отключите все остальные устройства, кроме резистора подтяжки, что видно на осциллографе?

Проблема решилась. Всему виной был осциллограф. Просто опыта обращения с ним мало, а у него есть свои особенности (осциллограф цифровой). Теперь видимо проблема того, что датчик молчит - это то, что я его запорол. Обидно. Я прошу прощение за беспокойство. Просто столько сил угрохал и времени, а тут не пашет и как обычно до конца хотелось верить, что проблема не в монтаже.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если , честно то - кошмар.

Начнём с начала Из чего состоит импульс сброс присутствие - из 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

   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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запороть DS1820 можно толь ко кувалдой. Вылизывайте все таймиги и все заработает на ура.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sbi PORTB, PD0
CBI DDRB,    PD0            ; Меняем вывод на ввод

А для чего делается короткий пульс (запись 1 в порт когда пин настроен на вывод)?

подозреваю что если есть внешний pull-up достаточно управлять только DDR'ом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...