<?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=4&amp;t=21219&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-09-03T21:34:40+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21219&amp;mode</id>
<entry>
<author><name><![CDATA[meyo7er]]></name></author>
<updated>2018-09-03T21:34:40+01:00</updated>
<published>2018-09-03T21:34:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211311#p211311</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211311#p211311"/>
<title type="html"><![CDATA[Re: Połączenie dwoch kodow w jedno. nie dziala]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211311#p211311"><![CDATA[
Faktycznie używałem encodera i myślałem że usuniecie z main-a przerwania i wszystkiego co z  nim związane (od enkodera) pomoże. Dopiero teraz zauważyłem że został jeszcze jeden podfolder w folderze &quot;Debug&quot; pomogło usunięcie. Nie wiedziałem o tym dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18054">meyo7er</a> — 3 wrz 2018, o 21:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[meyo7er]]></name></author>
<updated>2018-09-03T19:15:10+01:00</updated>
<published>2018-09-03T19:15:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211306#p211306</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211306#p211306"/>
<title type="html"><![CDATA[Re: Połączenie dwoch kodow w jedno. nie dziala]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211306#p211306"><![CDATA[
Zaraz po cleaningu.[syntax=c]19:10:54 **** Build of configuration Release for project aquarative ****<br />make all <br />'Building file: ../MK_MENU_USER_FILES/mk_menu_display.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;MK_MENU_USER_FILES/mk_menu_display.d&quot; -MT&quot;MK_MENU_USER_FILES/mk_menu_display.o&quot; -c -o &quot;MK_MENU_USER_FILES/mk_menu_display.o&quot; &quot;../MK_MENU_USER_FILES/mk_menu_display.c&quot;<br />'Finished building: ../MK_MENU_USER_FILES/mk_menu_display.c'<br />' '<br />'Building file: ../MK_MENU_USER_FILES/mk_menu_exe.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;MK_MENU_USER_FILES/mk_menu_exe.d&quot; -MT&quot;MK_MENU_USER_FILES/mk_menu_exe.o&quot; -c -o &quot;MK_MENU_USER_FILES/mk_menu_exe.o&quot; &quot;../MK_MENU_USER_FILES/mk_menu_exe.c&quot;<br />'Finished building: ../MK_MENU_USER_FILES/mk_menu_exe.c'<br />' '<br />'Building file: ../MK_MENU_LIB/menu_items.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;MK_MENU_LIB/menu_items.d&quot; -MT&quot;MK_MENU_LIB/menu_items.o&quot; -c -o &quot;MK_MENU_LIB/menu_items.o&quot; &quot;../MK_MENU_LIB/menu_items.c&quot;<br />'Finished building: ../MK_MENU_LIB/menu_items.c'<br />' '<br />'Building file: ../MK_MENU_LIB/mk_menu.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;MK_MENU_LIB/mk_menu.d&quot; -MT&quot;MK_MENU_LIB/mk_menu.o&quot; -c -o &quot;MK_MENU_LIB/mk_menu.o&quot; &quot;../MK_MENU_LIB/mk_menu.c&quot;<br />'Finished building: ../MK_MENU_LIB/mk_menu.c'<br />' '<br />'Building file: ../MK_ENCODER/mkencoder.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;MK_ENCODER/mkencoder.d&quot; -MT&quot;MK_ENCODER/mkencoder.o&quot; -c -o &quot;MK_ENCODER/mkencoder.o&quot; &quot;../MK_ENCODER/mkencoder.c&quot;<br />'Finished building: ../MK_ENCODER/mkencoder.c'<br />' '<br />'Building file: ../LCD/lcd44780.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;LCD/lcd44780.d&quot; -MT&quot;LCD/lcd44780.o&quot; -c -o &quot;LCD/lcd44780.o&quot; &quot;../LCD/lcd44780.c&quot;<br />'Finished building: ../LCD/lcd44780.c'<br />' '<br />'Building file: ../I2C_TWI/i2c_twi.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;I2C_TWI/i2c_twi.d&quot; -MT&quot;I2C_TWI/i2c_twi.o&quot; -c -o &quot;I2C_TWI/i2c_twi.o&quot; &quot;../I2C_TWI/i2c_twi.c&quot;<br />'Finished building: ../I2C_TWI/i2c_twi.c'<br />' '<br />'Building file: ../main.c'<br />'Invoking: AVR Compiler'<br />avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF&quot;main.d&quot; -MT&quot;main.o&quot; -c -o &quot;main.o&quot; &quot;../main.c&quot;<br />'Finished building: ../main.c'<br />' '<br />'Building target: aquarative.elf'<br />'Invoking: AVR C Linker'<br />avr-gcc -Wl,-Map,aquarative.map -mmcu=atmega32 -o &quot;aquarative.elf&quot;  ./MK_MENU_USER_FILES/mk_menu_display.o ./MK_MENU_USER_FILES/mk_menu_exe.o  ./MK_MENU_LIB/menu_items.o ./MK_MENU_LIB/mk_menu.o  ./MK_ENCODER/mkencoder.o  ./LCD/lcd44780.o  ./I2C_TWI/i2c_twi.o  ./main.o   <br />./main.o: In function `__vector_1':<br />main.c:(.text.__vector_1+0x0): multiple definition of `__vector_1'<br />./MK_ENCODER/mkencoder.o:mkencoder.c:(.text.__vector_1+0x0): first defined here<br />collect2.exe: error: ld returned 1 exit status<br />make: *** &#91;aquarative.elf&#93; Błąd 1<br /><br />19:11:09 Build Finished (took 15s.51ms)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18054">meyo7er</a> — 3 wrz 2018, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2018-09-02T20:25:10+01:00</updated>
<published>2018-09-02T20:25:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211259#p211259</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211259#p211259"/>
<title type="html"><![CDATA[Re: Połączenie dwoch kodow w jedno. nie dziala]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211259#p211259"><![CDATA[
<div class="quotetitle">meyo7er napisał(a):</div><div class="quotecontent"><br />No właśnie po Cleaningu wywala mi hexa :/ i nie mogę załadować do mikrokontrolera.<br /></div><br />A co masz w komunikatach w konsoli?<br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 2 wrz 2018, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[meyo7er]]></name></author>
<updated>2018-09-02T19:55:10+01:00</updated>
<published>2018-09-02T19:55:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211257#p211257</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211257#p211257"/>
<title type="html"><![CDATA[Re: Połączenie dwoch kodow w jedno. nie dziala]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211257#p211257"><![CDATA[
No właśnie po Cleaningu wywala mi hexa :/ i nie mogę załadować do mikrokontrolera.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18054">meyo7er</a> — 2 wrz 2018, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[meyo7er]]></name></author>
<updated>2018-09-02T18:54:23+01:00</updated>
<published>2018-09-02T18:54:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211255#p211255</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211255#p211255"/>
<title type="html"><![CDATA[Połączenie dwoch kodow w jedno. nie dziala]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21219&amp;p=211255#p211255"><![CDATA[
Witam, próbuję połączyć dwa kody w jeden i coś nie bardzo mi idzie. Czasem nawet ginie mi hex w eclipsie i projekt nie chce kompilowac.<br />Mianowicie stworzyłem sobie małe menu za pomocą mkGeneratora. Wcześniej obsługiwałem je za pomocą encodera lecz teraz żeby było jak najprosciej, działem za pomocą klawiszy. Plan jest taki, że by sprawdzić czy zegarek sobie tyka kiedy menu działa. Więc na żywca wkleiłem kod z TWI z BB. No i kiszka coś nie tak :/ Oto kod. Atmega 32 taktowana wewnetrznie 8Mh zestaw ATB. <br />[syntax=c]//Akwarium kontroler początki, mkmenu encoder, Lcd, <br />//Atmega 32, 8Mh zestaw ATB<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br /><br />// inkludy konieczne do obsługi MK_MENU -------------------------------<br />//----- funkcje biblioteczne ------<br />#include &quot;MK_MENU_LIB/mk_menu.h&quot;<br />#include &quot;MK_MENU_LIB/menu_items.h&quot;<br />#include &quot;MK_MENU_USER_FILES/mk_menu_exe.h&quot;<br />#include &quot;MK_MENU_USER_FILES/mk_menu_display.h&quot;<br />//----------------------------------------------------------------------<br /><br />// definicje Pinow dla preprocesora<br />#define SWIATLO (1&lt;&lt;PC6)    // definicja pinu do którego podłączona jest dioda<br />#define SWIATLO_ON PORTC &amp;= ~SWIATLO// makrodefinicja – załączenie diody<br />#define SWIATLO_OFF PORTC |= SWIATLO// makrodefinicja – wyłączenie diody<br />#define SWIATLO_TOG PORTC ^= SWIATLO// makrodefinicja – zmiana stanu diody<br /><br />#define FILTR (1&lt;&lt;PC7)// FILTR akwarium<br />#define FILTR_ON PORTC &amp;= ~FILTR // makrodefinicja – załączenie FILTR<br />#define FILTR_OFF PORTC |= FILTR // makrodefinicja – wyłączenie FILTR<br />#define FILTR_TOG PORTC ^= FILTR // makrodefinicja – zmiana stanu FILTR . on/off<br /><br />// klawisze do obslugi menu. Lewo,Prawo,Click.<br />#define KEY_LEWO (1&lt;&lt;PC4)<br />#define KEY_PRAWO (1&lt;&lt;PC3)<br />#define KEY_CLICK (1&lt;&lt;PC2)<br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz);// deklaracja funkcji<br /><br />// **** UWAGA - wybierz właciwy adres jak niżej **************<br />//#define PCF8583_ADDR 0xA0// gdy A1 --&gt; GND<br />#define PCF8583_ADDR 0xA2// gdy A1 --&gt; VCC<br /><br />#define _24C04_ADDR 0xA8<br /><br />// utworzenie typu u08, odpowiednika uint8_t aby kod był bardziej czytelny<br />typedef unsigned char u08;<br />typedef unsigned short u16;<br /><br />volatile uint8_t int0_flag = 1;// flaga zmieniana w przerwaniu i sprawdzana w pętli głównej<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec);<br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd);<br /><br />// odczyt danych z pamięci EEPROM<br />void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf);<br />// zapis danych do pamięci EEPROM<br />void EI2C_write_buf(u08 device, u16 subAddr, u16 len, u08 *buf);<br /><br />int main(void) {<br /><br />DDRC |= SWIATLO; //Deklaracja w main musi byc inaczej nie dziala w menu execute.<br />DDRC |= FILTR;<br /><br />DDRC &amp;= ~( KEY_LEWO | KEY_PRAWO | KEY_CLICK); //Kierunki pinów.<br /><br />PORTC |= KEY_LEWO | KEY_PRAWO | KEY_CLICK;<br /><br />// Przerwanie INT0<br />MCUCR |= (1 &lt;&lt; ISC01);// wyzwalanie zboczem opadającym<br />GICR |= (1 &lt;&lt; INT0);// odblokowanie przerwania<br />PORTD |= (1 &lt;&lt; PD2);// podciągnięcie pinu INT0 do VCC<br /><br />// definiujemy sobie dla polepszenia czytelności programu typ wyliczeniowy<br />// wskazujący nam później na odpowiednie indeksy w tablicy (buforze)<br />enum {<br />ss = 1, mm, hh<br />};<br />uint8_t bufor&#91;4&#93;;// rezerwacja bufora 4 bajty<br />uint8_t sekundy, minuty, godziny;<br /><br />i2cSetBitrate(100);<br />//inicjalizacja LCD<br />lcd_init();<br />lcd_str_P(PSTR(&quot; Aquareative&quot;));<br />lcd_locate(1, 0);<br />lcd_str_P(PSTR(&quot;  Meyo7er  &quot;));<br /><br />register_execute_node_fun_callback(execute_node);<br /><br />// zarejestrowanie zmiennej odpowiadającej za Menu Timeout<br />// jeśli w ogóle jest używana w programie<br />//register_timeout_counter_ptr( &amp;menu_timeout );<br /><br />bufor&#91;0&#93; = 0;// setne części sekundy<br />bufor&#91;1&#93; = dec2bcd(00);// sekundy<br />bufor&#91;2&#93; = dec2bcd(01);// minuty<br />bufor&#91;3&#93; = dec2bcd(14);// godziny<br />// zapis 4 bajtów z bufora pod adres 0x01 w pamięci RAM naszego RTC<br />TWI_write_buf( PCF8583_ADDR, 0x01, 4, bufor);<br /><br />sei();<br /><br />while (1) {<br /><br />//*******Dlaczego tu się nic nie dzieję?**********<br /><br />if (int0_flag) {<br />//odczyt 4 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC<br />TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor);<br /><br />sekundy = bcd2dec(bufor&#91;ss&#93;);<br />minuty = bcd2dec(bufor&#91;mm&#93;);<br />godziny = bcd2dec(bufor&#91;hh&#93;);<br /><br />// wyświetlenie czasu na LCD<br />lcd_locate(1, 0);<br />if (godziny &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if (minuty &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />lcd_str(&quot;:&quot;);<br />if (sekundy &lt; 10)<br />lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br />lcd_locate(0, 0);<br />lcd_str_P(PSTR(&quot;i2c-TWI &quot;));<br /><br />int0_flag = 0;<br />}<br />//***********************************<br /><br />if (klawisz_wcisniety( KEY_PRAWO)) // jeśli klawisz wciśnięty W PRAWO. menu up<br />{<br />mk_menu_dec();<br />}<br />if (klawisz_wcisniety( KEY_LEWO))// jeśli klawisz wciśnięty W LEWO. menu down.<br />{<br />mk_menu_inc();<br />}<br /><br />if (klawisz_wcisniety( KEY_CLICK))//Click.<br />{<br />mk_menu_click();<br />}<br /><br />}<br /><br />}<br /><br />// definicja funkcji klawisz wcisniety<br />uint8_t klawisz_wcisniety(uint8_t klawisz) {<br />if (!( PINC &amp; klawisz))// klawisz wciśnięty ?<br />{<br />_delay_ms(120);            // czas drgań styków<br />if (!( PINC &amp; klawisz))<br />return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br />// procedura obsługi przerwania INT 0<br />ISR( INT0_vect ) {<br />int0_flag = 1;<br />DDRD |= 1 &lt;&lt; PD7;<br />PORTD ^= 1 &lt;&lt; PD7;<br />}<br /><br />// konwersja liczby dziesiętnej na BCD<br />uint8_t dec2bcd(uint8_t dec) {<br />return ((dec / 10) &lt;&lt; 4) | (dec % 10);<br />}<br /><br />// konwersja liczby BCD na dziesiętną<br />uint8_t bcd2dec(uint8_t bcd) {<br />return ((((bcd) &gt;&gt; 4) &amp; 0x0F) * 10) + ((bcd) &amp; 0x0F);<br />}<br /><br />// odczyt danych z pamięci EEPROM<br />void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) {<br />TWI_start();<br />TWI_write(device | ((subAddr &gt;&gt; 8) &lt;&lt; 1));<br />TWI_write(subAddr);<br />TWI_start();<br />TWI_write(device + 1);<br />*buf++ = TWI_read( NACK);<br />TWI_stop();<br />subAddr++;<br />}<br /><br />}<br /><br />// zapis danych do pamięci EEPROM<br />void EI2C_write_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) {<br />TWI_start();<br />// ustawienie 9 bitu adresu pamięci EEPROM w ramach<br />// sprzętowego adresu urządzenia na pozycji bitu 1 (nr.2)<br />TWI_write(device | ((subAddr &gt;&gt; 8) &lt;&lt; 1));<br />TWI_write(subAddr);<br /><br />TWI_write(*buf++);<br /><br />TWI_stop();<br />_delay_ms(5); // oczekiwanie na zapis<br />subAddr++;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18054">meyo7er</a> — 2 wrz 2018, o 18:54</p><hr />
]]></content>
</entry>
</feed>