Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

06/07/2012 #401
Moderador

Avatar de D@rkbytes

DEPREDADORX1 dijo: Ver Mensaje
Saludos a todos,

Solicito ayuda a los amigos del foro, estudiando un poco el uso del timer0 me he topado con una pequeña dificultad para incrementarlo por el pin tocki, supongo un detalle mínimo para que funcione pero no he podido dar
Saludos DEPREDADORX1
Adjunto un sencillo ejemplo con el 16F877A, para el incremento del TMR0 por el pin RA4 (T0CKI)
Cuando el TMR0 se desborda ocurre la interrupción y es mostrado por LCD y un LED.

Suerte.
06/07/2012 #402


mecatrodatos dijo: Ver Mensaje
bien vamos con menejo de lcd con proton plus ide


dejo esquematico , simulacion , codigo fuente y .hex
buenas noches, como estan? hola espero me puedn ayudar, estoy haciendo en programa que me encienda un led durante 5 minutos y que cuando presione un pulsador durante 3 segundos se apague el led, entonces como hago para que el pulsador sepa que lo voy a presionar por tres segundos y luego apague el led?? espero me puedan ayudar. gracias.
06/07/2012 #403
Moderador

Avatar de D@rkbytes

sydjoe dijo: Ver Mensaje
como hago para que el pulsador sepa que lo voy a presionar por tres segundos y luego apague el led?? espero me puedan ayudar. gracias.
Saludos sydjoe
La respuesta es...
Utilizando la instrucción While.
Intentalo, veras que no tendrás complicación.
Ahora que si algo se te complica, posteas tu código y te ayudo con gusto.

Suerte.
06/07/2012 #404


D@rkbytes dijo: Ver Mensaje
Saludos sydjoe
La respuesta es...
Utilizando la instrucción While.
Intentalo, veras que no tendrás complicación.
Ahora que si algo se te complica, posteas tu código y te ayudo con gusto.

Suerte.
hola muchas gracias por responder lo intente con el while asi:

device= 16f877A
xtal 20
trisb=1
trisd=0
all_digital=1
dim x as byte

INICIO:
for x=0 to 5
portd.0=1 , este es el led
delayms 60000
next x
while portb.0=%00000011
portd.0=0 , este es el pulsador
wend
GOTO INICIO

y no me funciono.
06/07/2012 #405
Moderador

Avatar de D@rkbytes

sydjoe dijo: Ver Mensaje
hola muchas gracias por responder lo intente con el while asi:

device= 16f877A
xtal 20
trisb=1
trisd=0
all_digital=1
dim x as byte

INICIO:
for x=0 to 5
portd.0=1 , este es el led
delayms 60000
next x
while portb.0=%00000011
portd.0=0 , este es el pulsador
wend
GOTO INICIO

y no me funciono.
Checa este código y me avisas que tal te funciona.
Archivos Adjuntos
Tipo de Archivo: rar x Segundos.rar (9,2 KB (Kilobytes), 172 visitas)
06/07/2012 #406


D@rkbytes dijo: Ver Mensaje
Checa este código y me avisas que tal te funciona.
funciona chido!! gracias!!!, estuve cerca xq intente hacer el programa asignando una variable q se incrementra yo la habia puesto asi x=0 y despues x=x+1 y despues hice esto while portb.o=x portd.0=0 wend, pero no funciono jeje... pero muchas gracias, estoy comenzando y me gusta mucho. muchos agradecimientos....
07/07/2012 #407


Muchas gracias D@rkbytes, efectivamente era lo que buscaba pues no había podido echar a andar por el tocki, voy a analizar el código a ver en que fallaba y espero poder desarrollar algo con esto.

Suerte a todos y, nuevamente, mis sinceros agradecimientos por la ayuda!
09/07/2012 #408

Avatar de mendek

buenas noches foro, otra ves aquí intentando aprender un poco mas, lo que pasa es que me gustaría aprender a utilizar las interrupciones con un ejemplo un tanto sencillo que haga lo siguiente:

que un led parpadee indefinidamente en el puerto porta.0
y que si presiono un interruptor en el puerto portb.0 después de 500ms encienda un led en el puerto porta.1 durante 1000ms y después se apague.

desde y muchas gracias.
09/07/2012 #409


Hola mendek,

Aquí te pongo la interrupción por b.0 bien sencilla, modifica los tiempos a tu gusto, analiza los registros intcon y option reg, esos son los principales para la interrupción por b.0 y timer0.

