<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=8&amp;t=8018&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-05T08:59:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=8018&amp;mode</id>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-05T08:59:41+01:00</updated>
<published>2014-08-05T08:59:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90271#p90271</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90271#p90271"/>
<title type="html"><![CDATA[Re: Zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90271#p90271"><![CDATA[
Witam.<br />Przepraszam za brak polskich liter, ale jestem zmmuszony pisac na wiekowym sprzecie, bez polskiego drivera klawiatury. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Bardzo dziekuje za podpowiedz. Jeszcze 2 pytania: Po pierwsze - inkrementacja zmiennej min bedzie taka?<br />[syntax=c]eeprom_write_byte min++;[/syntax]<br />A odczyt taki?<br />[syntax=c]if(eeprom_read_byte min &gt; 2) .... ;[/syntax]<br /><br />A wysylanie danych takie?<br />[syntax=c]#define D0 SEG_PRT = ~( A | B | C | D | E | F            )     // Print 0[/syntax]<br /><br />Z gory dziekuje.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 5 sie 2014, o 08:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-08-04T20:43:29+01:00</updated>
<published>2014-08-04T20:43:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90226#p90226</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90226#p90226"/>
<title type="html"><![CDATA[Re: Zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90226#p90226"><![CDATA[
Po pierwsze to utworzyłeś cztery zmienne w pamięci Eeprom<br />[syntax=c]uint8_t EEMEM min;<br />uint8_t EEMEM min10;<br />uint8_t EEMEM h;<br />uint8_t EEMEM h10;[/syntax]<br />a potem odwołujesz się do nich jakby to były zwykłe zmienne w pamięci RAM. To tak nie działa. Do odczytu i zapisu tych zmiennych należy użyć funkcji do tego przeznaczonych np. eeprom_read_byte, eeprom_write_byte itd.<br /><br />Po drugie źle wysyłasz dane na segmenty wyświetlacza. <br />[syntax=c]#define D0 SEG_PRT &amp;= ~( A | B | C | D | E | F            )     // Print 0<br />#define D1 SEG_PRT &amp;= ~( B | C                                                )         // Print 1<br />#define D2 SEG_PRT &amp;= ~( A | B | D | E | G                        )     // Print 2<br />#define D3 SEG_PRT &amp;= ~( A | B | C | D | G                        )     // Print 3<br />#define D4 SEG_PRT &amp;= ~( B | C | F | G                            )     // Print 4<br />#define D5 SEG_PRT &amp;= ~( A | C | D | F | G                        )     // Print 5<br />#define D6 SEG_PRT &amp;= ~( A | C | D | E | F | G                    )     // Print 6<br />#define D7 SEG_PRT &amp;= ~( A | B | C                                        )     // Print 7<br />#define D8 SEG_PRT &amp;= ~( A | B | C | D | E | F | G                )     // Print 8<br />#define D9 SEG_PRT &amp;= ~( A | B | C | D | F | G            )     // Print 9[/syntax]<br />Niepotrzebnie dałeś tam bitowe AND czyli <strong>&amp;</strong>. Przy takim zapisie raz wyświetlona liczba już pozostanie na wyświetlaczu a wyświetlanie kolejnych liczb spowoduje jedynie włączanie kolejnych segmentów. Co w efekcie końcowym spowoduje włączenie wszystkich segmentów czyli liczby 8. Jeśli wyświetlisz np. liczbę 1 a potem np. liczbę 6 to segment B włączony przy &quot;jedynce&quot; będzie nadal włączony przy wyświetlaniu &quot;szóstki&quot; i wyświetli ci się liczba 8.<br /><br />Jednak po poprawieniu tych makr program i tak nie działa poprawnie (sprawdzone na ATB) a na wyświetlaczu oprócz wyświetlanych poprawnych liczb widać lekkie świecenie liczb z sąsiednich wyświetlaczy.<br /><br />Ogólnie ten koci kod należało by cały zmienić a wyświetlanie liczb na wyświetlaczu zrobić za pomocą przerwania. W podpisie masz napisane, że posiadasz Bluebooka. Więc może na początek wykorzystaj sprawdzone rozwiązanie z lekcji 03_Multi_Led.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 4 sie 2014, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-08-04T19:15:14+01:00</updated>
<published>2014-08-04T19:15:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90211#p90211</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90211#p90211"/>
<title type="html"><![CDATA[Re: Zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90211#p90211"><![CDATA[
Na początek polecam oglądnąć Mirka poradniki bo te polecenia switch to takie bardzo kocie w C są i ryby nie złapią<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 4 sie 2014, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Kerniak]]></name></author>
<updated>2014-08-04T17:13:06+01:00</updated>
<published>2014-08-04T17:13:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90182#p90182</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90182#p90182"/>
<title type="html"><![CDATA[Zegar]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8018&amp;p=90182#p90182"><![CDATA[
Dobry!<br /><br />Złożyłem taki układ na medze88P, który można określić jako zegarek cyfrowy <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Działa większość rzeczy, ale na wyświetlaczu, na którym ma się pojawiać godzina, występują same ósemki. I tutaj pojawia się moje pytanie - co zrobiłem źle? Krytykę odnośnie stylu pisania kodu chętnie przyjmę, a za głupie błędy przepraszam - jestem w temacie kompletnie zielony i nie nauczyłem się jeszcze wszystkiego <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />plik nagłówkowy z #define-ami:<br /><br />[syntax=c]/*<br /> * defines.h<br /> *<br /> *      Created on: 04-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#ifndef DEFINES_H_<br />#define DEFINES_H_<br /><br />// definitions of screens<br />#define S1 (1&lt;&lt;PC0)<br />#define S2 (1&lt;&lt;PC1)<br />#define S3 (1&lt;&lt;PC2)<br />#define S4 (1&lt;&lt;PC3)<br />#define SCR_PRT PORTC<br />#define SCR_REG DDRC<br />// Macros for screens<br />#define SCR1_ON SCR_PRT &amp;= ~S1<br />#define SCR2_ON SCR_PRT &amp;= ~S2<br />#define SCR3_ON SCR_PRT &amp;= ~S3<br />#define SCR4_ON SCR_PRT &amp;= ~S4<br />#define SCR1_OFF SCR_PRT |= S1<br />#define SCR2_OFF SCR_PRT |= S2<br />#define SCR3_OFF SCR_PRT |= S3<br />#define SCR4_OFF SCR_PRT |= S4<br /><br />// definitions of segments for LED display module<br />#define SEG_PRT PORTD<br />#define SEG_REG DDRD<br />#define A (1&lt;&lt;PD0)<br />#define B (1&lt;&lt;PD1)<br />#define C (1&lt;&lt;PD2)<br />#define D (1&lt;&lt;PD3)<br />#define E (1&lt;&lt;PD4)<br />#define F (1&lt;&lt;PD5)<br />#define G (1&lt;&lt;PD6)<br />// definitions of digits<br />#define D0 SEG_PRT &amp;= ~( A | B | C | D | E | F            )     // Print 0<br />#define D1 SEG_PRT &amp;= ~( B | C       ) // Print 1<br />#define D2 SEG_PRT &amp;= ~( A | B | D | E | G           ) // Print 2<br />#define D3 SEG_PRT &amp;= ~( A | B | C | D | G           ) // Print 3<br />#define D4 SEG_PRT &amp;= ~( B | C | F | G           )     // Print 4<br />#define D5 SEG_PRT &amp;= ~( A | C | D | F | G           )  // Print 5<br />#define D6 SEG_PRT &amp;= ~( A | C | D | E | F | G     )     // Print 6<br />#define D7 SEG_PRT &amp;= ~( A | B | C        )     // Print 7<br />#define D8 SEG_PRT &amp;= ~( A | B | C | D | E | F | G   )     // Print 8<br />#define D9 SEG_PRT &amp;= ~( A | B | C | D | F | G            )     // Print 9<br /><br />#define cls_SEG SEG_PRT |= A | B | C | D | E | F | G ;    // Clean segments<br />#define cls_SCR SCR_PRT |= S1 | S2 | S3 | S4;             // Clean screens<br /><br />#endif /* DEFINES_H_ */[/syntax]<br /><br /><br /><br /><br /><br /><br />Plik main.c:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 04-08-2014<br /> *      Author: Michał Kern<br /> */<br /><br />#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#include&lt;avr/eeprom.h&gt;<br />#include&quot;defines.h&quot;<br /><br />void minutes( uint8_t minutes );<br />void minutes10( uint8_t minutes10 );<br />void hours( uint8_t hours );<br />void hours10( uint8_t hours10 );<br /><br />uint8_t EEMEM min;<br />uint8_t EEMEM min10;<br />uint8_t EEMEM h;<br />uint8_t EEMEM h10;<br /><br /><br />int main(void){<br /><br />h10 =    1;<br />h =      6;<br />min10 =  4;<br />min =    9;<br /><br />SEG_REG |= A | B | C | D | E | F | G ;<br />cls_SEG;<br />SCR_REG |= S1 | S2 | S3 | S4;<br />cls_SCR;<br /><br />//sei();<br /><br />while(1){<br /><br />minutes(min);<br />minutes(min);<br />minutes10(min10);<br />minutes10(min10);<br />hours(h);<br />hours(h);<br />hours10(h10);<br />hours10(h10);<br /><br /><br />}<br /><br />}<br /><br />void minutes(uint8_t minutes){<br /><br />switch(minutes){<br /><br />case 0:<br />SCR4_ON;<br />D0;<br />SCR4_OFF;<br />break;<br /><br />case 1:<br />SCR4_ON;<br />D1;<br />SCR4_OFF;<br />break;<br /><br />case 2:<br />SCR4_ON;<br />D2;<br />SCR4_OFF;<br />break;<br /><br />case 3:<br />SCR4_ON;<br />D3;<br />SCR4_OFF;<br />break;<br /><br />case 4:<br />SCR4_ON;<br />D4;<br />SCR4_OFF;<br />break;<br /><br />case 5:<br />SCR4_ON;<br />D5;<br />SCR4_OFF;<br />break;<br /><br />case 6:<br />SCR4_ON;<br />D6;<br />SCR4_OFF;<br />break;<br /><br />case 7:<br />SCR4_ON;<br />D7;<br />SCR4_OFF;<br />break;<br /><br />case 8:<br />SCR4_ON;<br />D8;<br />SCR4_OFF;<br />break;<br /><br />case 9:<br />SCR4_ON;<br />D9;<br />SCR4_OFF;<br />break;<br /><br />case 10:<br />min = 0;<br />min10++;<br />break;<br /><br />}<br /><br />}<br /><br /><br />void minutes10(uint8_t minutes10){<br /><br />switch(minutes10){<br /><br />case 0:<br />SCR3_ON;<br />D0;<br />SCR3_OFF;<br />break;<br /><br />case 1:<br />SCR3_ON;<br />D1;<br />SCR3_OFF;<br />break;<br /><br />case 2:<br />SCR3_ON;<br />D2;<br />SCR3_OFF;<br />break;<br /><br />case 3:<br />SCR3_ON;<br />D3;<br />SCR3_OFF;<br />break;<br /><br />case 4:<br />SCR3_ON;<br />D4;<br />SCR3_OFF;<br />break;<br /><br />case 5:<br />SCR3_ON;<br />D5;<br />SCR3_OFF;<br />break;<br /><br />case 6:<br />min10 = 0;<br />min = 0;<br />h++;<br />break;<br /><br />}<br /><br />}<br /><br /><br />void hours(uint8_t hours){<br /><br />switch(hours){<br /><br />case 0:<br />SCR2_ON;<br />D0;<br />SCR2_OFF;<br />break;<br /><br />case 1:<br />SCR2_ON;<br />D1;<br />SCR2_OFF;<br />break;<br /><br />case 2:<br />SCR2_ON;<br />D2;<br />SCR2_OFF;<br />break;<br /><br />case 3:<br />SCR2_ON;<br />D3;<br />SCR2_OFF;<br />break;<br /><br />case 4:<br />if(h10 == 2){<br />h10=0;<br />h=0;<br />min10=0;<br />min=0;<br />}<br />else{<br />SCR2_ON;<br />D4;<br />SCR2_OFF;<br />}<br />break;<br /><br />case 5:<br />SCR2_ON;<br />D5;<br />SCR2_OFF;<br />break;<br /><br />case 6:<br />SCR2_ON;<br />D6;<br />SCR2_OFF;<br />break;<br /><br />case 7:<br />SCR2_ON;<br />D7;<br />SCR2_OFF;<br />break;<br /><br />case 8:<br />SCR2_ON;<br />D8;<br />SCR2_OFF;<br />break;<br /><br />case 9:<br />SCR2_ON;<br />D9;<br />SCR2_OFF;<br />break;<br /><br />case 10:<br />h = 0;<br />min = 0;<br />min10 = 0;<br />h10++;<br />break;<br /><br />}<br /><br />}<br /><br />void hours10(uint8_t h10){<br /><br />switch(h10){<br /><br />case 0:<br />SCR1_ON;<br />D0;<br />SCR1_OFF;<br />break;<br /><br />case 1:<br />SCR1_ON;<br />D1;<br />SCR1_OFF;<br />break;<br /><br />case 2:<br />SCR1_ON;<br />D2;<br />SCR1_OFF;<br />break;<br /><br /><br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4503">Kerniak</a> — 4 sie 2014, o 17:13</p><hr />
]]></content>
</entry>
</feed>