Mis on ''tõusuäär'' (ingl. Rising Edge)?

Mikrokontrolleril on sisendid diskreetse digitaalsignaali puhul väärtusega 0 või 1. Sisend võib igas tsüklis muutuda ja tõusuäär on täpselt see tsükkel, milllest eelnevalt oli väärtus 0 ja selles tsüklis on 1, ehk täpne hetk kui null on läinud üle üheks.

Mis on ''tõusuäär'' (ingl. Rising Edge)?

Selleks, et võrrelda nüüdset väärtust eelmise tsükliga peab olema eelmise tsükli väärtus muutujana salvestatud ja säilima võrreldavuse jaoks tsüklite üleselt, globaalse muutujana. 

Globaalne muutuja peab olema defineeritud enne void loop() algust. 

Tüüpiliselt peaks olema numbrilise väärtuse salvestamiseks andmetüüp "int"

 

int eelmiseTsukliOlek;

void loop(){

  // siin loeme pordi uue oleku i1 muutjasse

  if (i1 ==1 && eelmiseTsukliOlek == 0){

    print("Tuvastasime tõusuääre");

 }

  // salvestame mälumuutujasse

  eelmiseTsukliOlek = i1; 

}// loop tsükli lõpp

 

teegi kasutamisel saad kasutada lihtsalt, teegi tasandil juba võrdluse tulemust

if (r1 == 1){
  print("Tuvastasime tõusuääre");
}

 

Miks on portide käsitsemine ja tõusuäärte võrdlus teegi tasandil oluliselt lihtsam

TegevusGeneeriline (käsititsi) koodnanoTronic070.h teegiga
Mälu haldusPead iga nupu jaoks looma oma eelmiseOlek_1, eelmiseOlek_2 jne.Teek haldab massiive i[10] ja r[10] automaatselt taustal.
Koodi pikkusif-lause peab sisaldama kahte kontrolli ja oleku käsitsi salvestamist tsükli lõpus.Kirjutad lihtsalt if (r1). Teek teeb võrdluse ja salvestamise inRe() funktsioonis.
PõrkekaitsePead lisama delay(), mis "uimastab" kogu programmi, või looma keerulise taimeri.Teek kasutab fHistorySave ja fHistCheck funktsioone, mis teevad targa, mitte-blokeeriva põrkekaitse.
KäivitusPead meeles pidama, et eelmiseTsukliOlek = praeguneOlek oleks tsükli kõige viimane rida.Piisab, kui kutsuda tsükli alguses inRe() ja lõpus doOut().

 

 

Pinge (V)
      ^
      |                           i1 == 1
  5V  |                       ------------------------->
      |                       |
      |                       |
      |                       | <-- TÕSUÄÄR (Rising Edge)
      |                       |     Siin hetkel r1 = 1
      |                       |
      |   i1 == 0             |
  0V  +-----------------------'                     ---> Aeg
      0                   Aeg/tsüklid    

 

Tõusuääre muutujana saad enda loogika jaoks kasutada nii muutujat r seerias koos sisendi numbrig, näiteks r1, r2 kuni r9. Teegi tasandil toimuvad esmased võrdlused massiivina, muutujad r on nende aliasteks, siis on võimalik kasutada ka massiivipõhiseid muutujaid r[1], r[2] kuni r[9], need on eriti käepärased kui on vaja lugeda tõusuääri tsüklite sees. 

 

 

Langev äär

Sarnaselt on võimalus kasutada ka langeva ääre (ingl. "Falling Edge") muutujat, see on tähistatud tähega f, kasuta esimese sisendi puhul näiteks f1 või massiivipõhist formaati f[1], mida saad kasutada ka tsüklites. 

Pinge (V)
      ^
      |
  5V  |-------------------------.          <-- i1 == 1 (Nivoo on kõrge)
      |                         |
      |                         |
      |                         |          <-- LANGEV ÄÄR (Falling Edge)
      |                         |              Siin hetkel f1 = 1
      |                         |
      |                         |
      |                         |          <-- i1 == 0
  0V  +---------------------------------------------------> Aeg
      0                    Aeg/tsüklid

Monteeri lihtsalt ja kiiresti

Riistvara montaa¾ on jaotatud etappideks ja toetatud õppevideodega. Vaata lähemalt.

 

Tarkvaratugi

Loe riistvaralist portide lugemist ja muutujate defineerimist toetava tarkvarateegi kohta