Jump to content
ELFORUM - Forumul Electronistilor

Elison

Membru activ
  • Content Count

    318
  • Joined

  • Last visited

Community Reputation

29 Se poate si mai bine

About Elison

  • Rank
    Membru

Profile Information

  • Locatie
    :

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Daca vreti consola pentru programare o puteti inlocui cu orice laptop cu WinXP si port serial sau USB. Instalati Step5 si procurati un adaptor de acest fel sau altele asemanatoare.
  2. Aici este definita functia RecvRC5 int RecvRC5 (void) /* recepteur RC5 bas niveau qui scrute le port relié au capteur et décode le signal 2 bits de start 1 bit de basculement 5 bits d'adressage (type d'appareil, TV, VCR etc...) 6 bits de commande (touches) */ { uint32_t t; uint8_t niv_entree, niv1, niv2; /* booleens - niveaux des deux demi plateaux constituant un bit */ uint8_t n; uint16_t data; t=0; niv1=0; niv2=0; data = 0; niv_entree=1; /* attente pendant la durée d'une trame d'un front descendant (le signal issu du capteur est à 1 au repos) */ const unsigned long int tmax = 14*1778; //24892us = durée de 1 trame (environ 25ms donc) while ( (niv_entree == 1) && (t<= tmax) ) { if ( (PINC & 0b10000000) > 0) { niv_entree=1; } else { niv_entree=0; } _delay_us(1); t++; } /* si le signal parvient trop vite (< 2 bits) on en déduit qu'on a pris le train en marche et on saute, puisque lecture impossible de la trame en cours */ if (t < (889 * 2)) return t; if (t > tmax) return 2; /* temps maxi écoulé, pas de signal reçu */ /* ici on se trouve juste un epsilon après le basculement à 0 du premier bit de start (milieu de bit) */ _delay_us(444); /* durée de 1/4 bit */ for (n=1; n<=13; n++) { _delay_us(889); // durée de 1/2 bit /* ici on se trouve au milieu du niveau du plateau du demi bit */ if ( (PINC & 0b10000000) == 0) { niv1 = 0; } else { niv1 = 1; } _delay_us(889); // durée de 1/2 bit /* ici on se trouve au milieu du second plateau du demi bit */ if ( (PINC & 0b10000000) == 0) { niv2 = 0; } else { niv2 = 1; } /* ici on connait les valeurs des deux niveaux, on en déduit le sens de la transition (front montant ou descendant)*/ if (niv1 == niv2) { return 3; } // erreur de lecture, bit non valide if ((niv1 == 1 ) && (niv2 == 0)) { data |= 0b00000001; } data = data << 1; } data = data >> 1; // on rejette le dernier décallage (sans perte de bit puisque largeur data = 16 bits > ) rxCmd_IR = data & 0b0000000000111111; rxAdr_IR = (data & 0b0000011111000000) >> 6; bit_bascul_IR = (data & 0b0000100000000000) >> 11; return 0; }
  3. In momentul in care este comandata aprinderea cifrei doi, pe pinul 9 al circuitului 74141 o sa ai zero volti, la fel si pentru pinii care comanda cifrele zero, patru, sase si opt. Asta inseamna ca diodele trebuie conectate invers si regandita comanda aprinderii neonului, insa adevarata problema care te impiedica sa faci afisarea secundei (hardware) este aceea se foloseste multiplexarea. Daca, de exemplu, este afisata ora 8:16 timp de o ora neonul o sa clipeasca cu fregventa cu care se face multiplexarea, iar daca acel neon are o anumita inertie si nu va clipi o sa stea aprins pana se face trecerea la o ora impara. Singura solutie este programarea unui pin ramas liber (9,16,20) pentru afisarea secundei.
  4. Decarcati versiunea portabila pentru WinTrasfo 1.5.0. Functioneaza si pe Win10.
×
×
  • Create New...