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

 
 
 
Reply to this topicStart new topic
> Mega8+ЖКИ на pcf8576c от МЕЛТ, очнень нужна помощь
NikolayTLM
сообщение Jun 6 2009, 19:15
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 6-04-09
Пользователь №: 47 239



Доброго всем времени суток.

Есть ЖКИ 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 и свою программу (Алгоритм билдер)

Сообщение отредактировал NikolayTLM - Jun 6 2009, 19:49
Прикрепленные файлы
Прикрепленный файл  pcf8576c.pdf ( 258.54 килобайт ) Кол-во скачиваний: 29
Прикрепленный файл  L.rar ( 5.54 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 6 2009, 21:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Если вы думаете, что каждый желающий вам помочь будет специально для этого устанавливать Algoritm Builder, то боюсь вы будет долго ждать помощи. laughing.gif Уважайте коллег! Прикрепляйте листинг программы в текстовом виде, не просто специфического вида проект.
Go to the top of the page
 
+Quote Post
NikolayTLM
сообщение Jun 6 2009, 23:14
Сообщение #3





Группа: Участник
Сообщений: 8
Регистрация: 6-04-09
Пользователь №: 47 239



Цитата(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
Прикрепленные файлы
Прикрепленный файл  list.txt ( 13.36 килобайт ) Кол-во скачиваний: 121
 
Go to the top of the page
 
+Quote Post
NikolayTLM
сообщение Jun 7 2009, 13:42
Сообщение #4





Группа: Участник
Сообщений: 8
Регистрация: 6-04-09
Пользователь №: 47 239



обновил программу

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

ЛЮДИ ДОБРЫЕ ПОМОГИТЕ crying.gif
Причина редактирования: Удалены никчемные результаты дисассемблирования
Go to the top of the page
 
+Quote Post
NikolayTLM
сообщение Jun 24 2009, 00:42
Сообщение #5





Группа: Участник
Сообщений: 8
Регистрация: 6-04-09
Пользователь №: 47 239



Всем спасибо, разобрался! Дело так сказать было не в бабине biggrin.gif . MAX756 очень шумел!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:58
Рейтинг@Mail.ru


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