Mostrando postagens com marcador microchip. Mostrar todas as postagens
Mostrando postagens com marcador microchip. Mostrar todas as postagens

segunda-feira, dezembro 12, 2011

Google doodles: Robert Noyce



O Google está homenageando no seu doodle de hoje o 84° aniversário do inventor do circuito integrado e co-fundador da Intel Corporation, o prefeito do Vale do Silicio, Robert Noyce.

Ele morreu em 1990 aos 60 anos, mas deixou a imensa contribuição para a humanidade.

quarta-feira, junho 30, 2010

Fotos do meu último experimento

Aí estão as fotos da montagem do meu último experimento (nada científico) com o PIC 16F628A da Microchip.
 
Mas não se anime, pois não está funcionando :(
 
Vou dar uma debugada depois, com calma, pois no Proteus está funcionando. Devo ter feito alguma barberagem na hora de montar, sei lá.
 
O que acontece é que quando o botão é pressionado os dois LEDs vermelhos apagam e o verde não liga.
 
Eis as fotos:
 
See at http://www.flickr.com/photos/jeanjmichel
 
See at http://www.flickr.com/photos/jeanjmichel
 
See at http://www.flickr.com/photos/jeanjmichel
 
See at http://www.flickr.com/photos/jeanjmichel

quarta-feira, junho 09, 2010

Mais um experimento com PIC 16F628A e Assembly

Seguindo a minha saga pelo mundo dos microcontroladores, hoje fiz mais um exemplo em Assembly usando o PIC 16F628A da Microchip.
 
A brincadeira é permutar entre o acendimento de um ou outro LED via chave táctil.
 
O fluxo do programa é este:
 
Fluxo
 
Aqui estão as imagens da simulação do circuito feita no Proteus:
 
Circuito desligado
Circuito desligado.
 
Circuito ligado
Circuito ligado.
 
Chave pressionada
Chave pressionada.
 
E aqui está o código Assembly:
 
;******************************************************************************;
; Processor: PIC16F628 at 4 MHz using internal RC oscillator                   ;
; Function : When the circuit is energized two LEDs will turn on, the power    ;
;            indicator and LED_D1. Every time the button is pressed the LED_D1 ;
;            will turn off and the LED_D2 will turn on, the opposite occurs    ;
;            when the button is released, turning off the LED_D2 and turning   ;
;            on the LED_D1 again.                                              ;
; Hardware : Protoboard                                                        ;
; Filename : main.asm                                                          ;
; Author   : Jean J. Míchel <jeanjmichel-at-gmail.com>                         ;
; Website  : http://www.jeanjmichel.blogspot.com                               ;
; Credit   :                                                                   ;
;******************************************************************************;
; Wiring diagram                               +-/\/\/--|>|--o GND             ;
;                                  +---v---+   |  R2    LED_PWR                ;
;                                -<|º  1   |>--+                               ;
;                                -<|   6   |>----/\/\/--|>|--o GND             ;
;                                -<|   F   |>--+  R3    D1                     ;
;                                -<|   6   |>- |                               ;
;                                -<|   2   |>- +-/\/\/--|>|--o GND             ;
;                                -<|   8   |>-    R4    D2                     ;
;                                -<|   A   |>-                                 ;
;                                -<|       |>--+----o¯o----o VDD 5v            ;
;                                  +-------+   |    R1                         ;
;                                              +---/\/\/---o GND               ;
;******************************************************************************;
#include  <p16f628a.inc>
list p=16f628a
ERRORLEVEL 0, -302;, -224, -302, -305, -207
__config (_INTOSC_OSC_NOCLKOUT & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_OFF)
 
#define   select_bank0  bcf STATUS,RP0
#define   select_bank1  bsf STATUS,RP0
#define   LED_PWR  PORTA,1
#define   LED_D1   PORTA,0
#define   LED_D2   PORTA,7
#define   BUTTON   PORTB,4
 
                org       0x00
                goto      setup              ;Perform the initial settings     ;
                
main            btfsc     BUTTON             ;Monitors the action of the button;
                goto      turn_on_d2         ;Turns on LED_D2                  ;
                goto      turn_on_d1         ;Turns on LED_D1                  ;
                
turn_on_d1      bcf       LED_D2             ;Turns off LED_D2                 ;
                bsf       LED_D1             ;Turns on LED_D1                  ;
                goto      main
                
turn_on_d2      bcf       LED_D1             ;Turns off LED_D1                 ;
                bsf       LED_D2             ;Turns on LED_D2                  ;
                goto      main
                
setup           select_bank1
                movlw     B'00000000'        ;Defines all pins of the PORTA    ;
                movwf     TRISA              ;registrator as output            ;
                
                movlw     B'00010000'        ;Defines all pins of the PORTB    ;
                movwf     TRISB              ;registrator as output except the ;
                                             ;the pin 4 - push button          ;
                
                bsf       PCON, OSCF         ;Sets 16F628 to operate at 4MHz   ;
                
                select_bank0
                movlw     0x07
                movwf     CMCON              ;Turns off the comparator         ;
                
                clrf      PORTA              ;Clears all pins of the PORTA     ;
                                             ;registrator                      ;
                
                clrf      PORTB              ;Clears all pins of the PORTB     ;
                                             ;registrator                      ;
                
                bsf       LED_PWR            ;Turns on LED_PWR - power LED     ;
 
 
                goto      main               ;Loop forever ;)                  ;
 
end
 
Enjoy!

sábado, junho 05, 2010

Eletrônica - micro controlador Microchip 16F628A + Assembly [fotos]

