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

Artog

Участник
  • Постов

    5
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Контакты

  • ICQ
    Array
  1. Мы тоже использовали эти процы, но нам еще год назад сказали, что их сняли с производства и сейчас выгребают все с различных складов. Так что у вас может быть некондиция, потому что слишком большой процент перезаписей. Посмотри ERRATу http://atmel.com/dyn/resources/prod_documents/DOC1963.PDF - это так, для информации. Рекомендации: 1.Можно увеличить емкость конденсаторов по сбросу, чтобы проц начал работу, когда напряжение полностью стабилизируется. 2.Записывать программу по адресу отличному от 0Х00. 3.Сделать в начале программы задержку. 4.Считать контрольные суммы программы и EEPROM. Делать копии параметров хранящихся в EEPROM и, в случае ошибки контрольной суммы одной из копий, использовать копию без ошибки. 5.А вообще нужен супервизор, хотя судя по DOC1963.PDF в определенных ситуациях он тоже не поможет.
  2. Вообще, я должен был сразу сказать, что в остальных режимах UART работает нормально. Timer1 в режиме автоперегрузки в качестве baud rate - работает и Timer2 в режиме автоперегрузки в качестве baud rate тоже работает. Закомментировать строки CLR TR1; SETB TR1; тоже пробовал - не помогает. Ятак думаю что это просто глюк, и прийдется делать работу UARTа вручную.
  3. Код: 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. Программа проверена на двух микроконтроллерах (больше нет).
  4. Еще раз процитирую даташит: 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. Это единственный режим в котором можжно получить 5 бит/сек. Но он не работает. :(
  5. Ниже приведен код, который работает на 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 Может кто чего подскажет?
×
×
  • Создать...