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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-07-19T13:21:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=3314&amp;mode</id>
<entry>
<author><name><![CDATA[Torcek]]></name></author>
<updated>2013-07-19T13:21:16+01:00</updated>
<published>2013-07-19T13:21:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3314&amp;p=42403#p42403</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3314&amp;p=42403#p42403"/>
<title type="html"><![CDATA[Re: Obsługa I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3314&amp;p=42403#p42403"><![CDATA[
sprawdzałeś na oscyloskopie czy na pinie SCL generowany jest sygnał zegarowy? Obecnie też mam problem z I2C i jest nim właśnie brak sygnału zegarowego.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=578">Torcek</a> — 19 lip 2013, o 13:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2013-06-12T19:54:58+01:00</updated>
<published>2013-06-12T19:54:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3314&amp;p=39089#p39089</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3314&amp;p=39089#p39089"/>
<title type="html"><![CDATA[Obsługa I2C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3314&amp;p=39089#p39089"><![CDATA[
Witam<br /><br />Proszę o pomoc bo walczę z ta obsługą już dłuższy czas, kod mam praktycznie taki sam jak w przykładach a działać nie chce, a więc gdzie robię błąd? <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><br />A więc... Mam ja sobie 12-bitowy DAC, program mi zawiesza w pętli [syntax=c]while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));[/syntax] <br />Kod konfiguracji:[syntax=c]RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);<br />   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);<br />   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;//numery portow do roboty<br />   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />   GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;<br />   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;<br />   GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br /><br />   GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_I2C1); //remapowanie SCL na I2C1<br />   GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_I2C1); //remapowanie SDA na I2C1<br /><br />   I2C_InitTypeDef I2C_InitStruct;<br />   I2C_InitStruct.I2C_ClockSpeed = 100000; // 100kHz<br />   I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;// I2C mode<br />   I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2;// 50% duty cycle --&gt; standard<br />   I2C_InitStruct.I2C_OwnAddress1 = 0;// own address, not relevant in master mode<br />   I2C_InitStruct.I2C_Ack = I2C_Ack_Disable;// disable acknowledge when reading (can be changed later on)<br />   I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; // set address length to 7 bit addresses<br />   I2C_Init(I2C1, &amp;I2C_InitStruct);// init I2C1<br /><br />   I2C_Cmd(I2C1,ENABLE);[/syntax]<br /><br />Kod funkcji wysyłającej dane do DAC: [syntax=c]void wpisz_DAC (uint16_t zmienna_DAC)<br />{<br />while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));//poczekaj az I2C1 nie bedzie zajete<br />I2C_GenerateSTART(I2C1, ENABLE); //rozpocznij transmisje<br />while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));<br />I2C_Send7bitAddress(I2C1, 0b1100000, I2C_Direction_Transmitter); //wyslij adres układu z bitem nadawania DO układu<br />while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); //TUTAJ ZAWIESZA PROGRAM<br />I2C_SendData(I2C1,(uint8_t)(zmienna_DAC&gt;&gt;8)); //wymagana operacja rolowania i rzutowania dla tego DAC<br />I2C_SendData(I2C1,(uint8_t)(zmienna_DAC));//j.w<br />I2C_GenerateSTOP(I2C1,ENABLE);//zakoncz transmisje<br />}[/syntax]<br /><br />Generalnie gdy usunąłem linijkę która zawiesza program i wsadziłem na to miejsce opóźnienie (bo to i tak oczekiwanie aż adres się wyśle), to programu nie zawiesza - ale DAC również nie działa więc nie ma z nim komunikacji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=600">kiclaw</a> — 12 cze 2013, o 19:54</p><hr />
]]></content>
</entry>
</feed>