Микроконтроллеры AVR - применение и Краткий Курс - часть 9

 
1 11 12 13 14 15 47

GOGI

координатор
★★★★
Люди, как наиболее быстро передать последовательность байтов от одного МК другому. Я понимаю, что наиболее быстро будет с порта на порт передавать, но желательно точный алгоритм.
1  

Yuran

опытный

Люди, как наиболее быстро передать последовательность байтов от одного МК другому. Я понимаю, что наиболее быстро будет с порта на порт передавать, но желательно точный алгоритм.
 


1) А какая требуется пропусканая способность?
2) Сколько ног не жалко?
3) Нужна ли проверка правильности приёма?
 

GOGI

координатор
★★★★
1. В смысле пропускная способность? Чем быстрее, тем лучше.
2. Ну желательно не больше двух портов.
3. Если через раз не будет неправильно приема, то не надо. МК на одной плате расположены.
1  

SAA

втянувшийся

1. В смысле пропускная способность? Чем быстрее, тем лучше.
2. Ну желательно не больше двух портов.
3. Если через раз не будет неправильно приема, то не надо. МК на одной плате расположены.
 


Почему не последовательный канал? Например SPI 4MHz.

А так можно выделить под стробирование 1 разряд, под ошибку еще разряд.

ПРИЕМ A > ПЕРЕДАЧА
строб>
<ERR

Передавать параллельно:
Готовим пакет в конце пакета CRC
а) строб вниз
б) выставил байт в порт А
в) строб вверх
г) строб вниз
по перепаду на стробе (пусть будет любой INT) отрабатывает программа приема:
Ожидаем INT
а) взять байт с порта А
б) складировать в память
в) пакет есть? если нет то на ожидание INT
г) если набран пакет, расчитываем CRC на всю длину пакета - 2 последних байта, сверяем с двумя последними байтами
д) при несовпадении выставляем ERR

На стороне передатчика обработчик ERR:
a) Пакет не принят
 
RU termostat #18.04.2006 21:29
+
-
edit
 

termostat

аксакал

Люди, как наиболее быстро передать последовательность байтов от одного МК другому.
 


по моему проще всего передавать по 8 линиям данные и еще 1 линию (на ножку внешнего прерывания конечно) использовать как такт.

Аналогично картинкам передачи по SPI в ДШ.
Тоолько где там биты нарисованы - передавать
байты.

и наверно паетами определенной длины, чтоб принимающий МК знал это.

Если они на одной плате может и такт им общий сделать ? Один кварц на двоих.


GOGI

координатор
★★★★
А как можно один такт на двоих сделать?
1  

SiNil

новичок
А как можно один такт на двоих сделать?
 

