Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Mega8+ЖКИ на pcf8576c от МЕЛТ
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
NikolayTLM
Доброго всем времени суток.

Есть ЖКИ MT10T11 фирмы МЕЛТ ну и соответственно плата с восьмой мегой.
Дисплей подключен по всем правилам, линии подтянуты резисторами по 10Ком. Все хозяйство работает на аппаратном прерывании. Алгоритм следующий:
1) формируется команда СТАРТ
2) затем высылается АДРЕС + SLA_W бит
3) затем пачка команд:
CE-MODE SELECT (LP=0, E=1, B=1, M1=1, M0=0)
E0-DEVICE SELECT (A2=0, A1=0, A0=0)
F8-BANK SELECT (I=0, O=0)
F0-BLINK (A=0, BF1=0, BF0=0)
00-LOAD DATA POINTER (P0-P5=0) последняя команда
4) затем 10 байт данных (EE,44,DA,D6,74,B6,BE,E4,FE,F6) -цыфры от 0 до 9
5) формируется команда СТОП

И вроде все хорошо, данные отображаются. НО после того как я изменяю эти данные (из шага 4), соответственно проделываю всю цепочку шагов с 1 по 5 - данные на дисплее остаются старые, то-есть они не обновляются. Такое ощущение что они попросту не записываются в RAM pcf8576c контроллера.

Может я чего не так засылаю или команды не те? помогите пожалуйста, а то уже вроде все перепробовал, а результата нет crying.gif

прикрепил datasheet и свою программу (Алгоритм билдер)
rezident
Если вы думаете, что каждый желающий вам помочь будет специально для этого устанавливать Algoritm Builder, то боюсь вы будет долго ждать помощи. laughing.gif Уважайте коллег! Прикрепляйте листинг программы в текстовом виде, не просто специфического вида проект.
NikolayTLM
Цитата(rezident @ Jun 7 2009, 01:23) *
Если вы думаете, что каждый желающий вам помочь будет специально для этого устанавливать Algoritm Builder, то боюсь вы будет долго ждать помощи. laughing.gif Уважайте коллег! Прикрепляйте листинг программы в текстовом виде, не просто специфического вида проект.


К сожалению на C я не пишу laughing.gif , и листинг могу только предоставить из hex фаила, который генерит Алгоритм Билдер. Но собственно нужно ли это, когда он находится в прикрепленном архиве?

