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

At89s8253


Гость Artog

Рекомендуемые сообщения

Ниже приведен код, который работает на AT89S8252, но не работает на AT89S8253. Выдержка из даташита:

One can achieve very low baud rates with Timer 1 by leaving the Timer 1 interrupt enabled, and configuring the Timer to run as a 16-bit timer (high nibble of TMOD = 0001B), and using the Timer 1 interrupt to do a 16-bit software reload.

Код:

ORG 0000H

JMP BEGIN

ORG 001BH

JMP TM1INT

ORG 0023H

JMP SRLINT

ORG 0100H

BEGIN:

MOV SCON,#50H

MOV TMOD,#10H

MOV TH1,#0CFH ;baud rate is equal to 5 baud

MOV TL1,#2CH

ORL PCON,#10000000B ;SMOD1=1

SETB ES ;Enable serial interrupt

SETB ET1

SETB EA ;Enable global interrupt

SETB TR1 ;Timer 1 run

MOV SBUF,#55H

JMP $

TM1INT:

CLR TR1

MOV TH1,#0CFH

MOV TL1,#2CH

SETB TR1

RETI

SRLINT:

;JNB TI,TI_NINT

CLR TI

MOV SBUF,#55H

TI_NINT:

RETI

end

Может кто чего подскажет?

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Попробуй в прерывании TM1INT поставить команду сброса бита SCON.7 = 0. Или, тупо, MOV SCON,#50H.

В AT89S8253 добавлен бит FE (SCON.7=SM0/FE - Framing error bit), который устанавливается при приёме неправильного стоп-бита. Его можно сбросить только! программно.

В отличие от AT89S8252 он был там, только, SCON.7=SM0.

Удачи! :D

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Попробуй в прерывании TM1INT поставить команду сброса бита SCON.7 = 0. Или, тупо, MOV SCON,#50H.

В AT89S8253 добавлен бит FE (SCON.7=SM0/FE - Framing error bit), который устанавливается при приёме неправильного стоп-бита. Его можно сбросить только! программно.

В отличие от AT89S8252 он был там, только, SCON.7=SM0.

Удачи!  :D