Блин, опять косяк с отправкой :(

Я делал так.
Один МК работает от кварца, а при установленном фьюзе CKOPT (вроде, надо уточнить) на выводе XTAL2 получается тактовый сигнал "от-пика-до-пика". Его, по ДШ, надо подавать на буфер (инвертирующий), но т.к. тебе надо нагрузить только на одну ногу (на XTAL1 второго МК), то можно и без буфера. Тогда оба МК будут работать не синфазно. А это , по ходу, для данной схемы, гут. По фронту один МК выставляет данные, по спаду (для второго это фронт будет) второй их берет.
Вот. У меня работает (в смысле, такое тактирование).
 
Это сообщение редактировалось 18.04.2006 в 23:15
RU termostat #18.04.2006 23:57
+
-
edit
 

termostat

аксакал

А как можно один такт на двоих сделать?
 


я знаю что оба конфигурируют на работу от кварца, на том МК где есть кварц конденсатор у XTAL2 ставят поменьше на 8-12 пФ и сигнал с ней подают XTAL1 на второго МК. Желательно чтоб дорожка была как можно короче.

NoS

новичок
Наверное многие видели схемы контроллера IDE CD ROM, вот я задался целью сделать, тока свой. Есть информация (кто-то дрова дизассемблировал и нужное сведения черпал), типа ATAPI CDROM. Так вот, там везде написоно, мол в порт 176h послать инфу типа 4Е 1А и тд. вот мне непонятно, как выбирать этот самый порт (его же регистром там называют). Разъем из себя представляет следующее: три ноги адреса, 16 информационных, остальные там всякие земли, разрешения того сего и т.д. Как тут быть, есть какие мысли?
 

SiNil

новичок
я знаю что оба конфигурируют на работу от кварца, на том МК где есть кварц конденсатор у XTAL2 ставят поменьше на 8-12 пФ и сигнал с ней подают XTAL1 на второго МК. Желательно чтоб дорожка была как можно короче.
 

Второй надо сконфигурировать на работу от внешнего источника, а первый, как я указал выше. Это предусмотренно ДШ. После универа гляну, какой фьюз за это отвечакет. У меня расстояние на плате от XTAL2 1го до другого вывода примерно 3,5 см. Работает.
 

SAA

втянувшийся

по моему проще всего передавать по 8 линиям данные и еще 1 линию (на ножку внешнего прерывания конечно) использовать как такт.
 


Когда то давно пришлось делать такую штуку (грф.табло на торце здания) так вот рядом со зданием стояли автоматические ворота и очень долго мы не понимали от куда прут сбои, а схем а была реализована именно так (т.е. порт в порт и строб(прерывание)). Когд аразобрались что сбой происходит во время включения ворот, решили все хорошенько проэкранировать. Смысл в том что сбой происходил все равно но уже намного реже, для того что бы контролировать целостность данных и сделали линию "ошибка", которую хост воспринимал однозначно и повторял пакет. Ну вот только тогда можно было со спокойным сердцем уйти на рождественские каникулы, возратились через неделю на работу - а все работает ;) мультики на табло крутятся.
 
RU termostat #19.04.2006 09:57
+
-
edit
 

termostat

аксакал

Наверное многие видели схемы контроллера IDE CD ROM, вот я задался целью сделать, тока свой.
 


дак посмотри код к аналогичным проектам - как там сделано ?

at90

новичок
Тут есть одна задача. Есть цифровой сигнал состоящий из двух частот.Т.е некоторая пачка импульсов. сигнал примерно 30 импульсов по 100мкс и 20 импульсов 575 мкс.
Количество импульсов и частоты могут быть разными. Как распознать такой сигнал?
 

Pooh2

новичок
Вот вам - Чипсет DOLPHIN - заказывайте наздоровье !

Чипсет состоит из 2-х микросхем: TRF6903 и DBB03:
Полное описание проекта (включая gerber файлы печатных плат) доступно здесь.



Frequency Hopping Spread Spectrum (FHSS) Wireless UART Chipset Reference Design - DOLPHIN-WUART-REF - TI Tool Folder

Dolphin is a Frequency Hopping Spread Spectrum (FHSS) Wireless UART chipset for the 902-928 MHz US ISM Band. The Dolphin chipset is a FCC pre-certified reference design and consists of the TRF6903 RF transciever and the digital baseband ASIC DBB03. The DBB03 contains the firmware for the Dolphin chipset in its ROM-based program memory.

The schematics and layout of the Dolphin chipset are provided and can be used as a FCC pre-certified reference design to lower system development hurdles and hence faster time to market.



// focus.ti.com
 

 


Что-то я не видел такого чипсета в сэмплах... или имеется в виду заказывайте и покупайте?
 
RU Андрей Суворов #19.04.2006 11:05
+
-
edit
 

Андрей Суворов

координатор

Наверное многие видели схемы контроллера IDE CD ROM, вот я задался целью сделать, тока свой. Есть информация (кто-то дрова дизассемблировал и нужное сведения черпал), типа ATAPI CDROM. Так вот, там везде написоно, мол в порт 176h послать инфу типа 4Е 1А и тд. вот мне непонятно, как выбирать этот самый порт (его же регистром там называют). Разъем из себя представляет следующее: три ноги адреса, 16 информационных, остальные там всякие земли, разрешения того сего и т.д. Как тут быть, есть какие мысли?
 

