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
![Wink ;-)](./images/smilies/icon_wink.gif)
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
![Smile :-)](./images/smilies/icon_smile.gif)
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.
![Question :?:](./images/smilies/icon_question.gif)
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!!!