LLENADO DE TINACO
Microcontroladores Avanzados
4MV8
15 de diciembre de 2016
Si el sensor de nivel bajo de la cisterna se desactiva, significa que no hay agua por lo que el
sistema no funcionará.
La bomba se energiza cuando el sensor de nivel bajo del tinaco se desactiva.
Se apaga la bomba, cuando el sensor de nivel alto se activa.
En el codigo se utilizaron interrupciones externas para definir los casos en los que debe trabajar la
bomba. Estas interrupciones externas provienen de los impulsos generados por los sensores dentro del
tinaco y la cisterna.
2 CODIGO
/*
* Tinaco.cpp
* Created: 14/12/2016 08:53:42 a. m.
* Author: fxrue
*/
#define F_CPU 4000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
int i=0;
ISR(INT0_vect){//Flanco de bajada detecta que esta vacio el tinaco, ENCIENDE la bomba
PORTC=0x01;
}
ISR(INT1_vect){//Flanco de subida detecta que esta lleno el tinaco, APAGA la bomba
PORTC=0x00;
}
ISR(INT2_vect){//Flanco de bajada detecta que no hay agua en la cisterna, APAGA bomba
PORTC=0x00;
}
int main(void)
{
cli();
DDRB=0x00;//entradas int2
DDRD=0x00;//entradas int0,int1
DDRC=0xFF;//salida
GICR|=(1<<INT0)|(1<<INT1)|(1<<INT2);//habilitamos las tres interrupciones
MCUCR|=(0<<ISC00)|(1<<ISC01)|(1<<ISC10)|(1<<ISC11);//int0 flanco de bajada(nivel bajo)
int1 flanco de subida(nivel alto)
MCUCSR|=(0<<ISC2);//int2 flanco de bajada (cisterna)
sei();
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");
while(1)
{
//TODO:: Please write your application code
}
}