Всё очень просто. При попадании в окно 170H-17FH контроллер вырабатывает сигнал CS0 (активный - низкий). Если три адресные линии при этом в нуле, то это адрес 170, и так до 177. Надо ещё помнить про сигнал IOCS16, т.к. регистр данных доступен только при активном этом сигнале, а при неактивном с адреса 171 будет читаться другой регистр.
При самостоятельном управлении (эмуляция контроллера на АВР-ке) все адреса съезжают в диапазон 0-7, плюс ещё CS1 отвечает за пару регистров, но, вроде, сидиромы его не используют. Если CS0 припаять к А7 авр-ки, например, то адреса будут 70-77
 

NoS

новичок
Спасибо, именно это и интересовало на данном этапе.
Если CS0 припаять к А7 авр-ки, например, то адреса будут 70-77
 

Это, насколько я знаю, c master/slave связанно. Мне это действительно не нужно.

Еще некоторые неточности:
цитата из документа:

"AP - Atapi пакет, 12 байт передаваемых в CD-Rom. Содержат команду
и основные данные для нее."

В какой последовательности их читать/писат (ну типа младший/старший)?

Отсюда:

"Первый байт в AP является кодом команды. Это единственный байт, который
анализируется всегда. Остальные 11 байт содержат информацию, зависящую
от конкретной команды.
"
мне кажется, что первым отправлять надо старший байт (который единственный анализируемый всегда), а принимать, наверное, тоже со старшего надо начинать. Я правильно понял? В общем чет я запутался, какой старший, какой младший...
Пока все, заранее спасибо.
 
Это сообщение редактировалось 19.04.2006 в 12:12
RU termostat #19.04.2006 13:33
+
-
edit
 

termostat

аксакал

цифровой сигнал состоящий из двух частот.Т.е некоторая пачка импульсов. сигнал примерно 30 импульсов по 100мкс и 20 импульсов 575 мкс. Как распознать такой сигнал?
 


Подать его на ногу внешнего прерывания INTx и измерять его длительность с заданой точностью - селектировать по результату. Например сигнал длительностью от (0.85*100) до (100/0.85) считать импульсом в 100 мкС.

Примерно так:

1) настроить INTx на прерывание по изменению уровня.

2) Выполнять остальную программу МК

3) при прерывании запустить счет таймера_1 (16 битного)
4) при следующем прерывании остановить счет таймера и сохранить насчитаное значение.
5) запустить расчет насчитаного и считая пойти на 3)

SAA

втянувшийся

Обычно МК с такой штукой называют типа "USB-to-GO" например LPC2148 ну и всяко разно, AVR32 наверно тоже.
 


Т.е. релизация хаба на "функции" невозможна просто физически? Или возможна но затруднена настолько что лучше воспользоваться специализированной микросхемой. Если можно кратко какие трудности появяться если разрешать их при помощи AVR.
 
RU Андрей Суворов #19.04.2006 15:33
+
-
edit
 

Андрей Суворов

координатор

Т.е. релизация хаба на "функции" невозможна просто физически? Или возможна но затруднена настолько что лучше воспользоваться специализированной микросхемой. Если можно кратко какие трудности появяться если разрешать их при помощи AVR.
 


Объём программы чересчур велик выходит. Кроме того, не успеет АВР-ка на 12 Мбит/с. Функция-то на 1,5 работает, а для хоста необходимо поддерживать обе скорости.

У Cypress есть удобный хост, который можно подключить почти к чему угодно - CY7C67300-100AI . Вот только сэмплы они ну ооооочень долго везут.
 

ma2x

