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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-07T12:27:39+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=8377&amp;mode</id>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2014-09-07T12:27:39+01:00</updated>
<published>2014-09-07T12:27:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8377&amp;p=94561#p94561</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8377&amp;p=94561#p94561"/>
<title type="html"><![CDATA[Re: Konwersja programu [m32 -&gt; m32u4]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8377&amp;p=94561#p94561"><![CDATA[
To jest cały kod w pełni się kompilujący dla m32.<br /><br />Ciało USART_init jest razem z deklaracją na górze (wszystko w jednej linii - lubię tak pisać)<br /><br />W domu miałem atmege32, napisałem program i na m32 działa ale muszę go mieć na m32u4.<br />Właśnie zainteresowałem się atmel studio żeby chociaż zasymulować uruchomienie programu na m32u4, ale naprawdę byłbym wdzięczy jakbyś trochę pomógł przy przeportowaniu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 7 wrz 2014, o 12:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2014-09-02T01:12:05+01:00</updated>
<published>2014-09-02T01:12:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8377&amp;p=93936#p93936</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8377&amp;p=93936#p93936"/>
<title type="html"><![CDATA[Konwersja programu [m32 -&gt; m32u4]]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8377&amp;p=93936#p93936"><![CDATA[
Witam<br />Potrzebuję przerobienia programu napisanego pod atmege32 (wewnętrzny oscylator 8Mhz) tak aby działał pod atmegą32u4.<br />To co w programie na m32 jest portem D na m32u4 będzie portem F.<br />Domyślam się że w programie muszę uwzględnić następujące zmiany:<br />0. Podmienić PORTB na PORTF (oraz PIND na PINF)<br />1. Zmienić zawartość funkcji USART_Init<br />2. Zmienić inicjalizacje timer'a na początku funkcji main<br />3. Być może zmienić nazwy wektorów przerwań w makrze ISR<br />4. Być może jakaś zmiana nazwy rejestru w USART_Transmit?<br /><br />Trzeba podmienić tylko obsługę peryferiów.<br />Po stronie PC jest wysłane po kolei 4 bajty:<br />bajt nr 1 - cztery najmłodsze bity informują o wartościach bitów B4,B5,B6,B7 (dla bajtu nr 1 unikalne jest też to że jego najstarszy bit zawsze jest równy 1)[BAJT NR 1 KONIECZNIE MUSI BYĆ WIĘKSZY OD 127]<br />bajt nr 2 (wartości od 0 do 100) - jasność dla diody F5<br />bajt nr 3 (wartości od 0 do 100) - jasność dla diody F6<br />bajt nr 4 (wartości od 0 do 100) - jasność dla diody F7<br /><br />Wejście PF4 pozwala na wysłanie znaku 'A' z uC do PC (obsługuje tu też drgania styków)<br /><br />Parametry transmisji RS232 są standardowe: 9600, ramka 8 bitów,bra bitu parzystości, 1 bit stopu<br />KOD:<br />[syntax=c]#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/io.h&gt;<br /><br />/**************instrukcja*****************************/<br />//PF4/PD4 jest wejciem (PPM)<br />//PB4, PB5, PB6, PB7 kontrolki dwu-stanowe<br />//PF5/PD5,PF6/PD6,PF7/PD7 kontrolki PWM<br />/******************************************************/<br />/*************funkcje obsługi RS232********************/<br />void USART_Init(uint16_t baud){UBRRH = (uint8_t)(baud&gt;&gt;8);UBRRL=(uint8_t)baud;UCSRB=(1&lt;&lt;RXEN)|(1&lt;&lt;TXEN)|(1&lt;&lt;RXCIE);UCSRC=(1&lt;&lt;URSEL)|(3&lt;&lt;UCSZ0);}<br />void USART_Transmit(unsigned char data){while(!(UCSRA&amp;(1&lt;&lt;UDRE)));UDR=data;}<br />//unsigned char USART_Receive(void){while(!(UCSRA&amp;(1&lt;&lt;RXC)));return UDR;}<br />/*******************************************************/<br /><br />const uint8_t dane&#91;101&#93; PROGMEM = {<br />  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  3,  3,<br />  4,  5,  5,  6,  7,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22,<br /> 23, 25, 26, 28, 30, 31, 33, 35, 37, 39, 41, 43, 46, 48, 50, 53, 55, 58, 61,<br /> 63, 66, 69, 72, 75, 78, 81, 84, 88, 91, 94, 98,101,105,109,113,117,121,125,<br />129,133,137,142,146,151,156,160,165,170,175,180,185,191,196,201,207,213,218,<br />224,230,236,242,248,255<br />};<br /><br />uint8_t pwm&#91;3&#93;={70,75,80},i,licznik;<br />int main(void)<br />{TCNT0 = 56;<br />TCCR0 |= (1 &lt;&lt; CS00);//preskaler = 1<br />TIMSK |= (1&lt;&lt;TOIE0); //zezwoelnie na przerwanie<br /><br />DDRD |= (1&lt;&lt;PD5)|(1&lt;&lt;PD6)|(1&lt;&lt;PD7); PORTD |= (1&lt;&lt;PD4);<br />DDRB |= (1&lt;&lt;PB4)|(1&lt;&lt;PB5)|(1&lt;&lt;PB6)|(1&lt;&lt;PB7); PORTB |= (1&lt;&lt;PB4)|(1&lt;&lt;PB5)|(1&lt;&lt;PB6)|(1&lt;&lt;PB7);<br /><br />sei();<br /><br />USART_Init(51);<br />while(1)<br />{<br /><br />}<br /><br /><br />}<br /><br /><br /><br />ISR(TIMER0_OVF_vect)<br />{static uint8_t cnt,keystate;<br />TCNT0=56;<br /><br />if(cnt&gt;=pgm_read_byte(dane+pwm&#91;0&#93;)) PORTD |= (1&lt;&lt;PD5);else PORTD &amp;= ~(1&lt;&lt;PD5);<br />if(cnt&gt;=pgm_read_byte(dane+pwm&#91;1&#93;)) PORTD |= (1&lt;&lt;PD6);else PORTD &amp;= ~(1&lt;&lt;PD6);<br />if(cnt&gt;=pgm_read_byte(dane+pwm&#91;2&#93;)) PORTD |= (1&lt;&lt;PD7);else PORTD &amp;= ~(1&lt;&lt;PD7);<br /><br />if(!(cnt++))if((keystate = (keystate&lt;&lt;1 | (PIND&gt;&gt;4&amp;1))&amp;0xf)==8){USART_Transmit('A');}<br />}<br /><br /><br />ISR(USART_RXC_vect){char temp=UDR;<br />if(temp&amp;0x80){licznik=0;PORTB=(PORTB&amp;0x0f)|(temp&lt;&lt;4);}//jeżeli starsza czworka bitow bajtu UDR bedzie tworzyc sekwencje 1001 tzn. wyzerowanie licznika (młodza czworka bajtu UDR zawiera dane na temat kontrolek)<br />else if(licznik&lt;3){pwm&#91;licznik&#93;=temp;licznik++;}<br />}[/syntax]<br />Męczę się z tym do tej pory i w dodatku nawet jeśli program mi się skompiluje nie mam m32u4 żeby sprawdzić czy to działa, może są jakieś wirtualne symulatory?<br />Ideałem było by dla mnie gdyby ktoś podmienił inicjalizacje timera i usart'a itd(punkty od 0 do 4)  tak aby ten program nadawał się na m32u4.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 2 wrz 2014, o 01:12</p><hr />
]]></content>
</entry>
</feed>