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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-07T14:10:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=11519&amp;mode</id>
<entry>
<author><name><![CDATA[tominio_1]]></name></author>
<updated>2015-05-07T14:10:47+01:00</updated>
<published>2015-05-07T14:10:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128491#p128491</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128491#p128491"/>
<title type="html"><![CDATA[Re: Atmega32, zapis do pliku, problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128491#p128491"><![CDATA[
Oglądałem przedwczoraj na dobranoc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Nie miałem nic innego sensownego pod ręką więc wrzuciłem BC107, pomyślałem lepszy rydz niż nic, a tu okazuje się że czasem nic jest lepsze od rydza.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4931">tominio_1</a> — 7 maja 2015, o 14:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-05-07T13:58:20+01:00</updated>
<published>2015-05-07T13:58:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128488#p128488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128488#p128488"/>
<title type="html"><![CDATA[Re: Atmega32, zapis do pliku, problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128488#p128488"><![CDATA[
100mA to zdecydowanie za mało i karta pewnie padaczki dostawała ...<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2015/05/karty-pamieci-mikrokontroler.html" >http://mirekk36.blogspot.com/2015/05/ka ... roler.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 7 maja 2015, o 13:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tominio_1]]></name></author>
<updated>2015-05-07T12:49:57+01:00</updated>
<published>2015-05-07T12:49:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128479#p128479</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128479#p128479"/>
<title type="html"><![CDATA[Re: Atmega32, zapis do pliku, problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=128479#p128479"><![CDATA[
Prawdopodobnie problem tkwił w sterowaniu napięciem zasilania karty. Użyłem do tego BC107, który puszcza tylko 100 mA. po wyrzuceniu tranzystora póki co wszystko działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4931">tominio_1</a> — 7 maja 2015, o 12:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tominio_1]]></name></author>
<updated>2015-04-29T14:40:11+01:00</updated>
<published>2015-04-29T14:40:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127755#p127755</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127755#p127755"/>
<title type="html"><![CDATA[Re: Atmega32, zapis do pliku, problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127755#p127755"><![CDATA[
Usunąłem z kodu disk_initialize i nadal występują problemy przy dopisywaniu do istniejącego już pliku. <br /><br />Zrobiłem test i zapis wywala się przy tym warunku:<br />[syntax=c]res = FatFS_Write(&amp;FIL,                                                                                  <br />      &quot;data.txt&quot;,                                     // Nazwa pliku<br />      0,    // Obliczanie odpowiedniej lokalizacji w pliku<br />      BuforSD,                                        // Dane do zapisu<br />      strlen(BuforSD),                                // Liczba bajtow do zapisu<br />      FA_OPEN_ALWAYS | FA_WRITE);                   // Okreslenie typu dostepu<br /> <br />if(res == FR_OK)                <br />{<br />PORTD &amp;=~ (1&lt;&lt;PD3);<br />}<br />else                                    <br />{<br />PORTD |= (1&lt;&lt;PD3);<br />                TUTAJ POJAWIA SIĘ BŁĄD<br />}[/syntax]<br /><br />Drążąc dalej gdzie konkretnie pojawia się błąd doszedłem do funkcji: <br />[syntax=c]FRESULT FatFS_Write(FIL *File, char *Nazwa, DWORD Przesuniecie,char *Data, UINT IleBajtow, uint8_t Mode)<br />{<br />UINT bw;                // Zmienna zapisanych bajtow<br />    FRESULT res;    // Zmienna rezultatu funkcji<br /> <br /> <br />   res = f_open(File, Nazwa, Mode);        // Otworz plik<br />   if(res == FR_OK)                                        // Jesli wszystko OK - idziemy dalej<br />    {<br />            res = f_lseek(File, f_size(File));      // Ustaw wskaznik zapisu do pliku w odpowiednim miejscu<br />                if(res == FR_OK)                                        // Jesli wszystko OK - idziemy dalej<br />        {<br />        res = f_write(File, Data, IleBajtow, &amp;bw);              // Zapisz co trzeba do pliku<br />            if(res == FR_OK)                                                                // Jesli OK - idziemy dalej<br />            {<br />            res = f_close(File);    // Zamknij plik<br />            }<br />                        else<br />                        {<br />                        TUTAJ POJAWIA SIĘ BŁĄD<br />                        }<br />        }<br />}<br /><br />return res;             // No i zwroc rezultat funkcji<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4931">tominio_1</a> — 29 kwi 2015, o 14:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2015-04-28T17:44:46+01:00</updated>
<published>2015-04-28T17:44:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127692#p127692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127692#p127692"/>
<title type="html"><![CDATA[Re: Atmega32, zapis do pliku, problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127692#p127692"><![CDATA[
Nie należy wywoływać disk_initialize w kodzie programu. Tak pisze autor:<br /><!-- m --><a class="postlink" href="http://elm-chan.org/fsw/ff/en/dinit.html" >http://elm-chan.org/fsw/ff/en/dinit.html</a><!-- m --><br /><br />Możesz sobie sprawdzić czy wszystkie bajty zostały zapisane. Po wywołaniu:<br />[syntax=c]res = f_write(File, Data, IleBajtow, &amp;bw);              // Zapisz co trzeba do pliku[/syntax]<br />umieść warunek:<br />[syntax=c]if( IleBajtow == bw )[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 28 kwi 2015, o 17:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tominio_1]]></name></author>
<updated>2015-04-28T09:58:55+01:00</updated>
<published>2015-04-28T09:58:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127666#p127666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127666#p127666"/>
<title type="html"><![CDATA[Atmega32, zapis do pliku, problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11519&amp;p=127666#p127666"><![CDATA[
Witam,<br /><br />Wykonałem urządzenie które mierzy ciśnienie, temperaturę i generuje odpowiednie sekwencje cykli sterowania elektrozaworami. Urządzenie to ma zapisywać dane na karcie SD. Do obsługi karty zastosowałem bibliotekę FatFS. Liczbę cykli (liczba od X do XXX XXX) zapisuję w dwóch różnych plikach NADPISUJĄC je i wszystko jest w porządku.<br /><br />[syntax=c]FRESULT FatFS_Read(FIL *File, char *Nazwa, uint8_t Mode, long number_cycles)<br />{<br />UINT br;         // File read/write count <br />    FRESULT res;    // Zmienna rezultatu funkcji<br /> <br />    res = f_open(File, Nazwa, Mode);        // Otworz plik<br />    if(res == FR_OK)                        // Jesli wszystko OK - idziemy dalej<br />    {<br />       while(f_read(File, number_cycles, 6, &amp;br))<br />     <br />        res = f_close(File);    // Zamknij plik         <br />}<br /><br />return res;             // No i zwroc rezultat funkcji<br />}[/syntax]<br /><br />i wywołanie funkcji zapisu:<br />[syntax=c]res = FatFS_Read(&amp;FIL, &quot;licznik.txt&quot;,  FA_READ, liczba_cykli);[/syntax]<br /><br />Natomiast jeżeli zapisuję więcej danych w postaci:<br />[syntax=c]char BuforSD&#91;150&#93;;<br /><br />     strcat(BuforSD, liczba_cykli);       //liczba od X do XXX XXX<br />     strcat(BuforSD, &quot;;&quot;); <br />     strcat(BuforSD, temperatura1);          //XX.XX<br />     strcat(BuforSD, &quot;;&quot;);       <br />     strcat(BuforSD, cisnienie4);               //XXX.XX<br />     strcat(BuforSD, &quot;;&quot;);         <br />     strcat(BuforSD, temperatura2);          //XX.XX         <br />     strcat(BuforSD, &quot;;&quot;);         <br />     strcat(BuforSD, cisnienie5);               //XXX.XX       <br />     strcat(BuforSD, &quot;;&quot;);        <br />     strcat(BuforSD, temperatura3);          //XX.XX       <br />     strcat(BuforSD, &quot;;&quot;);      <br />     strcat(BuforSD, cisnienie6);               //XXX.XX       <br />     strcat(BuforSD, &quot;\r\n&quot;);[/syntax]<br /><br />Funkcja zapisująca na kartę więcej danych:<br />[syntax=c]PORTD |= (1&lt;&lt;PD5);<br />PORTA &amp;= ~(1&lt;&lt;PA6);<br /><br />_delay_ms(200);<br />res = disk_initialize(0);               // Inicjalizacja karty SD<br /><br />if(res == FR_OK)                                            <br />{<br />        PORTD &amp;=~ (1&lt;&lt;PD3);<br />res = f_mount(0, &amp;FS);              // To montuj karte SD<br />if(res == FR_OK)                        // Jesli montowanie sie nie powiodlo<br />{<br />           res = FatFS_Write(&amp;FIL,                                                                                  <br />                &quot;dane.txt&quot;,                                     // Nazwa pliku<br />                0,    // Obliczanie odpowiedniej lokalizacji w pliku<br />                BuforSD,                                        // Dane do zapisu<br />                strlen(BuforSD),                                // Liczba bajtow do zapisu<br />                FA_OPEN_ALWAYS | FA_WRITE);                   // Okreslenie typu dostepu<br /> <br />    if(res == FR_OK)                <br />    {<br />PORTD &amp;=~ (1&lt;&lt;PD3);<br />    }<br />    else                                    <br />    {<br />PORTD |= (1&lt;&lt;PD3);<br />    }<br />}<br /><br />licznik_zapis = 0;<br />}<br />else<br />PORTD |= (1&lt;&lt;PD3);<br /><br />PORTD &amp;=~ (1&lt;&lt;PD5);<br />PORTA |= (1&lt;&lt;PA6);<br />UsunStaryString(BuforSD);       // Usuwanie starego stringa[/syntax]<br /><br />Jeżeli zapisuję BuforSD to przez jakiś czas wszystko jest OK zapisuję się bez błędów, plik mogę normalnie otworzyć. Natomiast po jakimś czasie nagle się wysypuje. Plik jest widoczny na karcie jednak nie mogę go otworzyć bo wyrzuca błędy.<br /><br />Teraz moje MEGA prośba o sprawdzenie poprawności zapisu, czy czegoś nie pochrzaniłem.<br /><br />Jeszcze funkcja zapisu u usuwanie stringa BuforSD:<br />[syntax=c]FRESULT FatFS_Write(FIL *File, char *Nazwa, DWORD Przesuniecie,char *Data, UINT IleBajtow, uint8_t Mode)<br />{<br />UINT bw;                // Zmienna zapisanych bajtow<br />    FRESULT res;    // Zmienna rezultatu funkcji<br /> <br /> <br />    res = f_open(File, Nazwa, Mode);        // Otworz plik<br />    if(res == FR_OK)                                        // Jesli wszystko OK - idziemy dalej<br />    {<br />    res = f_lseek(File, f_size(File));      // Ustaw wskaznik zapisu do pliku w odpowiednim miejscu<br />        if(res == FR_OK)                                        // Jesli wszystko OK - idziemy dalej<br />        {<br />        res = f_write(File, Data, IleBajtow, &amp;bw);              // Zapisz co trzeba do pliku<br />            if(res == FR_OK)                                                                // Jesli OK - idziemy dalej<br />            {<br />            res = f_close(File);    // Zamknij plik<br />            }<br />        }<br />}<br /><br />return res;             // No i zwroc rezultat funkcji<br />}<br /><br />void UsunStaryString(char *String)<br />{<br />        uint8_t Wsk = 0;        // Zmienna do cofania wskaznika<br /> <br />        for(uint8_t i = 0; i &lt; strlen(String); i++)     // Petla wykona sie tyle razy ile jest znakow w buforze<br />        {<br />                Wsk++;                  // Inkrementuj zmienna wskaznika, aby mozna bylo potem cofnac wskaznik do poczatku<br />                *String = 0;    // Usun stary tekst<br />                String++;               // Inkrementuj wskaznik<br />        }<br />}[/syntax]<br /><br />Z góry dzięki za pomoc i poświęcony czas.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4931">tominio_1</a> — 28 kwi 2015, o 09:58</p><hr />
]]></content>
</entry>
</feed>