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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-10-12T09:36:46+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4437&amp;mode</id>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2013-10-12T09:36:46+01:00</updated>
<published>2013-10-12T09:36:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52637#p52637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52637#p52637"/>
<title type="html"><![CDATA[Re: AT45DB01 - zmieszczenie jak najwęcej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52637#p52637"><![CDATA[
Jezeli u ciebie katalog lcd jest w projekcie to dajesz bez ../ czyli nie wychodzisz z katalogu a odrazu wchodzisz do lcd<br /><br />Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 12 paź 2013, o 09:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2013-10-12T09:35:09+01:00</updated>
<published>2013-10-12T09:35:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52636#p52636</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52636#p52636"/>
<title type="html"><![CDATA[Re: AT45DB01 - zmieszczenie jak najwęcej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52636#p52636"><![CDATA[
Bo ../ wychodzily o katalog w gore od pliku projektu i dopiero wchodzilo w katalog lcd<br /><br />Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 12 paź 2013, o 09:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-10-12T09:17:25+01:00</updated>
<published>2013-10-12T09:17:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52633#p52633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52633#p52633"/>
<title type="html"><![CDATA[Re: AT45DB01 - zmieszczenie jak najwęcej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52633#p52633"><![CDATA[
No okey masz racje, zmienie to na:<br />[syntax=c]#include &quot;LCD/lcd.h&quot;[/syntax]<br />Nie wiem, gdzieś widziałem jak mirek dawał coś takiego w bibliotekach<br />[syntax=c]#include &quot;../LCD/lcd.h&quot;[/syntax]<br />ale mi to nie działało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 12 paź 2013, o 09:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DominikN]]></name></author>
<updated>2013-10-12T06:08:58+01:00</updated>
<published>2013-10-12T06:08:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52628#p52628</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52628#p52628"/>
<title type="html"><![CDATA[Re: AT45DB01 - zmieszczenie jak najwęcej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52628#p52628"><![CDATA[
od kiedy w include podaje sie bezwzgl. sciezke ?<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#include &quot;C:/PSM/flash_tefelski/LCD/lcd.h&quot;</div><br /><br />troche to nie eleganckie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1653">DominikN</a> — 12 paź 2013, o 06:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-10-11T17:55:25+01:00</updated>
<published>2013-10-11T17:44:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52584#p52584</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52584#p52584"/>
<title type="html"><![CDATA[Re: AT45DB01 - zmieszczenie jak najwęcej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52584#p52584"><![CDATA[
Działa:<br />  [syntax=c]printf(&quot;%d  %d&quot;, *buf_read, sizeof(buffor));[/syntax]<br /><br />Jednak miałeś racje źle było w printf, brak '*'. Thx za pomoc, mam teraz wartosc binarna znaku ASCII, który jest moja liczbą z zakresu &lt;0,255&gt;, a przez uarta to juz działam z binarka, więc bedzie gites.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 11 paź 2013, o 17:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaamil]]></name></author>
<updated>2013-10-11T17:45:25+01:00</updated>
<published>2013-10-11T17:41:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52583#p52583</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52583#p52583"/>
<title type="html"><![CDATA[Re: AT45DB01]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52583#p52583"><![CDATA[
Nie bardzo wiem jakiego rodzaju krzak lipy tam masz, ale chyba Twój problem polega na nierozumieniu różnicy między ciągiem znaków &quot;123&quot; a liczbą 123.<br /><br />Żeby zapisać liczbę 3-cyfrową w postaci tekstowej/znakowej trzeba użyć 3 bajtów. Te znaki będą zawierać kody ASCII znaków poszczególnych cyfr (mogą tam też być kody liter).<br /><br />Natomiast unsigned char który mieści 8 bitów, czyli przedział &lt;0,255&gt; to surowa liczba. Jeżeli wyślesz liczbę unsigned char 123 na wyświetlacz czy na UART to zobaczysz znak ASCII o kodzie 123 (taki nawias: &quot;{&quot;). Poczytaj o tablicy ASCII.<br /><br />Inaczej mówiąc - jeżeli chcesz na wyświetlaczu/terminalu wyświetlić liczbę - musisz przekonwertować ją na tekst (w C będzie to najczęściej tablica znaków o z góry określonej długości). Dlatego do wyświetlenia lub wysłania na terminal liczby 3 cyfrowej musisz użyć 3 bajtów.<br /><br />Rozumiesz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1805">kaamil</a> — 11 paź 2013, o 17:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-10-12T09:17:57+01:00</updated>
<published>2013-10-11T17:25:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52580#p52580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52580#p52580"/>
<title type="html"><![CDATA[AT45DB01 - zmieszczenie jak najwęcej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4437&amp;p=52580#p52580"><![CDATA[
Napisałem sobie program do obsługi flasha, all działa jak sie nalezy, ale jak wiadomo nie każdy ma kryształowe kule, a może chciec pomóc, więc wrzucam all. <br /><br />A więc:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &quot;LCD/lcd.h&quot;<br />#include &quot;spi.h&quot;<br />#include &quot;flashmem.h&quot;<br /><br /><br /><br />int main(void){<br />  uint8_t buffor&#91;2&#93;;<br />  uint8_t buf_read&#91;20&#93;;<br /><br />  DDRA=0xff;   //lcd port<br />  PORTA=0x00;<br />  DDRB=(1&lt;&lt;MOSI)|(1&lt;&lt;SS)|(1&lt;&lt;SCK);<br /><br />  uint8_t zmienna = 12;<br />  //sprintf(buffor,&quot;%d&quot;,zmienna);<br />  buffor&#91;0&#93; = zmienna;<br /><br />  stdout=&amp;mystdout;<br />  memset(buf_read,0,20);<br />  _delay_ms(20);<br />  lcd_init();<br />  lcd_str_P(PSTR(&quot;FlashMem test.&quot;));<br />  SPI_MasterInit();<br />  main_memory_page_program(0,0,buffor,sizeof(buffor));<br />  _delay_ms(100);<br />  //FLA_buffer_write(0,buffor,sizeof(buffor));<br />  //FLA_buffer_to_memory_with_erase(0);<br />  FLA_direct_memory_read(0,0,buf_read, sizeof(buffor));<br />  lcd_set_xy(1,0);<br />  printf(&quot;%s  %d&quot;, buf_read, sizeof(buffor));<br /><br />  while(1){<br />  }<br />  return 0;<br />}[/syntax]<br /><br />flash.c:[syntax=c]#include &quot;flashmem.h&quot;<br />#include &quot;spi.h&quot;<br /><br /><br />/////////////////////////////////////////////////////////<br />/*                   IMPORTANT                         */<br />/* BFA - Buffer First Address - write   */<br />/* BA - Buffer Address -read                           */<br />/////////////////////////////////////////////////////////<br />void FLA_if_busy_wait(void){<br />  uint8_t status;<br />  do{<br />    SS_ENABLE();<br />    SPI_MasterTransmit(STATUS_REGISTER_READ);<br />    SPI_MasterTransmit(0);  //Receive data<br />    SS_DISABLE();<br />    status=SPDR;<br />  } while (!(status&amp;(1&lt;&lt;FLASH_BUSY)));<br />}<br /><br />void FLA_page_to_buffer(uint16_t page_no){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=MAIN_MEMORY_PAGE_TO_BUFFER_TRANSFER;<br />  command&#91;1&#93;=(page_no&gt;&gt;7)&amp;0x03;<br />  command&#91;2&#93;=page_no&lt;&lt;1;<br />  command&#91;3&#93;=0;<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_buffer_to_memory_with_erase(uint16_t page_no){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=BUFFER_TO_MAIN_MEMORY_PAGE_PROGRAM_WITH_ERASE;<br />  command&#91;1&#93;=(page_no&gt;&gt;7)&amp;0x03;//three older bits<br />  command&#91;2&#93;=page_no&lt;&lt;1;<br />  command&#91;3&#93;=0xff;<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_buffer_read(uint16_t address, uint8_t *buffer, uint16_t length){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=BUFFER_READ;<br />  command&#91;1&#93;=0;<br />  command&#91;2&#93;=(uint8_t)(address&gt;&gt;8);<br />  command&#91;3&#93;=(uint8_t)(address);<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  for(uint16_t n=0;n&lt;length;n++){<br />    SPI_MasterTransmit(0);<br />    buffer&#91;n&#93;=SPDR;<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_buffer_write(uint16_t address, uint8_t *buffer, uint16_t length){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=BUFFER_WRITE;<br />  command&#91;1&#93;=0;<br />  command&#91;2&#93;=(uint8_t)(address&gt;&gt;8);<br />  command&#91;3&#93;=(uint8_t)(address);<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  for(uint16_t n=0;n&lt;length;n++){<br />    SPI_MasterTransmit(buffer&#91;n&#93;);<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_direct_memory_read(uint16_t page_no, uint16_t address, uint8_t *buffer, uint16_t length){<br />  uint8_t i;<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=CONTINOUS_ARRAY_READ;<br />  command&#91;1&#93;=(uint8_t)(page_no&gt;&gt;7);<br />  command&#91;2&#93;=((uint8_t)(page_no&lt;&lt;1)) | ( ((uint8_t) address&gt;&gt;8) &amp; 0x01);<br />  command&#91;3&#93;=(uint8_t) address;<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  for(i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(0);<br />  }<br />  for(uint16_t n=0;n&lt;length;n++){<br />    SPI_MasterTransmit(0);<br />    buffer&#91;n&#93;=SPDR;<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_auto_page_rewrite(uint16_t page_no){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=AUTO_PAGE_REWRITE_THROUGH_BUFFER;<br />  command&#91;1&#93;=(page_no&gt;&gt;7)&amp;0x03;<br />  command&#91;2&#93;=page_no&lt;&lt;1;<br />  command&#91;3&#93;=0;<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_page_erase(uint16_t page_no){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=PAGE_ERASE;<br />  command&#91;1&#93;=(page_no&gt;&gt;7)&amp;0x03;<br />  command&#91;2&#93;=page_no&lt;&lt;1;<br />  command&#91;3&#93;=0;<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  SS_DISABLE();<br />}<br /><br />void FLA_block_erase(uint16_t block_no){<br />  uint8_t command&#91;4&#93;;<br />  command&#91;0&#93;=BLOCK_ERASE;<br />  command&#91;1&#93;=(uint8_t) (block_no&gt;&gt;4)&amp;0x03;<br />  command&#91;2&#93;=(uint8_t) block_no&lt;&lt;4;<br />  command&#91;3&#93;=0;<br />  FLA_if_busy_wait();<br />  SS_ENABLE();<br />  for(uint8_t i=0;i&lt;4;i++){<br />    SPI_MasterTransmit(command&#91;i&#93;);<br />  }<br />  SS_DISABLE();<br />}<br />/////////////////////////////////////////////////////////////////////////////////<br />/*                      PARAMETERS                        */<br />/* uint8_t addres_page include bracket &lt;0,511&gt;                  */<br />/*uint8_t address_buffer_Bajt - which bajt on page wuth bracket &lt;0,256&gt;        */<br />/////////////////////////////////////////////////////////////////////////////////<br />void main_memory_page_program(uint16_t address_page,uint16_t address_buffer_Bajt, uint8_t *buffer, uint16_t length)<br />{<br />uint8_t command&#91;4&#93;;<br /><br /><br /><br />command&#91;0&#93; = MAIN_MEMORY_PAGE_PROGRAM_THROUGH_BUFFER;//opcode 82H<br />command&#91;1&#93; = (uint8_t) (address_page&gt;&gt;7)&amp;0x03;//address select the page, where data is to be written<br />command&#91;2&#93; = (uint8_t)((address_page &lt;&lt; 1) | ((address_buffer_Bajt &gt;&gt; 8)&amp;0x01));//how up<br />command&#91;3&#93; = (uint8_t)(address_buffer_Bajt);<br /><br />FLA_if_busy_wait();<br /><br />SS_ENABLE();<br /><br />for(int i = 0 ; i &lt; 4 ; i++)<br />{<br />SPI_MasterTransmit(command&#91;i&#93;);<br />}<br /><br />for(int n = 0 ; n &lt; length ; n++)<br />{<br />SPI_MasterTransmit(buffer&#91;n&#93;);<br />}<br />SS_ENABLE();<br /><br />}[/syntax]<br /><br />flash.h:<br />[syntax=c]#ifndef _FLASHMEM_H<br />#define _FLASHMEM_H<br />#include &lt;avr/io.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />/* AT45DB011B flash memory routines */<br /><br />/*FLAG BITS*/<br />#define FLASH_BUSY 7<br />#define FLASH_COMP 6<br /><br />/*Read commands*/<br />#define STATUS_REGISTER_READ 0xd7<br />#define CONTINOUS_ARRAY_READ 0xe8<br />#define MAIN_MEMORY_PAGE_READ 0xd2<br />#define BUFFER_READ 0xd4<br /><br />/*Program and erase commands*/<br />#define BUFFER_WRITE 0x84<br />#define BUFFER_TO_MAIN_MEMORY_PAGE_PROGRAM_WITH_ERASE 0x83<br />#define BUFFER_TO_MAIN_MEMORY_PAGE_PROGRAM_WITHOUT_ERASE 0x88<br />#define PAGE_ERASE 0x81<br />#define BLOCK_ERASE 0x50<br />#define MAIN_MEMORY_PAGE_PROGRAM_THROUGH_BUFFER 0x82<br /><br />/*Additional Commands*/<br />#define MAIN_MEMORY_PAGE_TO_BUFFER_TRANSFER 0x53<br />#define MAIN_MEMORY_PAGE_TO_BUFFER_COMPARE 0x60<br />#define AUTO_PAGE_REWRITE_THROUGH_BUFFER 0x58<br /><br />void FLA_if_busy_wait(void);<br />void FLA_page_to_buffer(uint16_t page_no);<br />void FLA_buffer_to_memory_with_erase(uint16_t page_no);<br />void FLA_buffer_read(uint16_t address, uint8_t *buffer, uint16_t length);<br />void FLA_buffer_write(uint16_t address, uint8_t *buffer, uint16_t length);<br />void FLA_direct_memory_read(uint16_t page_no, uint16_t address, uint8_t *buffer, uint16_t length);<br />void FLA_auto_page_rewrite(uint16_t page_no);<br />void FLA_page_erase(uint16_t page_no);<br />void FLA_block_erase(uint16_t block_no);<br />void main_memory_page_program(uint16_t address_sector,uint16_t address_page, uint8_t *buffer, uint16_t length);<br /><br />#endif[/syntax]<br /><br />i spi.c:<br />[syntax=c]#include &quot;spi.h&quot;<br /><br /><br />void SPI_MasterInit(void){<br />  SPCR=(1&lt;&lt;SPE)|(1&lt;&lt;MSTR)|(1&lt;&lt;SPR0);<br />}<br /><br /><br />void SPI_MasterTransmit(uint8_t data){<br />  SPDR = data;<br />  while(! (SPSR &amp; (1&lt;&lt;SPIF)));<br />}<br /><br />uint8_t SPI_MasterReceive(void){<br />  SPDR = 0;<br />  while(! (SPSR &amp; (1&lt;&lt;SPIF)));<br />  return SPDR;<br />}[/syntax]<br /><br />spi.h:<br />[syntax=c]#ifndef _SPI_H<br />#define _SPI_H<br />#include &lt;inttypes.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define SS PB4<br />#define MOSI PB5<br />#define MISO PB6<br />#define SCK PB7<br /><br /><br />#define SS_ENABLE() {PORTB&amp;=~(1&lt;&lt;SS);}<br />#define SS_DISABLE() {PORTB|=(1&lt;&lt;SS);}<br /><br /><br />void SPI_MasterInit(void);<br />void SPI_MasterTransmit(uint8_t data);<br />uint8_t SPI_MasterReceive(void);<br />#endif[/syntax]<br /><br />Kod jest działajacy więc ktoś może sobie z nim się pobwić mając tą pamięć. Ale ważne pytanie, dlaczego jak wykorzystam sprintf i sobie zapisze liczbe 123 jako 1 bajt na 1, 1 bajt na 2 i 1 bajt na 3 to działa. A jak chce sobie zmieścić w jednym bajcie  liczbe 123, bo jak wiadomo mieści sie ona  w unsigned char = &lt;0,255&gt;, to mam lipe krzak - żeby nie było bez liści. I interesuje mnie jak  wykorzystując 1 bajt zapisac liczbę z przedziału &lt;0,255&gt;, bo po co marnowac aż 3,2 lub 1 bajt.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 11 paź 2013, o 17:25</p><hr />
]]></content>
</entry>
</feed>