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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-01-20T18:10:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10295&amp;mode</id>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2015-01-20T18:10:54+01:00</updated>
<published>2015-01-20T18:10:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114991#p114991</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114991#p114991"/>
<title type="html"><![CDATA[Re: ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114991#p114991"><![CDATA[
Czy ktos juz mial podobny problem?? uruchomil ktos ten modul na procesorze at128??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 20 sty 2015, o 18:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2015-01-19T21:27:46+01:00</updated>
<published>2015-01-19T21:27:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114909#p114909</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114909#p114909"/>
<title type="html"><![CDATA[Re: ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114909#p114909"><![CDATA[
Wydaje mi sie ze raz <br /><br />[syntax=c]/*********************************************<br /> * vim:sw=8:ts=8:si:et<br /> * To use the above modeline in vim you must have &quot;set modeline&quot; in your .vimrc<br /> * Author: Guido Socher<br /> * Copyright: GPL V2<br /> *<br /> * Tuxgraphics AVR webserver/ethernet board<br /> *<br /> * http://tuxgraphics.org/electronics/<br /> * Chip type           : Atmega88/168/328 with ENC28J60<br /> *<br /> *<br /> * MODYFIKACJE: Mirosław Kardaś --- ATmega32<br /> *<br /> *********************************************/<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include &quot;ip_arp_udp_tcp.h&quot;<br />#include &quot;enc28j60.h&quot;<br />#include &quot;util/delay.h&quot;<br />#include &quot;net.h&quot;<br /><br />// ustalamy adres MAC<br />static uint8_t mymac&#91;6&#93; = {0x54,0x55,0x58,0x10,0x00,0x29};<br />// ustalamy adres IP urządzenia<br />static uint8_t myip&#91;4&#93; = {192,168,1,150};<br /><br />// server listen port for www<br />#define MYWWWPORT 80<br /><br />#define BUFFER_SIZE 850<br />static uint8_t buf&#91;BUFFER_SIZE+1&#93;;<br /><br />const char http_head&#91;&#93; PROGMEM = &quot;HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n&quot;;<br /><br />uint16_t http200ok(void)<br />{<br />        return(fill_tcp_data_p(buf,0,http_head));<br />}<br /><br />// prepare the webpage by writing the data to the tcp send buffer<br />uint16_t print_webpage(uint8_t *buf)<br />{<br />        uint16_t plen;<br />        plen=http200ok();<br />        plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;pre&gt;&quot;));<br />        plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;font color='green' size='6'&gt;&lt;b&gt;Witaj !&lt;/b&gt;\n&lt;/font&gt;&quot;));<br />        plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;font color='blue'&gt;&lt;i&gt;twój serwer www działa znakomicie&lt;/i&gt;\n\n&lt;/font&gt;&quot;));<br />        plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;hr&gt;&lt;img src=http://www.atnel.pl/atnel_mini.jpg&gt;&quot;));<br />        plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;a href=http://www.atnel.pl&gt;&lt;br&gt;www.atnel.pl&lt;/a&gt;&quot;));<br />        plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;/pre&gt;\n&quot;));<br />        return(plen);<br />}<br /><br /><br /><br />int main(void){<br />        uint16_t dat_p;<br />        <br />       DDRB |= (1&lt;&lt;PB0);<br /><br /><br />        // set the clock speed to 8MHz<br />        // set the clock prescaler. First write CLKPCE to enable setting of clock the<br />        // next four instructions.<br />//        CLKPR=(1&lt;&lt;CLKPCE);<br />//        CLKPR=0; // 8 MHZ<br />//        _delay_loop_1(0); // 60us<br />        <br />        //initialize the hardware driver for the enc28j60<br />        enc28j60Init(mymac);<br />//        enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz<br />//        _delay_loop_1(0); // 60us<br />        enc28j60PhyWrite(PHLCON,0x476);<br />        <br />        //init the ethernet/ip layer:<br />        init_ip_arp_udp_tcp(mymac,myip,MYWWWPORT);<br /><br /><br /><br />        sei();<br /><br />        while(1){<br />                // read packet, handle ping and wait for a tcp packet:<br />                dat_p=packetloop_icmp_tcp(buf,enc28j60PacketReceive(BUFFER_SIZE, buf));<br /><br />                /* dat_p will be unequal to zero if there is a valid <br />                 * http get */<br />                if(dat_p==0){<br />                        // no http request<br />                        continue;<br />                }<br />                // tcp port 80 begin<br />                if (strncmp(&quot;GET &quot;,(char *)&amp;(buf&#91;dat_p&#93;),4)!=0){<br />                        // head, post and other methods:<br />                        dat_p=http200ok();<br />                        dat_p=fill_tcp_data_p(buf,dat_p,PSTR(&quot;&lt;h1&gt;200 OK&lt;/h1&gt;&quot;));<br />                        goto SENDTCP;<br />                }<br />                // just one web page in the &quot;root directory&quot; of the web server<br />                if (strncmp(&quot;/ &quot;,(char *)&amp;(buf&#91;dat_p+4&#93;),2)==0){<br />dat_p=print_webpage(buf);<br />                        goto SENDTCP;<br />                }else{<br />                        dat_p=fill_tcp_data_p(buf,0,PSTR(&quot;HTTP/1.0 401 Unauthorized\r\nContent-Type: text/html\r\n\r\n&lt;h1&gt;401 Unauthorized&lt;/h1&gt;&quot;));<br />                        goto SENDTCP;<br />                }<br />SENDTCP:<br />                www_server_reply(buf,dat_p); // send web page data<br />                // tcp port 80 end<br />        }<br />        return (0);<br />}[/syntax]<br /><br />Inicjalizacja:<br />[syntax=c]void enc28j60Init(uint8_t* macaddr)<br />{<br />// initialize I/O<br />        // ss as output:<br />CS_CONTROL_DDR |= 1&lt;&lt;ENC28J60_CONTROL_CS;<br />CSPASSIVE; // ss=0<br />        //<br />ENC28J60_CONTROL_DDR  |= 1&lt;&lt;ENC28J60_CONTROL_SI | 1&lt;&lt;ENC28J60_CONTROL_SCK; // mosi, sck output<br />ENC28J60_CONTROL_DDR|= 1&lt;&lt;ENC28J60_CONTROL_SO; // MISO is input<br />        //<br />        ENC28J60_CONTROL_PORT|= 1&lt;&lt;ENC28J60_CONTROL_SI; // MOSI low<br />        ENC28J60_CONTROL_PORT|= 1&lt;&lt;ENC28J60_CONTROL_SCK; // SCK low<br />//<br />// initialize SPI interface<br />// master mode and Fosc/2 clock:<br />        SPCR = (1&lt;&lt;SPE)|(1&lt;&lt;MSTR);<br />        SPSR |= (1&lt;&lt;SPI2X);<br />// perform system reset<br />enc28j60WriteOp(ENC28J60_SOFT_RESET, 0, ENC28J60_SOFT_RESET);<br />        _delay_loop_2(0); // 20ms<br />// check CLKRDY bit to see if reset is complete<br />        // The CLKRDY does not work. See Rev. B4 Silicon Errata point. Just wait.<br />//while(!(enc28j60Read(ESTAT) &amp; ESTAT_CLKRDY));<br />// do bank 0 stuff<br />// initialize receive buffer<br />// 16-bit transfers, must write low byte first<br />// set receive buffer start address<br />gNextPacketPtr = RXSTART_INIT;<br />        // Rx start<br />enc28j60Write(ERXSTL, RXSTART_INIT&amp;0xFF);<br />enc28j60Write(ERXSTH, RXSTART_INIT&gt;&gt;8);<br />// set receive pointer address<br />enc28j60Write(ERXRDPTL, RXSTART_INIT&amp;0xFF);<br />enc28j60Write(ERXRDPTH, RXSTART_INIT&gt;&gt;8);<br />// RX end<br />enc28j60Write(ERXNDL, RXSTOP_INIT&amp;0xFF);<br />enc28j60Write(ERXNDH, RXSTOP_INIT&gt;&gt;8);<br />// TX start<br />enc28j60Write(ETXSTL, TXSTART_INIT&amp;0xFF);<br />enc28j60Write(ETXSTH, TXSTART_INIT&gt;&gt;8);<br />// TX end<br />enc28j60Write(ETXNDL, TXSTOP_INIT&amp;0xFF);<br />enc28j60Write(ETXNDH, TXSTOP_INIT&gt;&gt;8);<br />// do bank 1 stuff, packet filter:<br />        // For broadcast packets we allow only ARP packtets<br />        // All other packets should be unicast only for our mac (MAADR)<br />        //<br />        // The pattern to match on is therefore<br />        // Type     ETH.DST<br />        // ARP      BROADCAST<br />        // 06 08 -- ff ff ff ff ff ff -&gt; ip checksum for theses bytes=f7f9<br />        // in binary these poitions are:11 0000 0011 1111<br />        // This is hex 303F-&gt;EPMM0=0x3f,EPMM1=0x30<br />enc28j60Write(ERXFCON, ERXFCON_UCEN|ERXFCON_CRCEN|ERXFCON_PMEN);<br />enc28j60Write(EPMM0, 0x3f);<br />enc28j60Write(EPMM1, 0x30);<br />enc28j60Write(EPMCSL, 0xf9);<br />enc28j60Write(EPMCSH, 0xf7);<br />        //<br />        //<br />// do bank 2 stuff<br />// enable MAC receive<br />enc28j60Write(MACON1, MACON1_MARXEN|MACON1_TXPAUS|MACON1_RXPAUS);<br />// bring MAC out of reset<br />enc28j60Write(MACON2, 0x00);<br />// enable automatic padding to 60bytes and CRC operations<br />enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, MACON3, MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN);<br />// set inter-frame gap (non-back-to-back)<br />enc28j60Write(MAIPGL, 0x12);<br />enc28j60Write(MAIPGH, 0x0C);<br />// set inter-frame gap (back-to-back)<br />enc28j60Write(MABBIPG, 0x12);<br />// Set the maximum packet size which the controller will accept<br />        // Do not send packets longer than MAX_FRAMELEN:<br />enc28j60Write(MAMXFLL, MAX_FRAMELEN&amp;0xFF);<br />enc28j60Write(MAMXFLH, MAX_FRAMELEN&gt;&gt;8);<br />// do bank 3 stuff<br />        // write MAC address<br />        // NOTE: MAC address in ENC28J60 is byte-backward<br />        enc28j60Write(MAADR5, macaddr&#91;0&#93;);<br />        enc28j60Write(MAADR4, macaddr&#91;1&#93;);<br />        enc28j60Write(MAADR3, macaddr&#91;2&#93;);<br />        enc28j60Write(MAADR2, macaddr&#91;3&#93;);<br />        enc28j60Write(MAADR1, macaddr&#91;4&#93;);<br />        enc28j60Write(MAADR0, macaddr&#91;5&#93;);<br />// no loopback of transmitted frames<br />enc28j60PhyWrite(PHCON2, PHCON2_HDLDIS);<br />// switch to bank 0<br />enc28j60SetBank(ECON1);<br />// enable interrutps<br />enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, EIE, EIE_INTIE|EIE_PKTIE);<br />// enable packet reception<br />enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_RXEN);<br />}[/syntax]<br /><br />Jakieś pomysły???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 19 sty 2015, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-01-19T21:18:41+01:00</updated>
<published>2015-01-19T21:18:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114908#p114908</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114908#p114908"/>
<title type="html"><![CDATA[Re: ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114908#p114908"><![CDATA[
Inicjalizacja SPI jest robiona raz czy jest ponawiana przed każdą transmisją?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 19 sty 2015, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2015-01-19T21:00:48+01:00</updated>
<published>2015-01-19T21:00:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114905#p114905</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114905#p114905"/>
<title type="html"><![CDATA[Re: ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114905#p114905"><![CDATA[
Niestety nie Atmega128 jest na osobnej płytce (gotowy sterownik) , połączenia wszystkie są okej sprawdzane kilkukrotnie. Napewno coś jest z programem, bądź SPI. <br /><br />Na zestawie ATB był moduł testowany z procesorem At32 i wszystko działało bez problemu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 19 sty 2015, o 21:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[P3ndz3l3k]]></name></author>
<updated>2015-01-19T20:56:27+01:00</updated>
<published>2015-01-19T20:56:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114903#p114903</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114903#p114903"/>
<title type="html"><![CDATA[Re: ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114903#p114903"><![CDATA[
<div class="quotetitle">Morcinek92 napisał(a):</div><div class="quotecontent"><br />Witam, <br /><br />Uruchamiam moduł ENC28j60 na At128 i mam problem z uruchomieniem najprostszego programu. <br />Program jest z BB - 20_ETH_serwer_www. <strong>Na zestawie ATB działa okej bez problemów</strong> pin CS mogę podpiąć pod dowolony pin. <br />(testuję bez bufora 74lvc125). Natomiast kiedy chce uruchomić ten sam kod na procesorze At128 + bufor 74lvc125 to już nie działa , nie ładuje strony.<br /></div><br /><br />A czy na zestawie ATB z modułem ATmega128?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3709">P3ndz3l3k</a> — 19 sty 2015, o 20:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2015-01-19T20:23:03+01:00</updated>
<published>2015-01-19T20:23:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114898#p114898</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114898#p114898"/>
<title type="html"><![CDATA[Re: ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114898#p114898"><![CDATA[
Czy kto ma jakieś pomysły gdzie szukać błędu ???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 19 sty 2015, o 20:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2015-01-19T17:10:08+01:00</updated>
<published>2015-01-19T17:10:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114879#p114879</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114879#p114879"/>
<title type="html"><![CDATA[ENC28j60 - Atmega128]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10295&amp;p=114879#p114879"><![CDATA[
Witam, <br /><br />Uruchamiam moduł ENC28j60 na At128 i mam problem z uruchomieniem najprostszego programu. <br />Program jest z BB - 20_ETH_serwer_www. Na zestawie ATB działa okej bez problemów pin CS mogę podpiąć pod dowolony pin. <br />(testuję bez bufora 74lvc125). Natomiast kiedy chce uruchomić ten sam kod na procesorze At128 + bufor 74lvc125 to już nie działa , nie ładuje strony. <br /><br />Na schemacie zasilanie 74lvc125 jest VCC, ale zostało to zmienione na 3,3V<br />Schemat: <br /><a href="http://forum.atnel.pl/_obrazki/o/903/024e7802ceb6b38c8696dec4ca1fe326.PNG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/903/024e7802ceb6b38c8696dec4ca1fe326.PNG" alt="Obrazek" /></a><br /><br />plik ENC28j60.c  zmieniony  <br />[syntax=c]#define ENC28J60_CONTROL_PORT   PORTB<br />#define ENC28J60_CONTROL_DDR    DDRB<br /><br />#define CS_CONTROL_PORT   PORTD<br />#define CS_CONTROL_DDR    DDRD<br /><br />#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) <br />#define ENC28J60_CONTROL_CS PORTB2<br />#define ENC28J60_CONTROL_SO PORTB4<br />#define ENC28J60_CONTROL_SI PORTB3<br />#define ENC28J60_CONTROL_SCK PORTB5<br />#endif<br />#if defined(__AVR_ATmega644__)||defined(__AVR_ATmega644P__)||defined(__AVR_ATmega32__)||defined(__AVR_ATmega16__)<br />#define ENC28J60_CONTROL_CS PORTD2<br />#define ENC28J60_CONTROL_SO PORTB6<br />#define ENC28J60_CONTROL_SI PORTB5<br />#define ENC28J60_CONTROL_SCK PORTB7<br />#endif<br />#if defined(__AVR_ATmega128__)<br />#define ENC28J60_CONTROL_CS PORTD3<br />#define ENC28J60_CONTROL_SO PORTB3<br />#define ENC28J60_CONTROL_SI PORTB2<br />#define ENC28J60_CONTROL_SCK PORTB1<br />#endif<br />// set CS to 0 = active<br />#define CSACTIVE CS_CONTROL_PORT&amp;=~(1&lt;&lt;ENC28J60_CONTROL_CS)<br />// set CS to 1 = passive<br />#define CSPASSIVE CS_CONTROL_PORT|=(1&lt;&lt;ENC28J60_CONTROL_CS)[/syntax]<br /><br />oraz<br /><br />[syntax=c]void enc28j60Init(uint8_t* macaddr)<br />{<br />// initialize I/O<br />        // ss as output:<br />CS_CONTROL_DDR |= 1&lt;&lt;ENC28J60_CONTROL_CS;<br />CSPASSIVE; // ss=0[/syntax]<br /><br /><br />W pliku basic_web_server_example.c  ustawiam pin SS jako wyjście w momencie kiedy steruje pinem CS i innego portu. <br /><br />[syntax=c]DDRB |= (1&lt;&lt;PB0);[/syntax]<br /><br /><br />Probowałem już ominać bufor i na chwilkę podłączyć moduł bez niego (myślałem że to jego wina), ale nic z tego. <br />Wygląda mi na to jakby SPI było zablokowane..<br /><br />Kwarc: 16Mhz <br />Fuse bity : M103C wyłączony , Jtag również<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 19 sty 2015, o 17:10</p><hr />
]]></content>
</entry>
</feed>