Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

микроконтроллер и com-порт

Непрочитано 07.02.2005, 10:23  
impuls-v
Частый гость
 
Регистрация: 18.01.2005
Сообщений: 33
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
impuls-v на пути к лучшему
По умолчанию микроконтроллер и com-порт

Люди. Кто знает как передать или получить информацию с микроконтроллеров Pic или Atmel.
Помогите в данном вопрое.
Реклама:
impuls-v вне форума  
Непрочитано 07.02.2005, 15:34  
lisergin
Прописка
 
Регистрация: 29.01.2005
Адрес: Киев
Сообщений: 226
Сказал спасибо: 50
Сказали Спасибо 33 раз(а) в 24 сообщении(ях)
lisergin на пути к лучшему
По умолчанию

У меня тоже встанет буквально в скором времени такая задача, поэтому я пока не пробовал, но подзапасся теорией. Во-первых, в некоторых контроллерах уже есть внутренняя реализация RS-232 например в ПИКах это из 16-й серии 63-я, 65-я, 73-я и 74-я модели и может ещё какие-то другие, не помню точно. Если не годятся по причине относительной дороговизны или по каким-то другим, эмулируем програмно. У тебя есть описание протокола RS-232? Можно почитать и подумать. Теоретически скорость возможна вплоть до 9600 на 4-х мегагерцовой версии или 19200 на 10-ти МГцовой. Идея такая(для приема). Дождались старт-бита, а далее контролируем состояние ноги контроллера во время, соответствующее средине бита, который передается. Записываем его в CARRY и двигаем дальше в переменную приёма, и так 8 раз. Что пока не обдумывал – согласование уровней ТТЛ и RS, для приема, думаю подойдет резистор )). Ну, и если что, то всегда имеется микросхемка MAX 232 в которую с любой стороны входит ТТЛ или RS, а выходит соответственно RS или ТТЛ. Удачи!
lisergin вне форума  
Непрочитано 07.02.2005, 20:49  
xelos
Прописка
 
Регистрация: 27.08.2004
Сообщений: 98
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
xelos на пути к лучшему
По умолчанию

все намного проще с Пиками. В 16 серии есть такое понятие как SCI - последовательный интерфейс. Там на програмном уровне не надо реализовывать протокол. Все уже готовое - конфигурировать только контроллер и вперед. Он сам прерывание запустит, как байт будет считан. Буфер там на два байта, вроде.
xelos вне форума  
Непрочитано 08.02.2005, 09:58  
Гость
 
Сообщений: n/a
По умолчанию

Я имел ввиду именно для тех микроконтроллеров у которых нет встроенных интерфейсов RS-232, с зтим то все просто.
 
Непрочитано 08.02.2005, 12:19  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию

лююююдиииии!!!! Ну пользуйтесь поисковыми системами!!!
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 08.02.2005, 12:22  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию

http://piclist.com/techref/piclist/cheapic/alphabet.htm

Код:
Program #7 - Send & Receive Serially at 1200 baud 
;-----------------------------------------------------------------------;
; ALPHABET.ASM        Send and Receive serially at 1200 baud to PC      ;
;-----------------------------------------------------------------------;

;-----------------------------------------------------------------------;
;        the next 5 lines are directions to the assembler               ;
;-----------------------------------------------------------------------;

        LIST P=16F84           ;  tells which processor is used
        INCLUDE "p16f84.inc"   ;  defines various registers etc. Look it over.
        ERRORLEVEL -224        ;  supress annoying message because of tris
        __CONFIG _PWRTE_ON &_LP_OSC &_WDT_OFF   ;  configuration switches

         CBLOCK H'0C'
           txreg              ; holds byte to be transmitted
           rxreg              ; holds byte received
           char               ; holds character to be transmitted
           bitcount           ; holds count of bits when transmitting
           timecnt            ; holds counter for timer
         ENDC

           ORG 0              ; start a program memory location zero
           goto main          ; skip over subroutines

;-----------------------------------------------------------------------;
;          initialization - set up ports and timer options              ;
;-----------------------------------------------------------------------;
init:
         movlw B'00000001'    ; RA0 to input
         tris PORTA           ; contents of W copied to PORT A ...
         movlw 0
         tris PORTB           ; and PORT B
         movlw B'00000001'    ; pull-ups active
                              ; prescalar assigned to TMR0 and set 1:4
         option               ; rolls over each second
         return