Вот листинг, выдранный из AVR Studio
CODE
+00000000: C012 RJMP PC+0x0013 Relative jump
+00000001: 9518 RETI Interrupt return
+00000002: 9518 RETI Interrupt return
+00000003: 9518 RETI Interrupt return
+00000004: 9518 RETI Interrupt return
+00000005: 9518 RETI Interrupt return
+00000006: C0AA RJMP PC+0x00AB Relative jump
+00000007: 9518 RETI Interrupt return
+00000008: 9518 RETI Interrupt return
+00000009: 9518 RETI Interrupt return
+0000000A: 9518 RETI Interrupt return
+0000000B: 9518 RETI Interrupt return
+0000000C: 9518 RETI Interrupt return
+0000000D: 9518 RETI Interrupt return
+0000000E: 9518 RETI Interrupt return
+0000000F: 9518 RETI Interrupt return
+00000010: 9518 RETI Interrupt return
+00000011: C044 RJMP PC+0x0045 Relative jump
+00000012: 9518 RETI Interrupt return
+00000013: E50F LDI R16,0x5F Load immediate
+00000014: BF0D OUT 0x3D,R16 Out to I/O location
+00000015: E004 LDI R16,0x04 Load immediate
+00000016: BF0E OUT 0x3E,R16 Out to I/O location
+00000017: E000 LDI R16,0x00 Load immediate
+00000018: B903 OUT 0x03,R16 Out to I/O location
+00000019: B901 OUT 0x01,R16 Out to I/O location
+0000001A: E200 LDI R16,0x20 Load immediate
+0000001B: B900 OUT 0x00,R16 Out to I/O location
+0000001C: B501 IN R16,0x21 In from I/O location
+0000001D: 6108 ORI R16,0x18 Logical OR with immediate
+0000001E: BD01 OUT 0x21,R16 Out to I/O location
+0000001F: E007 LDI R16,0x07 Load immediate
+00000020: BD01 OUT 0x21,R16 Out to I/O location
+00000021: E100 LDI R16,0x10 Load immediate
+00000022: BF09 OUT 0x39,R16 Out to I/O location
+00000023: E000 LDI R16,0x00 Load immediate
+00000024: BD0F OUT 0x2F,R16 Out to I/O location
+00000025: E00D LDI R16,0x0D Load immediate
+00000026: BD0E OUT 0x2E,R16 Out to I/O location
+00000027: 2700 CLR R16 Clear Register
+00000028: BB05 OUT 0x15,R16 Out to I/O location
+00000029: EF0F SER R16 Set Register
+0000002A: BB04 OUT 0x14,R16 Out to I/O location
+0000002B: E10E LDI R16,0x1E Load immediate
+0000002C: BD0B OUT 0x2B,R16 Out to I/O location
+0000002D: E804 LDI R16,0x84 Load immediate
+0000002E: BD0A OUT 0x2A,R16 Out to I/O location
+0000002F: 2722 CLR R18 Clear Register
+00000030: 2711 CLR R17 Clear Register
+00000031: 2733 CLR R19 Clear Register
+00000032: 2744 CLR R20 Clear Register
+00000033: D056 RCALL PC+0x0057 Relative call subroutine
+00000034: 9478 SEI Global Interrupt Enable
+00000035: D046 RCALL PC+0x0047 Relative call subroutine
+00000036: D002 RCALL PC+0x0003 Relative call subroutine
+00000037: 0000 NOP No operation
+00000038: CFFD RJMP PC-0x0002 Relative jump
+00000039: 94F8 CLI Global Interrupt Disable
+0000003A: 2F12 MOV R17,R18 Copy register
+0000003B: 7F10 ANDI R17,0xF0 Logical AND with immediate
+0000003C: 9512 SWAP R17 Swap nibbles
+0000003D: E7E1 LDI R30,0x71 Load immediate
+0000003E: E0F0 LDI R31,0x00 Load immediate
+0000003F: 0FE1 ADD R30,R17 Add without carry
+00000040: E6A0 LDI R26,0x60 Load immediate
+00000041: E0B0 LDI R27,0x00 Load immediate
+00000042: 9617 ADIW R26,0x07 Add immediate to word
+00000043: 9101 LD R16,Z+ Load indirect and postincrement
+00000044: 930D ST X+,R16 Store indirect and postincrement
+00000045: 2F12 MOV R17,R18 Copy register
+00000046: 701F ANDI R17,0x0F Logical AND with immediate
+00000047: E7E1 LDI R30,0x71 Load immediate
+00000048: E0F0 LDI R31,0x00 Load immediate
+00000049: 0FE1 ADD R30,R17 Add without carry
+0000004A: 9101 LD R16,Z+ Load indirect and postincrement
+0000004B: 930D ST X+,R16 Store indirect and postincrement
+0000004C: E018 LDI R17,0x08 Load immediate
+0000004D: E7E1 LDI R30,0x71 Load immediate
+0000004E: E0F0 LDI R31,0x00 Load immediate
+0000004F: 9632 ADIW R30,0x02 Add immediate to word
+00000050: 9101 LD R16,Z+ Load indirect and postincrement
+00000051: 930D ST X+,R16 Store indirect and postincrement
+00000052: 951A DEC R17 Decrement
+00000053: F7E1 BRNE PC-0x03 Branch if not equal
+00000054: 9478 SEI Global Interrupt Enable
+00000055: 9518 RETI Interrupt return
+00000056: B101 IN R16,0x01 In from I/O location
+00000057: 7F08 ANDI R16,0xF8 Logical AND with immediate
+00000058: E6E0 LDI R30,0x60 Load immediate
+00000059: E0F0 LDI R31,0x00 Load immediate
+0000005A: 9533 INC R19 Increment
+0000005B: 0FE3 ADD R30,R19 Add without carry
+0000005C: E010 LDI R17,0x00 Load immediate
+0000005D: 1FF1 ADC R31,R17 Add with carry
+0000005E: 9141 LD R20,Z+ Load indirect and postincrement
+0000005F: 3131 CPI R19,0x11 Compare with immediate
+00000060: F409 BRNE PC+0x02 Branch if not equal
+00000061: D024 RCALL PC+0x0025 Relative call subroutine
+00000062: 3008 CPI R16,0x08 Compare with immediate
+00000063: F409 BRNE PC+0x02 Branch if not equal
+00000064: D010 RCALL PC+0x0011 Relative call subroutine
+00000065: 3100 CPI R16,0x10 Compare with immediate
+00000066: F409 BRNE PC+0x02 Branch if not equal
+00000067: D00D RCALL PC+0x000E Relative call subroutine
+00000068: 3108 CPI R16,0x18 Compare with immediate
+00000069: F409 BRNE PC+0x02 Branch if not equal
+0000006A: D00B RCALL PC+0x000C Relative call subroutine
+0000006B: 3200 CPI R16,0x20 Compare with immediate
+0000006C: F409 BRNE PC+0x02 Branch if not equal
+0000006D: D013 RCALL PC+0x0014 Relative call subroutine
+0000006E: 3208 CPI R16,0x28 Compare with immediate
+0000006F: F409 BRNE PC+0x02 Branch if not equal
+00000070: D005 RCALL PC+0x0006 Relative call subroutine
+00000071: 3300 CPI R16,0x30 Compare with immediate
+00000072: F409 BRNE PC+0x02 Branch if not equal
+00000073: D00D RCALL PC+0x000E Relative call subroutine
+00000074: 9518 RETI Interrupt return
+00000075: E740 LDI R20,0x70 Load immediate
+00000076: B943 OUT 0x03,R20 Out to I/O location
+00000077: EC05 LDI R16,0xC5 Load immediate
+00000078: BF06 OUT 0x36,R16 Out to I/O location
+00000079: 95A8 WDR Watchdog reset
+0000007A: BE1F OUT 0x3F,R1 Out to I/O location
+0000007B: 9518 RETI Interrupt return
+0000007C: 2733 CLR R19 Clear Register
+0000007D: B61F IN R1,0x3F In from I/O location
+0000007E: EA05 LDI R16,0xA5 Load immediate
+0000007F: BF06 OUT 0x36,R16 Out to I/O location
+00000080: 9518 RETI Interrupt return
+00000081: 2733 CLR R19 Clear Register
+00000082: B61F IN R1,0x3F In from I/O location
+00000083: EA05 LDI R16,0xA5 Load immediate
+00000084: BF06 OUT 0x36,R16 Out to I/O location
+00000085: 9518 RETI Interrupt return
+00000086: E904 LDI R16,0x94 Load immediate
+00000087: BF06 OUT 0x36,R16 Out to I/O location
+00000088: 95A8 WDR Watchdog reset
+00000089: 9518 RETI Interrupt return
+0000008A: E4E6 LDI R30,0x46 Load immediate
+0000008B: E0F1 LDI R31,0x01 Load immediate
+0000008C: E6C0 LDI R28,0x60 Load immediate
+0000008D: E0D0 LDI R29,0x00 Load immediate
+0000008E: E131 LDI R19,0x11 Load immediate
+0000008F: 95C8 LPM Load program memory
+00000090: 9209 ST Y+,R0 Store indirect and postincrement
+00000091: 5FEF SUBI R30,0xFF Subtract immediate
+00000092: 4FFF SBCI R31,0xFF Subtract immediate with carry
+00000093: 953A DEC R19 Decrement
+00000094: F7D1 BRNE PC-0x05 Branch if not equal
+00000095: 2733 CLR R19 Clear Register
+00000096: E5E8 LDI R30,0x58 Load immediate
+00000097: E0F1 LDI R31,0x01 Load immediate
+00000098: E7C1 LDI R28,0x71 Load immediate
+00000099: E0D0 LDI R29,0x00 Load immediate
+0000009A: E03A LDI R19,0x0A Load immediate
+0000009B: 95C8 LPM Load program memory
+0000009C: 9209 ST Y+,R0 Store indirect and postincrement
+0000009D: 5FEF SUBI R30,0xFF Subtract immediate
+0000009E: 4FFF SBCI R31,0xFF Subtract immediate with carry
+0000009F: 953A DEC R19 Decrement
+000000A0: F7D1 BRNE PC-0x05 Branch if not equal
+000000A1: 2733 CLR R19 Clear Register
+000000A2: 9518 RETI Interrupt return
+000000A3: 0000 NOP No operation
+000000A4: E0CE LDI R28,0x0E Load immediate
+000000A5: F0F8 BRCS PC+0x20 Branch if carry set
+000000A6: EE00 LDI R16,0xE0 Load immediate
+000000A7: DA44 RCALL PC-0x05BB Relative call subroutine
+000000A8: 74D6 ANDI R29,0x46 Logical AND with immediate
+000000A9: BEB6 OUT 0x36,R11 Out to I/O location
+000000AA: FEE4 SBRS R14,4 Skip if bit in register set
+000000AB: 00F6 ??? Data or unknown opcode
+000000AC: 44EE SBCI R30,0x4E Subtract immediate with carry
+000000AD: D6DA RCALL PC+0x06DB Relative call subroutine
+000000AE: B674 IN R7,0x34 In from I/O location
+000000AF: E4BE LDI R27,0x4E Load immediate
+000000B0: F6FE BRTC PC-0x20 Branch if T flag cleared
+000000B1: 95A8 WDR Watchdog reset
+000000B2: 9523 INC R18 Increment
+000000B3: 2F12 MOV R17,R18 Copy register
+000000B4: 701F ANDI R17,0x0F Logical AND with immediate
+000000B5: 301A CPI R17,0x0A Compare with immediate
+000000B6: F011 BREQ PC+0x03 Branch if equal
+000000B7: DFC4 RCALL PC-0x003B Relative call subroutine
+000000B8: 9518 RETI Interrupt return
+000000B9: 5F2A SUBI R18,0xFA Subtract immediate
+000000BA: 2F12 MOV R17,R18 Copy register
+000000BB: 7F10 ANDI R17,0xF0 Logical AND with immediate
+000000BC: 3A10 CPI R17,0xA0 Compare with immediate
+000000BD: F011 BREQ PC+0x03 Branch if equal
+000000BE: DFBD RCALL PC-0x0042 Relative call subroutine
+000000BF: 9518 RETI Interrupt return
+000000C0: 2722 CLR R18 Clear Register
+000000C1: DFBA RCALL PC-0x0045 Relative call subroutine
+000000C2: 9518 RETI Interrupt return

Краткое описание:

в программе выполняются две основных операции:
1) Работа с I2C
2) обработка прерывания от Таймера1 (по совпадению). каждую секунду.

Как только приходит прерывание от таймера - обрабатывается маленькая подпрограмма по работе с числами. Далее она же запускает подпрограмму работы с шиной I2C. в свою очередь которая отправляет данные на ЖКИ в строго отведенном порядке (описанном выше). Пока нет никаких прерываний выполняется программа по заполнению масива данных (отправляемых в ЖКИ).
Все передаваемые данные хранятся в SRAM памяти контроллера.

Note: кварц 8Mhz, I2C-шина настроена на 100Khz
NikolayTLM
обновил программу

теперь обмен данными по I2C инициируется после прерывания от таймера! Но все равно дисплей кажет одно и то же.

ЛЮДИ ДОБРЫЕ ПОМОГИТЕ crying.gif
NikolayTLM
Всем спасибо, разобрался! Дело так сказать было не в бабине biggrin.gif . MAX756 очень шумел!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.