Código:
Device = 16F877A
Xtal = 4

'Declaration for LCD 
       Declare LCD_Type = 0         ;LCD is Alpha
       Declare LCD_DTPin = PORTD.4  ;LCD data line starting port.pin
       Declare LCD_ENPin = PORTD.1  ;LCD EN line
       Declare LCD_RSPin = PORTD.0  ;LCD RS line
       Declare LCD_Interface = 4    ;LCD 4 line interface
       Declare LCD_Lines = 2


 Symbol LED= PORTB.1
 Symbol LED2=PORTB.2
 
 On Interrupt GoTo interrupcion ;  En caso de interrupción ir a subrutina interrupción
 INTCON=%10010000               ; el bit 7 habilita las interrupciones en general
                                ;  El bit 4 habilita la  interrupción B.0
 
 PROG:
  High LED
  DelayMS 200
  Low LED
  DelayMS 200
  GoTo PROG
  
  Disable             ; Desabilita las interrupciones en el handler
  
  interrupcion:              
  High LED2
  DelayMS 2000
  Low LED2
  INTCON=%10010000    ; Habilita la interrupción B.0 (INTCON.1=0)
  Resume              ; Retorna al programa donde ocurrió la interrupción 
  Enable              ; Habilita las interrupciones después del handler
  End
09/07/2012 #410

Avatar de mendek

¿algunas lecturas que me recomienden para comprender lo que es el INTCON el TMR0?, es que la verdad no entiendo para que se usan y cuales son sus funciones, justamente ese fue el ejemplo que vi pero que no entendí, ese ejemplo viene en un manual que me ha servido de mucho, pero de todas formas gracias DEPREDADORX1

buscando en la ayuda de proton la verdad es que no logro saber como se habilita la interrupción, es decir como hago para que entre en el nivel "interrupción"
10/07/2012 #411


Bueno, aquí te adjunto alguna lectura que puede ayudarte para ir comprendiendo cada cosa, el intcon es el registro de control para las interrupciones por puerto b.0 y timer0, cada bit tiene su función, el GIEE es como el swiche principal, sino lo activas no puedes habilitar ninguna interrupción; el PEIE, tiene que ver con interrupciones por periféricos, de principio no interesa pues no tiene que ver con b.0 o timer0; el TOIE, es el bit que habilita la interrupción por timer0;el INTE, habilita la interrupción por b.0;RBIE, este bit habilita la interrupción por el puerto B; TOIF, este bit cambia cuando se produce el desborde de timer0;INTF, este bit es la bandera o flag que indica cambio por b.0 cuando está habilitada y finalmente el bit RBIF (bit 0 de intcon), éste indica un cambio el el puerto B cuando se habilita dicha interrupción. Echale una ojeada a la documentación pues tienes que analizar el registro Option reg también.

Suerte!
Archivos Adjuntos
Tipo de Archivo: rar DOCUMENTACIÒN.rar (537,8 KB (Kilobytes), 162 visitas)
10/07/2012 #412

Avatar de mendek

ya por fin pude hacer funcionar el programa DEPREDADORX1, ahora lo que pasa es que tenia un mal entendido con respecto a las interrupciones y su función, yo pensé que servían para ejecutar algo en segundo plano, es decir, como el ejemplo que mencionaba, de que un led este parpadeando indefinidamente, pase lo que pase ese led debe de estar parpadeando y que si se oprime un botón otro led prenda durante X tiempo y se apague, como si ejecutara algo en segundo plano, ya habia preguntado lo mismo en este foro, pero no me acuerdo donde y me dijeron que con interrupciones se podia lograr pero ya veo que no, alguien sabe como se logra eso, ya leí el !tema completo¡ y no encontré alguien que quisiera lo mismo, nuevamente gracias por la ayuda DEPREDADORX1, lo olvidaba este programa solo lo pude probar con el 16F84A pero con el 16F887 no pude, era el mismo programa solo cambiaba el tipo de pic pero nada, ¿a que se debera?

DEPREDADORX1 dijo: Ver Mensaje

Código:
Device = 16F877A
Xtal = 4