Tinha ficado devendo as fotos do meu experimento com o PIC 16F628A da Microchip, bem aqui estão elas:
 
Montagem na protoboard
 
Montagem na protoboard
 
Montagem na protoboard
 
Ficou bem legal, funcionou conforme o simulado, mas dei algumas mancadas na hora de construir o circuito, falta de prática :-D.

terça-feira, junho 01, 2010

Eletrônica - micro controlador Microchip 16F628A + Assembly

Quem, assim como eu, trabalha com TI está acostumado a ver sistemas transformando informações em informações =P, ou seja, dados vem daqui e vão para lá. Isso me deixa um pouco frustrado, pois não construo nada, não vejo nada acontecer, etc. (não me diga que ver um gráfico em um relatório é "ver" as coisas acontecerem em um sistema ;) ) então voltei para os meus primórdios sonhos infantis de construir alguma coisa (na verdade um robô) e para isso invoquei meus conhecimentos de quando tinha 15 anos e estudei na Escola Estadual Técnica Parobé (hoje Centro Tecnológico Estadual Parobé), onde cursei eletrônica.
 
Junte a vontade de fazer algo "se mexer" a ter um colega com skills do Professor Pardal a muitas conversas sobre automação na hora do almoço e um passeio pela Rua República do Líbano (onde estão as lojas de componentes eletrônicos aqui no Rio de Janeiro) e então terás nas mãos uma protoboard, um punhado de componentes e muita diversão ;)
 
Comecei leve: um micro controlador da Microchip (16F628A), dois LEDs, um botão e um programa escrito em Assembly. Assembly ao invés de C porque é o mais próximo que podemos chegar de ver os elétrons passando pela placa ;).
 
A brincadeira é muito simples, mas com ela tive contato com Assembly para micro controladores, o que não conhecia.
 
Vamos lá, o negócio é ter dois LEDs ligados no PIC, um ficará permanentemente aceso (indicando que o circuito está ligado) e o outro LED ficará desligado até que se pressione o botão, que o ligará.
 
Eis a simulação do circuito (as imagens podem ser vistas direto no Flickr: http://www.flickr.com/photos/jeanjmichel/sets/72157624156071640/):
 
Circuito desligado:
desligado
 
Circuito ligado:
ligado
 
Circuito em uso (botão pressionado):
ligado
 
Eis o código Assembly:
 
;******************************************************************************;
; Processor: PIC16F628 at 4 MHz using internal RC oscillator                   ;
; Function : Switch on two LEDs. The first LED (D1), conenected to RB0, turns  ;
;            on when the circuit is energized (power LED), while the second    ;
;            LED (D2), connected to RA1, just turns on when the push button    ;
;            (PB1) is pressed.                                                 ;
; Hardware : Protoboard                                                        ;
; Filename : main.asm                                                          ;
; Author   : Jean J. Míchel <jeanjmichel-at-gmail.com>                         ;
; Website  : http://www.jeanjmichel.blogspot.com                               ;
; Credit   : Eduardo Bekman                                                    ;
;******************************************************************************;
; Wiring diagram                                                               ;
;                                  +---v---+    R1    D1                       ;
;                                -<|º  1   |>--/\/\/--|>|--o GND               ;
;                                -<|   6   |>--+                               ;
;                                -<|   F   |>- +----o¯o----o VDD 5v            ;
;                                -<|   6   |>- |    PB1                        ;
;                     D2    R3   -<|   2   |>- |                               ;
;              GND o--|<|--/\/\/--<|   8   |>- +---/\/\/---o GND               ;
;                                -<|   A   |>-      R2                         ;
;                                -<|       |>-                                 ;
;                                  +-------+                                   ;
;                                                                              ;
;******************************************************************************;
#include  <p16f628a.inc>
list p=16f628a
ERRORLEVEL 0, -302;, -224, -302, -305, -207
__config (_INTOSC_OSC_NOCLKOUT & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_OFF)
 
#define   select_bank0  bcf STATUS,RP0
#define   select_bank1  bsf STATUS,RP0
#define   BUTTON  PORTA,0
#define   LED_D1  PORTA,1
#define   LED_D2  PORTB,0
 
                org       0x00
                goto      setup              ;Perform the initial settings     ;
 
main            btfsc     BUTTON             ;Monitors the action of the button;
                goto      turn_on_led        ;Turns on LED_D1                  ;
                goto      turn_off_led       ;Turns off LED_D1                 ;
 
turn_on_led     bsf       LED_D1             ;Turns on LED_D1                  ;
                goto      main
 
turn_off_led    bcf       LED_D1             ;Turns off LED_D1                 ;
                goto      main
 
setup           select_bank1
                movlw     B'00000001'        ;Defines all pins of the PORTA    ;
                movwf     TRISA              ;registrator as output except     ;
                                             ;pin 0 - push button              ;
 
                movlw     B'00000000'        ;Defines all pins of the PORTB    ;
                movwf     TRISB              ;registrator as output            ;
 
                bsf       PCON, OSCF         ;Sets 16F628 to operate at 4MHz   ;
 
                select_bank0
                movlw     0x07
                movwf     CMCON              ;Turns off the comparator         ;
 
                clrf      PORTA              ;Clears all pins of the PORTA     ;
                                             ;registrator                      ;
 
                clrf      PORTB              ;Clears all pins of the PORTB     ;
                                             ;registrator                      ;
 
                bsf       LED_D2             ;Turns on LED_D2 - power LED      ;
                goto      main               ;Loop forever ;)                  ;
 
end
 
Ainda não consegui monta-lo na protoboard para postar fotos e vídeos do projeto funcionando, mas assim que o fizer eu posto.