Попробовал - не помогло. :(

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Давай попробуем с другой стороны.

Что конкретно не работает?

В прерывание TM1INT программа входит?

Что выдает на ножке TXD? Осциллоскопом проверь. С таймингами.

Проц виснет или передаёт/принимает не правильные данные?

В каком редакторе пишешь/отлаживаешь?

include файл от AT89S8253?

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

Давай попробуем с другой стороны.

Что конкретно не работает?

В прерывание TM1INT программа входит?

Что выдает на ножке TXD? Осциллоскопом проверь. С таймингами.

Проц виснет или передаёт/принимает не правильные данные?

В каком редакторе пишешь/отлаживаешь?

include файл от AT89S8253?

Код:

PCON EQU 87H

T2CON EQU 0C8H

RCLK EQU 0CDH ;T2CON.5

AV1 EQU P2.0

AV2 EQU P2.1

ORG 0000H

JMP BEGIN

ORG 001BH

JMP TM1INT

ORG 0023H

JMP SRLINT

ORG 0100H

BEGIN:

MOV A,#0

MOV R0,#0FFH

CLR_RAM:

MOV @R0,A ;все SFR в 0

DJNZ R0,CLR_RAM

CLR AV1

CLR AV2

MOV SCON,#50H

MOV PCON,#80H ;SMOD1=1

MOV TMOD,#10H ;T1- синхронизатор приемника UART

MOV TH1,#0CFH ;baud rate is equal to 5 baud

MOV TL1,#2CH

SETB ES ;Enable serial interrupt

SETB ET1 ;Enable Timer1 interrupt

SETB EA ;Enable global interrupt

SETB TR1 ;Timer 1 run

MOV SBUF,#55H

JMP $

; обработчик Timer 1

TM1INT:

CPL AV1 ;для проверки входа в прерывание

CLR TR1

MOV TH1,#0CFH

MOV TL1,#2CH

SETB TR1

TM1INT_1:

RETI

;обработчик UART

SRLINT:

CLR TI

CPL AV2 ;для проверки входа в прерывание

MOV SBUF,#55H

RETI

end

Результаты:

В прерывание по Timer1 входит - на AV1(P2.0) меандр с периодом 25 мс.

В прерывание по UART не входит - AV2(P2.1) в нуле.

TxD - в единице.

include файла от AT89S8253 не нашел, но все используемые регистры есть в AT89S8252 и имеют теже адреса.

Использую Phyton PICE-51 v.3.02.56.

Программа проверена на двух микроконтроллерах (больше нет).

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

Вообще, я должен был сразу сказать, что в остальных режимах UART работает нормально. Timer1 в режиме автоперегрузки в качестве baud rate - работает и Timer2 в режиме автоперегрузки в качестве baud rate тоже работает.

Ятак думаю что это просто глюк, и прийдется делать работу UARTа вручную. :(

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

Полный трабл с твоей проблемой. :blink:

Еще варианты:

1. попробуй в прерывании "обработчик UART" сбрасывать и бит RI

2. перед засыланием MOV SBUF,#55H сбрось TI

3. после засылания MOV SBUF,#55H дай задержку, гарантированную для передачи байта, или крути цикл до появления TI = 1. Только потом шли следующий байт.

Ждём-с результата... :D

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

Полный трабл с твоей проблемой. :blink:

Еще варианты:

1. попробуй в прерывании "обработчик UART" сбрасывать и бит RI

2. перед засыланием MOV SBUF,#55H сбрось TI

3. после засылания MOV SBUF,#55H дай задержку, гарантированную для передачи байта, или крути цикл до появления TI = 1. Только потом шли следующий байт.

Ждём-с результата... :D

Я уже сделал программную эмуляцию UARTа - все отлично работает.

Но ради интеоеса попробовал ваши рекомендации:

PCON    EQU  87H
T2CON   EQU  0C8H
RCAP2L  EQU 0CAH
RCAP2H  EQU 0CBH
RCLK    EQU  0CDH       ;T2CON.5
AV1     EQU     P2.0
AV2     EQU     P2.1
AV3     EQU     P2.3
FLAG    EQU     1

       ORG     0000H
       JMP     BEGIN
       ORG     001BH
       JMP     TM1INT
       ORG     0023H
       JMP     SRLINT

       ORG     0100H

BEGIN:

       MOV     A,#0
       MOV     R0,#0FFH
CLR_RAM:
       MOV     @R0,A          ;âñå SFR ðåãèñòðû â 0
       DJNZ    R0,CLR_RAM

       CLR     AV1
       CLR     AV2
       CLR     AV3
       CLR     FLAG
       MOV     SCON,#50H
       MOV     PCON,#80H       ;SMOD1=1
       MOV     TMOD,#10H      ;T1- ñèíõðîíèçàòîð ïðèåìíèêà UART
       MOV     TH1,#0CFH      ;baud rate is equal to 5 baud
       MOV     TL1,#2CH
       SETB    ES                ;Enable serial interrupt
       SETB    ET1               ;Enable Timer1 interrupt
       SETB    EA                ;Enable global interrupt
       SETB    TR1               ;Timer 1 run
       CLR     TI
       MOV     R2,#255
       JNB     FLAG,$
       MOV     SBUF,#55H
       JMP $

TM1INT:
       CPL     AV1
       CLR     TR1
       MOV     TH1,#0CFH
       MOV     TL1,#2CH
       SETB    TR1
       DJNZ    R2,TM1INT_1
       SETB    FLAG
       SETB    AV3
TM1INT_1:
       RETI

SRLINT:
       CLR     TI
       CLR     RI
       CPL     AV2
       MOV     SBUF,#55H
       RETI
end

Все тоже. В прерывание по таймеру попадаю, флаг FLAG устанавливается, в прерывание по UART не попадаю, передачи нет.

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

НЕЕее!! Немного не так.

        ...

       CLR     TI

       MOV     R2,#255

       JNB     FLAG,$

       MOV     SBUF,#55H

       JMP $

Надо:

clr TI

repeat:

mov a,#255

loop: dec a

jnz loop

MOV     SBUF,#55H

       JMP repeat

А в SRLINT убрать команду MOV SBUF,#55H

попробуй...

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
×
×
  • Создать...