'Declaration for LCD 
       Declare LCD_Type = 0         ;LCD is Alpha
       Declare LCD_DTPin = PORTD.4  ;LCD data line starting port.pin
       Declare LCD_ENPin = PORTD.1  ;LCD EN line
       Declare LCD_RSPin = PORTD.0  ;LCD RS line
       Declare LCD_Interface = 4    ;LCD 4 line interface
       Declare LCD_Lines = 2


 Symbol LED= PORTB.1
 Symbol LED2=PORTB.2
 
 On Interrupt GoTo interrupcion ;  En caso de interrupción ir a subrutina interrupción
 INTCON=%10010000               ; el bit 7 habilita las interrupciones en general
                                ;  El bit 4 habilita la  interrupción B.0
 
 PROG:
  High LED
  DelayMS 200
  Low LED
  DelayMS 200
  GoTo PROG
  
  Disable             ; Desabilita las interrupciones en el handler
  
  interrupcion:              
  High LED2
  DelayMS 2000
  Low LED2
  INTCON=%10010000    ; Habilita la interrupción B.0 (INTCON.1=0)
  Resume              ; Retorna al programa donde ocurrió la interrupción 
  Enable              ; Habilita las interrupciones después del handler
  End
11/07/2012 #413


Hola mendek,

Las interrupciones son, valga la redundancia, para interrumpir algo, para nuestro caso dejan la ejecución normal del programa para atender la interrupción inmediatamente. La programación se ejecuta línea a línea, si quieres que realice algo adicional necesitas las interrupciones, en los ejemplos de proton está un ejemplo que combina 2 interrupciones, creo que timer1 y timer3, el caso es que una está habilitada como interrupción prioritaria mientras que la otra como secundaria, me parece que con esto es mucho lo que puede hacerse aunque yo no he llegado hasta allá, soy solo un aficionado y no requiero tanto complique. Sobre el ejemplo, aunque nunca he simulado con ese pic, podría asegurarte que el error debe estar en la configuración de los registros de interrupción, bueno, al menos eso creo yo así sin tener un ejemplo que aplique a ese pic.

Suerte!
02/08/2012 #414


Buenas tardes.
Lo siento por el idioma, pero yo soy de Grecia.
Si alguien me puede dar un ejemplo con dos temporizador en protonbasic.
Empecé a aprender programación, pero no he encontrado ningún ejemplo que utiliza el temporizador 2.
gracias
05/08/2012 #415


Hola stratos1111,

Es todo lo que tengo, espero pueda ayudarte.
Archivos Adjuntos
Tipo de Archivo: rar INTERRUPCIONES PIC16F877A.rar (851,3 KB (Kilobytes), 177 visitas)
05/08/2012 #416


Gracias. Que lo pruebe. Que estés bien
10/08/2012 #417


saludos,
Aquí publico un velocímetro con interrupción por B0 y timer1, el primero para contar los giros de la rueda y el otro para calcular un tiempo determinado para hacer los calculos. Ahora lo que hay que analizar es como mejorar la resolución del velocímetro puesto que con una sola vuelta se va a 75km/h, que os ocurre respecto a esto para alcanzar una resolución exacta de 1k/h?
Archivos Adjuntos
Tipo de Archivo: rar VELOCIMETRO PIC16F877A-DISPLEY 7 SEG (agosto 2012).rar (49,1 KB (Kilobytes), 168 visitas)
13/08/2012 #418


Hola a todos, verán e realizado algunos proyectos básicos con Visual basic 6 y Proton pur USB HID, ahora me e descargado el Visual studio 2010, alguien tiene algún ejemplo de como usar el HID en esta versión? de lo contrario alguien sabe como usar la comunicación serie con esta versión? saludos, espero no molestar
13/08/2012 #419

Avatar de yamilongiano

Hola increible manual me dejo prendiendo leds y todo en poco tiempo, sin siquiera leer mucho.

ahora mismo e descargado el manual y lo leeré tranquilamente.

pero tengo una pregunta ¿es posible programar un pic directamente con proton pero usando el pickit 3 de microchip como interfaz?


otra pregunta ¿son solo 6 pdfs del manual de proton o no ?
13/08/2012 #420
Moderador

Avatar de D@rkbytes

yamilongiano dijo: Ver Mensaje
tengo una pregunta ¿es posible programar un pic directamente con proton pero usando el pickit 3 de microchip como interfaz?
Posiblemente si el PICKit 3 acepta comandos desde el IDE Proton.

Por ejemplo. Yo uso el WinPic800 con estos parámetros.



Puede ser cosa de buscar algún parámetro para que funcione con el PICKit 3.
yamilongiano dijo: Ver Mensaje
otra pregunta ¿son solo 6 pdfs del manual de proton o no ?
Eso no lo sé, yo suelo usar siempre la ayuda que el mismo Proton tiene.

Saludos.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.