Operácie

Tester logických obvodov: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
Balogh (diskusia | príspevky)
Nahrádzam stránku textom „ToDo“
 
(8 medziľahlých úprav od jedného ďalšieho používateľa nie je zobrazených)
Riadok 1: Riadok 1:
Tester logických obvodov 7400 a 7493. Diagnostický report cez sériové rozhranie
ToDo
 
 
Záverečný projekt predmetu MIPS / LS2023 - '''Erik Szegi'''
 
 
== Zadanie ==
 
Tester logických obvodov- testovali sme, ako rýchlo dokážeme stlačiť tlačidlo po bliknutú kontrolky LED.
[[Obrázok:ard.jpg|400px|thumb|center|Vývojová doska ACROB.]]
 
'''Literatúra:'''
* [http://ap.urpi.fei.stuba.sk/sensorwiki/index.php/Acrob_technical_description Dokumentácia k doske Acrob]
* [http://www.humanbenchmark.com/tests/reactiontime/index.php Vyskúšajte si zmerať reakciu on-line]
 
 
__TOC__
 
== Analýza  a opis riešenia ==
 
Najprv sme pripojili LCD displej s tlačidlom a LED diódou
 
[[Súbor:schema.png|400px|thumb|center|Schéma zapojenia LCD displeja.]]
 
 
=== Algoritmus a program ===
 
Algoritmus programu je....
 
 
<tabs>
<tab name="AVR C-code"><source lang="c++" style="background: LightYellow;">
#include <avr/io.h>
 
#define F_CPU 16000000UL 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "lcd_ch.h" 
 
#define SW1 PD6          // tlacitko
#define LED1 PD7        // LED
 
#define set_bit(ADDRESS,BIT) (ADDRESS |= (1<<BIT))     
#define clear_bit(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))   
 
#define LED1_ON  set_bit(PORTD,LED1)        //zapni LED
#define LED1_OFF clear_bit(PORTD,LED1)      //vypni LED
 
static volatile int M_Sec = 0;    //integer pocíta v milisekundách
int Random_Number = 0;            //generuje random cislo
int Rychlost = 0;            //cas rychlost
 
//**spustenie casovaca**//
void TIMER_START(void){
      TCNT1 = 0xFFF0;
  TCCR1B = 0b00000101;           
      TIMSK1 = (1<<TOIE1);
      sei();         
      TCCR0A =  (1 << COM0A0)         
          | (1 << WGM01);       
      TCCR0B = (1 << CS02);
}
 
//** output a input port**//
void Start(void){
DDRD =0b10000000;
    PORTD =0b01000000;
}
 
 
int main(void)
{
  Start();
  ini_ports();
  lcd_init();
 
  while(1){
if(bit_is_set(PIND,LED1)){
goto jump1;
}
Random_Number=rand();    //generovanie random cisiel pomocou preddefinovanej funkcie
_delay_ms(200);          //Kvôli rýchlej generovanie čakáme, aby led nebliklo veľmi rýchlo
if ((Random_Number>1) && (Random_Number<1500)){   
PORTD |=  (1<<LED1); 
M_Sec=0;
def_Clear_spec_znaky();
TIMER_START();
jump1:
if ( !(PIND & (1<<SW1)) ){    // Ak tlacitko je stlacene tak vypni led
Rychlost = M_Sec;
char riadok[]= {""};
sprintf(riadok,"%d ms",Rychlost);
def_Clear_spec_znaky();
lcd_puts("Rychlost:");
lcd_command(0xC0+5);
lcd_puts(riadok);
PORTD &= ~(1<<LED1);         
  }                      
  }
}
}
 
ISR (TIMER1_OVF_vect)
{
  char riadok[]= {"                "};
  TCNT1 = 0xFFF0;             
          M_Sec++; 
 
}
 
</source></tab>
<tab name="lcd_ch.h"><source lang="c++" style="background: LightYellow;">
lcd_ch.h
unsigned int adc_read(char a_pin);
</source></tab>
</tabs>
 
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x ''zdrojaky.zip'':
 
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]]
 
=== Overenie ===
 
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia.
Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.
 
[[Súbor:fotka.jpg|400px|thumb|center|Aplikácia.]]
 
'''Video:'''
<center><youtube>_l02MBu41n0</youtube></center>
 
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.
 
[[Category:AVR]] [[Category:MIPS]]

Aktuálna revízia z 09:56, 25. apríl 2024

ToDo