Stránka 3 z 6

Napsal: 22 dub 2021, 14:55
od FHonza
Port B už je nastavený jako vstupní, tak na jeho libovolný volný pin. Neměříš velikost napájení, ale jenom jeho přítomnost. Testování bude stejné, jako test nastavovacích tlačítek.

Napsal: 22 dub 2021, 15:31
od buchar
Zhruba v kostce vím co mi popisuješ a nějak tak jsem to měl na mysli, že nějaký port bude hlídat přítomnost a ne měřit, ale stejně nevím co přesně vepsat do kódu. Ale zkusím se s tím nějak poprat. Ale určitě se budu ještě několikrát ptát. To co je pro mnohé z vás samozřejmost, je pro mě neznámý problém. Jsem na úplném začátku s Céčkem a chci se to naučit, jenže kdo ví jak dlouho mi to bude trvat. Jsem už starší a do hlavy to moc neleze. A na netu toho taky moc není (v češtině).
Dám si to do nějakého simulátoru (třeba Proteus) a budu zkoušet.
Zatím moc dík.
PS: ale nápověda by bodla ;-)

Napsal: 22 dub 2021, 16:35
od Bernard
Napájení segmentovek cykluje v přepínači switch(show_t). Takže když si pojmenuješ stav vstupního pinu ext_bat, tak pro nulovou hodnotu následně vynuluješ i port C a nic nebude svítit. To if zařadit do každého kejsu.

Kód: Vybrat vše

switch(show_t)
    {
        case 0:    //show minutes
            PORTC = 0x04;
            if (!ext_bat) {PORTC = 0;}
            PORTD = (~segs[min_1]) & ~_BV(_s_dot);
            break;
    ....
[/b]

Napsal: 22 dub 2021, 16:44
od buchar
Bernarde moc děkuji, zkusím to tam nějak napářit. Dám vědět hned jakmile se mi to podaří. A když ne, tak se taky ozvu :-)

Napsal: 22 dub 2021, 17:34
od buchar
Tak jsem to vepsal a chtěl kompilovat, ale vybaflo to na mě nesouhlasnou hlášku.

Napsal: 22 dub 2021, 18:26
od Bernard
Na jaký pin máš přivedené to externí napájení?

Napsal: 22 dub 2021, 18:57
od buchar
Napájení je klasicky na pin7.
Vím, že musím nadefinovat pin, který bude hlídat jestli je zapnuto napájení a když ne, tak se vypne displej a čas se udržuje z baterie. Jenže nevím jak ho nadefinovat a kam ten zápis umístit. Třeba pin15.

Napsal: 22 dub 2021, 19:46
od Bernard
Dobrá, tak pin 15 je pro kompilátor PB1. Tak bude snadnější nedělat další definici ext_bat ale rovnou tam napsat:

Kód: Vybrat vše

switch(show_t)
    {
        case 0:    //show minutes
            PORTC = 0x04;
            if (!PB1) {PORTC = 0;}
            PORTD = (~segs[min_1]) & ~_BV(_s_dot);
            break;
    ....

Napsal: 22 dub 2021, 19:51
od buchar
Teď už kompilace proběhla hladce. Nahraju a dám vědět.

Napsal: 22 dub 2021, 20:29
od buchar
Tak displej při odpojení napájení pořád svítí i na baterii. Samozřejmě slaběji.

Napsal: 22 dub 2021, 20:43
od Bernard
Nějak nedokážu vysledovat na obrázcích těch upravených DPS, kde je spojení mezi vstupem napájení +5V (ještě před diodou) a pinem 15 (PB1) přes nějaký odpor. :?:

Napsal: 22 dub 2021, 20:55
od buchar
Na to jsem při návrhu plošňáku nějak pozapoměl, ale teď jsem zapojil odpor 10K na pin15 a na +5V (ještě před diodu). Mám to tak jako Danyk (odkaz výše).

Napsal: 23 dub 2021, 16:48
od FHonza
Takhle se stejně segmentovka na okamžik rozsvítí (a kvůli tomu svítí slabě).

Kód: Vybrat vše

switch(show_t)
    {
        case 0:    //show minutes
            PORTC = 0x04;
            if (!PB1) {PORTC = 0;}
            PORTD = (~segs[min_1]) & ~_BV(_s_dot);
            break;
    ....
Buď přepsat každý case

Kód: Vybrat vše

  case 0:    //show minutes   
     if (!PB1) {PORTC = 0;} else {PORTC = 0x04;}
     ...
nebo před celý switch:

Kód: Vybrat vše

  if (PB1)
  {
     switch(show_t)
    {
       ...
    }
  }
  else
  {PORTC = 0;}

Napsal: 23 dub 2021, 17:16
od buchar
FHonza díky, ale já už na to před chvílí přišel. Nahrál jsem do procesoru a odzkoušel a zdá se, že to funguje. Po odpojení napájení jehož přítomnost hlídá pin15 displej zhasne a po půlhodině jsem napájení zapnul a čas běžel pořád dál. Hodiny šly i při zhasnutém displeji.

Napsal: 23 dub 2021, 17:17
od buchar
Je to první řádek a poslední if dole.
Ale zkusím i tvůj nápad.
A díky i Bernardovi, který mi dost napověděl a já už jsem si s tím jen hrál. Je pravda, že umím naprogramovat jen blikající diody, ale tady jsem použil logiku a selský rozum. No a vyšlo to. Teď se do toho pustím hlouběji a budu se učit ať nejsem pořád odkázaný na druhé s každou blbinou.
Takže ještě jednou velký dík chlapi!!!