TODOPIC
Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: silth en 28 de Marzo de 2012, 12:04:53
-
Hola a todos, la verdad es que no se muy bien donde poner esta pregunta, no sé si en este subforo o en atmel (los administradores si creen oportuno cambienlo)
La cosa es que estoy haciendo un programa en ensamblador para una asignatura con al atmel 8515.
Lo he realizado todo y en avr studio me simula perfectamente, pero a la hora de simularlo en el isis no veo que se me activen las salidas.
He probado a hacer un sencillo programa que lee una entrada y la saca, pero ni con esas.
A ver si alguien me pudiese ayudar, dejo aquí el código y la simulacion.
Gracias de antemano
.include "8515def.inc"
.def aux=r16
; ## TABLA PARA LAS INTERRUPCIONES DEL PROGRAMA ##
rjmp RESET ; Saltamos al inicio del programa
reti ;External 0 interrupt vector
reti ;External 1 interrupt vector
reti ;Timer 1 capture vector
reti ;Timer 1 compareA vector
reti ;Timer 1 compareB vector
reti ;Timer 1 overflow vector
reti ;Timer 0 overflow vector
reti ;SPI vector
reti ;UART Receive vector
reti ;UDR Empty vector
reti ;UART Transmit vector
reti ;Analoge Comparator vector
RESET:
; ## CONFIGURACIÓN DE LA PILA ##
ldi aux, HIGH(RAMEND)
out SPH, aux
ldi aux, LOW(RAMEND)
out SPL, aux
; ## CONFIGURACIÓN DE LOS PUERTOS ##
ser aux ; Ponemos a 1 el registro aux.
out DDRA, aux ; Configuramos todo el puerto A como salida.
clr aux ; Ponemos a 0 el registro aux.
out DDRB, aux ; Configuramos todo el puerto B como entrada.
INICIO:
in aux,PINB
out PORTA,aux
rjmp INICIO
-
Bueno, no se que ha pasado, que he dejado el isis media hora abierto sin hacer nada y ahora al darle al play me ha funcionado....jejejeje
Si es que no hay nada peor que no saber
-
Me autorectifico debido a la alegria inicial.
Cuando arranco el programa si puedo activar las salidas, pero se me quedan siempre encendidas independientemente del estado del interruptor
-
El error al que me refiero es el de la imagen.
Yo inicio la simulacion con los interruptores abiertos, los cierro y se me encienden los leds, pero si los vuelvo a abrir las salidas no se modifican
-
No veo a donde están conectados los interruptores, pero si están conectados a masa, deberías poner una resistencia de pullup de 4,7 k a cada pin del micro, de otro modo el pin recibe un cero cuando activas el interruptor y no cambia cuando desactivas el interruptor.
La resistencia de pullup en cada pin obligara a retornar al pin a un uno lógico cada vez que desactives el interruptor....
Si esto lo hubieras hecho en circuito real, ya estarías modificandolo o peor aun tirándolo a la basura, pero el hecho de poder simularlo te permite adelantarte y solucionarlo antes de llevarlo al PCB... :mrgreen:
-
Gracias por tu respuesta MGLSOFT, estoy buscando información en internet sobre las resistencias pull-up y pull-down porque la verdad es que no se muy como funcion.
De todos modos te muestro una imagen mas grande del circuito.
-
MGLSOFT muchas gracias por lo de las resistencias pull up, trasmirar algunos esquemas y probar varias (por mi culpa que lo conectaba mal) me ha funcionado.
Despues de casi dos dias trabado en este paso cuando me ha salido he despertado hasta a los vecinos de arriba!! jejejeje
Que malo es no saber