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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-08T21:19:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13807&amp;mode</id>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-12-08T21:19:38+01:00</updated>
<published>2015-12-08T21:19:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147431#p147431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147431#p147431"/>
<title type="html"><![CDATA[Re: Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147431#p147431"><![CDATA[
<div class="quotetitle">majster napisał(a):</div><div class="quotecontent"><br />Najpierw inkluduje sie biblioteki standardowe &lt; &gt; pozniej wlasne &quot; &quot;<br /><br />Namazane ze smarta.<br /></div><br /><br /><br />Nie zapomnij już nigdy też o tym że:<br /><br />najpierw includujesz biblioteki standardowe a później własne<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 8 gru 2015, o 21:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lagun_25]]></name></author>
<updated>2015-12-08T20:12:02+01:00</updated>
<published>2015-12-08T20:12:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147419#p147419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147419#p147419"/>
<title type="html"><![CDATA[Re: Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147419#p147419"><![CDATA[
florekSi, dziękuję Ci bardzo za <strong>konkretną</strong> odpowiedź, o to mi chodziło. Makra miałem, kolejność potem też. Błędem okazało się zupełnie co innego... chyba muszę się w końcu wyspać, bo nie myślę. Nowe biblioteki i modyfikacje robiłem bez procesora w pociągu, dlatego nie mogłem ich sprawdzać na bieżąco. Stąd po powrocie do domu byłem pewny, że winą jest kod. Ale jednocześnie ze zmianą oprogramowania, zamocowałem elektronike na robocie. Okazało się, że MPU było w złej płaszczyźnie... stąd to 0,-1,2, itp na terminalu. W każdym razie, dobrze się stało, że napisałem, bo wiem, że muszę jeszcze porządnie popracować z kodem. Dzięki za odpowiedzi. Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4953">Lagun_25</a> — 8 gru 2015, o 20:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[florekSi]]></name></author>
<updated>2015-12-08T19:16:28+01:00</updated>
<published>2015-12-08T19:16:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147413#p147413</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147413#p147413"/>
<title type="html"><![CDATA[Re: Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147413#p147413"><![CDATA[
Kolejność <strong>ma być</strong> taka:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/wdt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;math.h&gt;<br /><br />#include &quot;USART_EVENT/mkuart.h&quot;<br />#include &quot;libraries/i2c.h&quot;<br />#include &quot;libraries/mpu_6050.h&quot;<br />#include &quot;libraries/filter.h&quot;<br />//#include &quot;libraries/motors.h&quot;<br />//#include &quot;libraries/pid.h&quot;<br />#include &quot;libraries/komendy_at.h&quot;[/syntax]<br />Najpierw systemowe, później Twoje biblioteki. <br /><br />Jeśli raz &quot;działa a raz nie&quot;, to pewnie we włączanych nagłówkach nie masz strażników.<br /><!-- m --><a class="postlink" href="https://en.wikipedia.org/wiki/Include_guard" >https://en.wikipedia.org/wiki/Include_guard</a><!-- m --><br /><br />Zdefiniuj te makra strażnicze tak jak to masz podane w wikipedi albo w pierwszym wierszu pliku *.h umieść:<br />[syntax=c]#pragma once[/syntax]<br /><br />Z tą ostatnią propozycją zakładam że nie masz jakiegoś bardzo &quot;przedpotopowego&quot; kompilatora <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Następnie zajmij się programem bo... źle się z nim dzieje....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11956">florekSi</a> — 8 gru 2015, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lagun_25]]></name></author>
<updated>2015-12-08T19:10:17+01:00</updated>
<published>2015-12-08T19:10:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147412#p147412</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147412#p147412"/>
<title type="html"><![CDATA[Re: Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147412#p147412"><![CDATA[
Zaincludowałem biblioteki tak jak napisał majster. <br />Panie Mirku, oczywiście się nie obrażam, mam świadomość, że mój kod może być kiepski. Od niedawna interesuje się procesorami, a zacząłem programować dopiero wtedy. Co do I2C, chciałem do tego wykorzystać przerwania zewnętrzne, ale niestety nie działało, więc zostawiłem tak jak jest( miałem wrócić do tego później ). Timer programowy odpaliłem co 10ms, ponieważ co tyle ma być wywoływana funkcja complementary_filter(), żeby wyniki obliczeń były poprawne. Przerzuciłem uart_putint() i uart_puts(), do timera programowego. Niestety dalej nie działa. Kiedy przestało działać zmieniałem tylko kolejność biblotek własnych, a reszta była taka jak w kodzie wyżej. Chcę, żeby to znowu ruszyło i potem postaram się to jakoś zoptymalizować, bo na razie robiąc zmiany w kodzie, a mając złą kolejność nagłówków albo inny błąd, nie mogę zweryfkować czy te zmiany coś dają...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4953">Lagun_25</a> — 8 gru 2015, o 19:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-12-08T18:09:00+01:00</updated>
<published>2015-12-08T18:09:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147408#p147408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147408#p147408"/>
<title type="html"><![CDATA[Re: Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147408#p147408"><![CDATA[
o panie - jak ty robisz z kodu a szczególnie z inkludowania tzw &quot;mieszankę tyrolską&quot; albo inaczej mówiąc &quot;pasztetową&quot; to ja się nie dziwię - program ma czkawkę albo nawet wymioty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Ja nawet nie będę (sorki) analizował tak niedbale nachlastanego kodu - bo ciężko o tym cokolwiek innego powiedzieć (nie obraź się)<br /><br />A już nie wspomnę - że masz cudowny pomysł alby w pętli głównej programu MILIARD razy na sekundę czytać wciąż czy tam zapisywać I2C<br /><br />Podobnie z RS232 <br /><br />to po co ci w ogóle ten timer programowy ? hmmm ? a zresztą - nie dość tego jeszcze timer programowy odpaliłeś co 1 ms ..... !?!?<br /><br />Niestety ale przy tak napisanym kodzie - to już nawet nie ważna kolejność bibliotek ale to nie dziwne że to nie działa albo raz działa coś tam a w większości nie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 gru 2015, o 18:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2015-12-08T18:08:52+01:00</updated>
<published>2015-12-08T18:08:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147407#p147407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147407#p147407"/>
<title type="html"><![CDATA[Re: Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147407#p147407"><![CDATA[
Najpierw inkluduje sie biblioteki standardowe &lt; &gt; pozniej wlasne &quot; &quot;<br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 8 gru 2015, o 18:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lagun_25]]></name></author>
<updated>2015-12-08T17:51:02+01:00</updated>
<published>2015-12-08T17:51:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147406#p147406</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147406#p147406"/>
<title type="html"><![CDATA[Kolejność includowania bibliotek]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13807&amp;p=147406#p147406"><![CDATA[
Witam. Miałem działający program, potem dodałem nowe biblioteki i przestał działać jak należy. Po &quot;wyrywaniu włosów z głowy&quot; postanowiłem przepisać go od nowa i tak sie zdarzyło, że zmieniłem kolejność nagłówków. Zaczęło działać, więc w ten sposób odkryłem, że przyczyną była zła kolejność nagłówków. Zostawiłem i nie pisałem już na forum. Niestety dopisałem kolejne bibioteki i mam ten sam problem, z tym, że nie pamiętam jaka była poprawna kolejność i nawet jak usunąłem te nowe biblioteki to nie mogę wrócić do poprzedniego stanu. Wydaje mi się jasne, że jako pierwsze dodaje biblioteki, z których będą korzystać następne, a jednak nie działa... Bardzo proszę o pomoc. Oto kod main.c:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;math.h&gt;<br />#include &quot;USART_EVENT/mkuart.h&quot;<br />#include &quot;libraries/i2c.h&quot;<br />#include &quot;libraries/mpu_6050.h&quot;<br />#include &quot;libraries/filter.h&quot;<br />//#include &quot;libraries/motors.h&quot;<br />//#include &quot;libraries/pid.h&quot;<br /><br /><br />#include &lt;avr/wdt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include &quot;libraries/komendy_at.h&quot;<br /><br /><br />#define RAD2DEG 57.29578<br /><br />char bufor&#91;100&#93;;<br /><br />volatile uint8_t Timer1;<br /><br />int16_t accY, accZ, gyX;<br /><br />float acc_pitch, angular_rate, comp_angle;<br /><br />//PID_DATA_type PID_DATA_struct;<br /><br /><br />int main(void) {<br /><br />DDRB|=(1&lt;&lt;PB0); // LED<br /><br />//motors_init();<br />//OCR2A=50;<br /><br />//pid_Setting(50,13,20,&amp;PID_DATA_struct);<br /><br />// MPU<br />MPU_init(); // Inicjalizacja MPU-6050<br /><br />// inicjalizacja UART<br />USART_Init(__UBRR);<br /><br />// rejestracja własnej funkcji do analizowania danych odebranych przez UART<br />register_uart_str_rx_event_callback( parse_uart_data );<br /><br />// timer do timerow programowych<br />TCCR0A |=  (1&lt;&lt;WGM01); // CTC mode<br />TCCR0B |= (1&lt;&lt;CS00)|(1&lt;&lt;CS01); // Prescaler 64<br />TIMSK0|= (1&lt;&lt;OCIE0A); // Timer/Counter2 Output Compare Match Interrupt Enable<br />OCR0A = 125; // f=1000Hz T=1ms<br /><br /><br />sei();// globalne odblokowanie przerwań<br /><br />while(1) {<br /><br />UART_RX_STR_EVENT(bufor);// zdarzenie odbiorcze UART<br /><br />//accelerometr measurement reading<br />I2C_start();<br />I2C_write_byte(MPU_adress);<br />I2C_write_byte(ACCEL_YOUT_H);<br />I2C_start(); // repeated start<br />I2C_write_byte(MPU_adress + 1); // slave adress + read bit<br />accY=( (I2C_read_byte(ACK)&lt;&lt;8) | I2C_read_byte(ACK)  );<br />accZ=( (I2C_read_byte(ACK)&lt;&lt;8) | I2C_read_byte(NACK)  );<br />I2C_stop();<br /><br />// gyro measurement reading<br />I2C_start();<br />I2C_write_byte(MPU_adress);<br />I2C_write_byte(GYRO_XOUT_H);<br />I2C_start(); // repeated start<br />I2C_write_byte(MPU_adress + 1); // slave adress + read bit<br />gyX=( (I2C_read_byte(ACK)&lt;&lt;8) | I2C_read_byte(NACK)  );<br />I2C_stop();<br /><br /><br />acc_pitch =( atan2(acc_conv2normal(accY), acc_conv2normal(accZ)) )*RAD2DEG;<br />angular_rate=gy_conv2normal(gyX);<br /><br />if(!Timer1) {<br /><br />// BEDZIE MOZNA SPROBOWAC ZMNIEJSZYC DO Timer1=1<br />// PAMIETAJ WTEDY O ZMIANIE DEFINICJI #DT W FILTRZE I PID<br />Timer1=10;<br /><br />comp_angle=complementary_filter(acc_pitch, angular_rate);<br />//OCR2A=pid_Controller(0,comp_angle,&amp;PID_DATA_struct);<br /><br /><br />}<br /><br />uart_putint(comp_angle,10);<br />uart_puts(&quot; \r \n &quot;);<br /><br /><br />}<br />}<br /><br />ISR(TIMER0_COMPA_vect) {<br /><br />uint8_t n;<br /><br />n = Timer1;<br />if (n) Timer1 = --n;<br /><br />}[/syntax]<br /><br />RS i parsowanie danych działa poprawnie. Problem jest z I2C i MPU. Dostaje błędne wartości na terminalu, prawie cały czas zero( czasem się zmienia, na jakieś 1,2... - gdzie powinien pokazywać np. 40 )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4953">Lagun_25</a> — 8 gru 2015, o 17:51</p><hr />
]]></content>
</entry>
</feed>