;-----------------------------------------------------------------------;
;                        time delay routines                            ;
;-----------------------------------------------------------------------;
eighth:
          movlw 1              ; wait 1/8 th second
          goto $ +2            ; jump over
onesecond:
          movlw D'8'           ; wait one second
          movwf timecnt
          clrf TMR0
          bcf INTCON, T0IF     ; clear the interrupt flag
          btfss INTCON, T0IF   ; wait on T0IF to be set
          goto $ -1            ; loop till it is
          decfsz timecnt, f    ; finished timing?
          goto $ -3            ; not yet
          return               ; yes


;-----------------------------------------------------------------------;
;                     the main program                                  ;
;-----------------------------------------------------------------------;
main:                         ; this is the main program
         call init            ; set up ports
         call onesecond       ; let things settle for 1 second
loop:
         call rx              ; get a character from keyboard
         movwf char           ; save so we can increment it
         incf char, f         ; send back the next 3 characters
         movf char, W
         call tx
         incf char, f
         movf char, W
         call tx
         incf char, f
         movf char, W
         call tx
         goto loop            ; do it forever

;-----------------------------------------------------------------------;
;                 transmit byte in W at 1200 baud out RB7               ;
;-----------------------------------------------------------------------;
; normal rs232 is -V for a high, +V for a low
; this would translate to 0V for high +5 for low
tx:
         movwf txreg          ; set up transmit register
         comf txreg, f        ; flip all bits
         movlw D'8'           ; eight bits to transmit
         movwf bitcount
         bsf PORTB, 7         ; start bit (+5V is 'low')
         nop                  ; a total of 7 instruction cycles
         nop                  ; (one is the rrf at txloop)
         nop
         nop
         nop
txloop:
         rrf txreg, f         ; lsb out of txreg into carry
         rrf PORTB, f         ; bit 7 of port B high or low with carry
         nop                  ; make total loop delay 7 instruction counts
         nop                  ; 7 * 122 usec = 854, (should be 833)
         decfsz bitcount, f   ; 4 instruction cycles to here
         goto txloop          ; total 4 + 3 = 7 instructions cycles in loop
         bcf PORTB, 7         ; 0 Volts is the 'high' state this is
         nop                  ; stop bit
         nop                  ; delay 7 instruction cycles
         nop
         nop
         return

;-----------------------------------------------------------------------;
;             receive byte  at 1200 baud in RA0, put in W               ;
;-----------------------------------------------------------------------;
rx:      movlw 8              ; eight bits to input
         movwf bitcount
waitstart:
         btfss PORTA, 0       ; wait for input to go high, (start bit)
         goto waitstart
         nop                  ; wait 1/2 start bit time 3 including branch
         nop                  ; next four instruction are to make
         nop                  ; 1 bit time delay before first reading of
         nop                  ; input port
         nop
receive:
         nop                  ; make total loop delay 7 instruction counts
         nop                  ; 7 * 122 usec = 854, (should be 833)
         rrf PORTA, f         ; PORT A bit 0 into carry
         rrf rxreg, f         ; rotate carry into receive register
         decfsz bitcount, f   ;
         goto receive         ; total 4 + 3 = 7 instructions cycles in loop
         comf rxreg, W        ; return compliment of value collected
         nop                  ; wait at least one stop bit
         nop
         nop
         nop
         return

         end
вот еще http://piclist.com/techref/microchip/irtoserial.htm
http://piclist.com/techref/microchip/16f84-rs232-an.htm
http://piclist.com/techref/microchip/rs232.htm
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порт цифрового штангенциркуля Brinzmen Цифровые сигнальные процессоры 2 28.04.2009 19:09
Виртуальный ком порт Tcom Микроконтроллеры, АЦП, память и т.д 4 12.05.2007 18:24
ADNS-2051 и COM порт mDavem Цифровые сигнальные процессоры 1 23.12.2006 12:29
ИК-порт <> com порт модема shura Микроконтроллеры, АЦП, память и т.д 12 23.01.2005 02:45


Часовой пояс GMT +4, время: 06:57.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.