новичок
А кто знает как код для 80с51 переделать для atmega??? ;D
code text
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;   This is a program that was written by Todd Fitzsimmons
  4. ;   to communicate with the SED1560 small graphic 64x100.
  5. ;   Version 1.0 written on 1/22/98.  
  6. ;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8.  
  9.  
  10.           .ORG    00H            ;SETS UP THE ORIGIN
  11.           MOV     08AH,#07FH     ;SETS INTERNAL TIMER
  12.           MOV     08CH,#0C1H      ;TO 16000 CLOCK
  13.           MOV     0A8H,#082H      ;FOR WDT
  14.           AJMP    MAIN           ;JUMP TO SKIP INTERUPT ROUTINE
  15.           MOV     0A6H,#1EH      ;VECTOR FOR INTERUPT ROUTINE
  16.           MOV     0A6H,#0E1H     ;RESETS WDT
  17.           MOV     08AH,#07FH     ;RESETS TIMER FOR FUTURE INTERUPTS
  18.           MOV     08CH,#0C1H     ;
  19.           RETI                   ;RETURN FROM INTERUPT
  20. MAIN:     MOV     089H,#01H      ;SETS UP 16 BIT TIMER "0"
  21.           MOV     088H,#10H      ;TURNS TIMER "0" ON
  22.           ;
  23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  24. ;
  25. ;       This above code takes care of the watch dog timer so that the
  26. ;       program may continue to run
  27. ;
  28. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  29.           ;
  30.           MOV     0C0H,#70H      ;NULL DATA
  31.           MOV     0F8H,#00H      ;NULL DATA
  32.           MOV     0B0H,#00H      ;NULL DATA
  33.           MOV     090H,#00H      ;NULL DATA
  34.           ;
  35. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  36. ;
  37. ;       The program listed below is the initialization for the SED1330
  38. ;
  39. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  40.           ;
  41.           MOV     B,#02H         ;PAUSE FOR DEMO RESET FUNCTION
  42.           LCALL   WAIT
  43.           MOV     B,#0E2H        ;RESET DISPLAY
  44.           LCALL   WRCMD
  45.           MOV     B,#0C4H        ;SETS OUTPUT STATE
  46.           LCAll   WRCMD          ;
  47.           MOV     B,#0A9H        ;SETS DUTY TO 1/64
  48.           LCALL   WRCMD          ;
  49.           MOV     B,#025H        ;SETS POWER MODE
  50.           LCALL   WRCMD          ;
  51.           MOV     B,#01H         ;PAUSE FOR THE TIMING CONSTRAINTS
  52.           LCALL   WAIT           ;
  53.           MOV     B,#0EDH        ;SETS POWER MODE
  54.           LCALL   WRCMD          ;
  55.           MOV     B,#0AFH        ;TURNS DISPLAY ON
  56.           LCALL   WRCMD          ;
  57.           MOV     B,#040H        ;SET LINE ONE TO TOP LINE OF DISPLAY
  58.           LCALL   WRCMD          ;
  59.           MOV     B,#088H        ;SET THE CONTRAST
  60.           LCALL   WRCMD          ;
  61.           ;
  62. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  63. ;
  64. ;       This is where the program ends and the added on bitmaps
  65. ;       begin.
  66. ;
  67. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  68.           ;
  69. BEGIN:    MOV     34H,#0B7H      ;SETS LOWER STACK DATA
  70.           MOV     35H,#002H      ;SETS HIGHER STACK DATA
  71.           ;
  72. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  73. ;
  74. ;       This is the main program that calls the other subroutines
  75. ;       that clock in all the signals.
  76. ;
  77. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  78.           ;
  79.           MOV     B,#0EH         ;STORES FOR 14 PICTURE TO BE VIEWED
  80. LOOP:     PUSH    B
  81.           LCALL   CLEAR          ;CLEAR THE DISPLAY                
  82.           LCALL   PAINT          ;GO OUT AND PAINT THE SCREEN WITH THE BITMAP
  83.           MOV     B,#45H         ;PAUSE FOR VIEWING
  84.           LCALL   WAIT           ;                      
  85.           POP     B
  86.           DJNZ    B,LOOP
  87.           LCALL   CLEAR
  88.           MOV     B,#10H
  89.           LCALL   WAIT
  90.           LJMP    BEGIN
  91.           ;
  92. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  93. ;
  94. ;       The program below is for clocking in the bitmap stored in memory
  95. ;       at the end of this code
  96. ;
  97. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  98.           ;
  99. PAINT:    MOV     B,#03EH
  100. PAINT1:   PUSH    B
  101.           LCALL   DATA_ARM       ;GO GET DATA
  102.           POP     B
  103.           DJNZ    B,PAINT1       ;CONTINUE TO STRIP OFF 62 BITS OF NULL DATA
  104.           LCALL   BODY
  105.           RET
  106. BODY:     MOV     B,#64H         ;STORE 100 COLUMNS
  107.           AJMP    SKIP           ;SKIP OVER INCREMENT
  108. BODY1:    INC     37H            ;INCREMENT THE LOWER DATA STACK
  109.           LCALL   NEWCLMN        ;SEE IF THE LOWER 4 BITS ARE FULL
  110. SKIP:     PUSH    B
  111.           MOV     36H,#0B0H      ;SETS PAGE TO 1
  112.           LCALL   POSITION       ;GO STORE POSITION
  113.           LCALL   DATA_ARM       ;GO GET DATA
  114.           LCALL   WRDATA         ;CLOCK IN
  115.           MOV     36H,#0B1H      ;SETS PAGE TO 2
  116.           LCALL   POSITION       ;GO STORE POSITION
  117.           LCALL   DATA_ARM       ;GO GET DATA
  118.           LCALL   WRDATA         ;CLOCK IN
  119.           MOV     36H,#0B2H      ;SETS PAGE TO 3
  120.           LCALL   POSITION       ;GO STORE POSITION
  121.           LCALL   DATA_ARM       ;GO GET DATA
  122.           LCALL   WRDATA         ;CLOCK IN
  123.           MOV     36H,#0B3H      ;SETS PAGE TO 4
  124.           LCALL   POSITION       ;GO STORE POSITION
  125.           LCALL   DATA_ARM       ;GO GET DATA
  126.           LCALL   WRDATA         ;CLOCK IN
  127.           MOV     36H,#0B4H      ;SETS PAGE TO 5
  128.           LCALL   POSITION       ;GO STORE POSITION
  129.           LCALL   DATA_ARM       ;GO GET DATA
  130.           LCALL   WRDATA         ;CLOCK IN
  131.           MOV     36H,#0B5H      ;SETS PAGE TO 6
  132.           LCALL   POSITION       ;GO STORE POSITION
  133.           LCALL   DATA_ARM       ;GO GET DATA
  134.           LCALL   WRDATA         ;CLOCK IN
  135.           MOV     36H,#0B6H      ;SETS PAGE TO 7
  136.           LCALL   POSITION       ;GO STORE POSITION
  137.           LCALL   DATA_ARM       ;GO GET DATA
  138.           LCALL   WRDATA         ;CLOCK IN
  139.           MOV     36H,#0B7H      ;SETS PAGE TO 8
  140.           LCALL   POSITION       ;GO STORE POSITION
  141.           LCALL   DATA_ARM       ;GO GET DATA
  142.           LCALL   WRDATA         ;CLOCK IN
  143.           POP     B
  144.           DJNZ    B,BODY1
  145.           RET
  146.           ;
  147. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  148. ;
  149. ;         Sets the cursor to the display for what line is being
  150. ;         scanned in.
  151. ;
  152. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  153.           ;
  154. POSITION: MOV     B,36H          ;RECALL PAGE #
  155.           LCALL   WRCMD          ;CLOCK IN
  156.           MOV     B,37H          ;RECALL LOWER COLUMN DATA
  157.           LCALL   WRCMD          ;CLOCK IN
  158.           MOV     B,38H          ;RECALL HIGHER COLUMN DATA
  159.           LCALL   WRCMD          ;CLOCK IN
  160.           RET                    ;
  161. NEWCLMN:  MOV     A,37H          ;SEE LOWER 4 BITS
  162.           CJNE    A,#10H,CLMNOUT ;IF OVER 4 BITS
  163.           MOV     37H,#00H       ;THEN RESET LOWER 4 BITS
  164.           INC     38H            ;AND BUMP UP THE UPPER 4
  165. CLMNOUT:  RET
  166.           ;
  167. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  168. ;
  169. ;       This program looks to upper program memory where bitmaps are
  170. ;       stored and recalls them for higher subroutines
  171. ;
  172. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  173.           ;
  174. DATA_ARM: MOV     82H,34H        ;MOV LOWER DATA POINTER ON THE STACK
  175.           MOV     83H,35H        ;MOV HIGHER DATA POINTER ON THE STACK
  176.           MOV     A,#00H         ;CLEAR OUT REGISTER FOR TRUE DATA POINTER
  177.           MOVC    A,@A+DPTR      ;GET THE DATA POINTED TO BY THE DATA POINTER
  178.           MOV     B,A            ;SWAP
  179.           INC     DPTR           ;INCREMENT THE DATA POINTER
  180.           MOV     34H,82H        ;RESTORE LOWER DATA
  181.           MOV     35H,83H        ;RESTORE HIGHER DATA
  182.           XRL     B,#0FFH        ;SWAP THE HIGHS WITH THE LOWS
  183.           LCALL   RESTACK        ;SWAP D0 TO D7, D1 TO D6, D2 TO D5, ETC
  184.           RET                    ;
  185.           ;
  186. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  187. ;
  188. ;    The rest of these programs are simple routines that are
  189. ;    used by the main program to clear the display, send
  190. ;    commands, etc.
  191. ;
  192. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  193.           ;
  194. DELAY:    PUSH    B              ;STORE OUTER LOOP
  195. DELAY2:   MOV     A,#01FH        ;SETUP FOR INNER LOOP
  196. DELAY1:   DEC     A              
  197.           JNZ     DELAY1         ;INNER LOOP UNTIL ZERO
  198.           POP     B            
  199.           DEC     B              
  200.           PUSH    B              
  201.           MOV     A,B            
  202.           JNZ     DELAY2         ;OUTER LOOP UNTIL ZERO
  203.           POP     B              
  204.           RET                    
  205. WAIT:     PUSH    B              ;STORE OUTER LOOP
  206. WAIT1:    MOV     B,#0FFH        ;SETUP FOR INNER LOOP
  207.           LCALL   DELAY          ;"DELAY" DOES INNER LOOP
  208.           POP     B            
  209.           DEC     B              
  210.           PUSH    B              
  211.           MOV     A,B          
  212.           JNZ     WAIT1          ;OUTER LOOP UNTIL ZERO
  213.           POP     B              
  214.           LCALL   PAUSE          ;SEE IF PAUSE SWITCH IS SELECTED
  215.           RET
  216.           ;
  217. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  218. ;    
  219. ;      This is a subroutine that is needed for the graphics
  220. ;      write command only in Densitron software.  All Densitron
  221. ;      graphical pictures for LCDs are originally written for
  222. ;      the Hitachi HD61830 Chip set.  So this subroutine is
  223. ;      just a conversion from the Hitachi chip to the Toshiba. The
  224. ;      differences is that in bit mapping to the Hitachi HD61830,
  225. ;      you write it like D0,D1,D2,D3,D4,D5,D6,D7 and the Toshiba
  226. ;      T6963 you write it like D7,D6,D5,D4,D3,D2,D1,D0.  So it
  227. ;      is merely swaping the MSB with the LSB.
  228. ;
  229. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  230.           ;
  231. RESTACK:  MOV     A,B
  232.           RL      A
  233.           MOV     B,A
  234.           PUSH    B              ;STORE THE DATA
  235.           ANL     A,#11H         ;STRIP OFF D3 AND D7
  236.           MOV     40H,A          ;STORE D3 AND D7
  237.           POP     B              ;
  238.           MOV     A,B
  239.           RL      A              ;ROTATE LEFT
  240.           RL      A              ;ROTATE LEFT
  241.           MOV     B,A
  242.           PUSH    B              ;
  243.           ANL     A,#22H         ;STRIP OFF D2 AND D6
  244.           MOV     41H,A          ;STORE D2 AND D6
  245.           POP     B              ;
  246.           MOV     A,B
  247.           RL      A              ;ROTATE LEFT
  248.           RL      A              ;ROTATE LEFT
  249.           MOV     B,A
  250.           PUSH    B              ;
  251.           ANL     A,#44H         ;STRIP OFF D1 AND D5
  252.           MOV     42H,A          ;STORE D1 AND D5
  253.           POP     B              ;
  254.           MOV     A,B
  255.           RL      A              ;ROTATE LEFT
  256.           RL      A              ;ROTATE LEFT
  257.           ANL     A,#88H         ;STRIP OFF D0 AND D4
  258.           ORL     A,42H          ;MIX IN D1 AND D5
  259.           ORL     A,41H          ;MIX IN D2 AND D6
  260.           ORL     A,40H          ;MIX IN D3 AND D7
  261.           MOV     B,A
  262.           RET
  263.           ;
  264. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  265. ;
  266. ;       The programs listed below are what clocks in the signals,
  267. ;       both for data and commands
  268. ;
  269. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  270.           ;
  271. WRDATA:   MOV     090H,B         ;PUTS DATA ON PORT ONE
  272.           MOV     0C0H,#071H     ;SETS RD/WR LOW AND A0 LOW
  273.           MOV     0C0H,#075H     ;STROBE ENABLE HIGH
  274.           MOV     0C0H,#071H     ;STROBE ENABLE LOW
  275.           RET                    ;RETURN
  276. WRCMD:    MOV     090H,B         ;PUTS COMMAND ON PORT ONE
  277.           MOV     0C0H,#070H     ;SETS RD/WR LOW AND A0 HIGH
  278.           MOV     0C0H,#074H     ;STROBE ENABLE HIGH
  279.           MOV     0C0H,#070H     ;STROBE ENABLE LOW
  280.           RET                    ;RETURN
  281. RDSTATUS: MOV     090H,#0FFH
  282.           MOV     0C0H,#072H
  283.           MOV     0C0H,#076H
  284.           MOV     B,090H
  285.           MOV     0C0H,#072H
  286.           RET
  287. PAUSE:    MOV     0F8H,#0FFH     ;SET PORT 4 AS AN INPUT
  288. PAUSE1:   MOV     B,0F8H
  289.           ANL     B,#80H         ;STRIP OFF THE HIGHEST BIT
  290.           MOV     A,B
  291.           CJNE    A,#80H,PAUSE1  ;IF THE PAUSE SWITCH IS SET THEN LOOP
  292.           RET
  293. CLEAR:    MOV     36H,#0B0H      ;STORE THE PAGE #
  294.           MOV     37H,#001H      ;STORE THE LOWER 4 BITS OF THE COLUMN
  295.           MOV     38H,#012H      ;STORE THE HIGHER 4 BITS OF THE COLUMN
  296.           LCALL   POSITION       ;SET UP THE POSITION
  297.           MOV     B,#064H        ;SET UP OUTER LOOP
  298. CLEAR1:   PUSH    B              ;
  299.           MOV     B,#000H        ;SEND NULL DATA
  300.           LCALL   WRDATA         ;CLOCK IN
  301.           POP     B
  302.           DJNZ    B,CLEAR1       ;LOOP UNTIL ALL ARE ZERO
  303.           MOV     36H,#0B1H      ;MOVE TO PAGE 2
  304.           LCALL   POSITION       ;SET UP THE POSITION
  305.           MOV     B,#64H         ;SET UP OUTER LOOP
  306. CLEAR2:   PUSH    B
  307.           MOV     B,#000H        ;SEND NULL DATA
  308.           LCALL   WRDATA         ;CLOCK IN
  309.           POP     B
  310.           DJNZ    B,CLEAR2       ;LOOP UNTIL ALL ARE ZERO
  311.           MOV     36H,#0B2H      ;MOVE TO PAGE 3
  312.           LCALL   POSITION       ;SET UP THE POSITION
  313.           MOV     B,#64H         ;SET UP OUTER LOOP
  314. CLEAR3:   PUSH    B
  315.           MOV     B,#000H        ;SEND NULL DATA
  316.           LCALL   WRDATA         ;CLOCK IN
  317.           POP     B
  318.           DJNZ    B,CLEAR3       ;LOOP UNTIL ALL ARE ZERO
  319.           MOV     36H,#0B3H      ;MOVE TO PAGE 4
  320.           LCALL   POSITION       ;SET UP THE POSITION
  321.           MOV     B,#64H         ;SET UP OUTER LOOP
  322. CLEAR4:   PUSH    B
  323.           MOV     B,#000H        ;SEND NULL DATA
  324.           LCALL   WRDATA         ;CLOCK IN
  325.           POP     B
  326.           DJNZ    B,CLEAR4       ;LOOP UNTIL ALL ARE ZERO
  327.           MOV     36H,#0B4H      ;MOVE TO PAGE 8
  328.           LCALL   POSITION       ;SET UP THE POSITION
  329.           MOV     B,#64H         ;SET UP OUTER LOOP
  330. CLEAR5:   PUSH    B
  331.           MOV     B,#000H        ;SEND NULL DATA
  332.           LCALL   WRDATA         ;CLOCK IN
  333.           POP     B
  334.           DJNZ    B,CLEAR5       ;LOOP UNTIL ALL ARE ZERO
  335.           MOV     36H,#0B5H      ;MOVE TO PAGE 8
  336.           LCALL   POSITION       ;SET UP THE POSITION
  337.           MOV     B,#64H         ;SET UP OUTER LOOP
  338. CLEAR6:   PUSH    B
  339.           MOV     B,#000H        ;SEND NULL DATA
  340.           LCALL   WRDATA         ;CLOCK IN
  341.           POP     B
  342.           DJNZ    B,CLEAR6       ;LOOP UNTIL ALL ARE ZERO
  343.           MOV     36H,#0B6H      ;MOVE TO PAGE 8
  344.           LCALL   POSITION       ;SET UP THE POSITION
  345.           MOV     B,#64H         ;SET UP OUTER LOOP
  346. CLEAR7:   PUSH    B
  347.           MOV     B,#000H        ;SEND NULL DATA
  348.           LCALL   WRDATA         ;CLOCK IN
  349.           POP     B
  350.           DJNZ    B,CLEAR7       ;LOOP UNTIL ALL ARE ZERO
  351.           MOV     36H,#0B7H      ;MOVE TO PAGE 8
  352.           LCALL   POSITION       ;SET UP THE POSITION
  353.           MOV     B,#64H         ;SET UP OUTER LOOP
  354. CLEAR8:   PUSH    B
  355.           MOV     B,#000H        ;SEND NULL DATA
  356.           LCALL   WRDATA         ;CLOCK IN
  357.           POP     B
  358.           DJNZ    B,CLEAR8       ;LOOP UNTIL ALL ARE ZERO
  359.           RET
  360. CONTRAST: MOV    A,#080H
  361.           MOV    B,A
  362. CONT:     PUSH   B
  363.           LCALL  WRCMD
  364.           MOV    B,#03H
  365.           LCALL  WAIT
  366.           POP    B
  367.           MOV    A,B
  368.           INC    A
  369.           MOV    B,A
  370.           CJNE   A,#0A0H,CONT
  371.           RET
  372.           .END


 

SAA

втянувшийся

У Cypress есть удобный хост, который можно подключить почти к чему угодно - CY7C67300-100AI . Вот только сэмплы они ну ооооочень долго везут.
 


Спасибо, в России он очень дорого стоит или кроме как в семплах не существует?
 
RU Андрей Суворов #20.04.2006 10:33
+
-
edit
 

Андрей Суворов

координатор

Спасибо, в России он очень дорого стоит или кроме как в семплах не существует?
 

Я, сказать честно, не пробовал его купить - просто зашёл на сайт Сайпресса и заказал сэмплы. Через месяц они прислали мне е-мэйл, о том, что заказ принят и сейчас обрабатывается. В то же время, от Аналог девайса сэмплы доходят за две-три недели уже до дома.
 

at90

новичок
Ещё есть хост SL811. Очень удобный.
 
RU Андрей Суворов #21.04.2006 12:55
+
-
edit
 

NoS

новичок
Для динамической индикации хочу использовать дешифратор. Т.к. документацию на наш к555ид10 не нашел, решил использовать его аналог SN74LS145. Так вот там (впрочем, как и на нашем) все выходы инвертированы (всегда на одной из ног низкий уроветь, на остальных - высокий). Не та ли здесь ситуация, как и на мк АВР(типа в "низкий уровень" ток будет втекать)?
 
Это сообщение редактировалось 22.04.2006 в 17:42
1 11 12 13 14 15 47

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru