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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-11-30T21:29:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=21638&amp;mode</id>
<entry>
<author><name><![CDATA[miccaldo]]></name></author>
<updated>2018-11-30T21:29:48+01:00</updated>
<published>2018-11-30T21:29:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214197#p214197</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214197#p214197"/>
<title type="html"><![CDATA[Re: [C][Attiny13A] ADC - działa tylko jeden kanał]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214197#p214197"><![CDATA[
Dokładnie <strong>andrews</strong> <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> brawo, o to chodziło! Dzięki  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=974">miccaldo</a> — 30 lis 2018, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-11-30T20:38:50+01:00</updated>
<published>2018-11-30T20:38:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214195#p214195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214195#p214195"/>
<title type="html"><![CDATA[Re: [C][Attiny13A] ADC - działa tylko jeden kanał]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214195#p214195"><![CDATA[
Spójrz jeszcze raz na tabelkę z bitami MUX1 i MUX0 w rejestrze ADMUX.<br />Dla PB4 wartość bitów powinna być MUX1=1 i MUX0=0. Ty podajesz jako argument funkcji <strong><em>kanal</em></strong> wartość 4 (PB4), czyli binarnie 0b100, więc de facto instrukcja<br />[syntax=c]ADMUX = (ADMUX &amp; 0b11111000) | kanal;[/syntax]ustawia bit MUX1=0 i MUX0=0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 30 lis 2018, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[miccaldo]]></name></author>
<updated>2018-11-30T19:45:52+01:00</updated>
<published>2018-11-30T19:45:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214191#p214191</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214191#p214191"/>
<title type="html"><![CDATA[[C][Attiny13A] ADC - działa tylko jeden kanał]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21638&amp;p=214191#p214191"><![CDATA[
Witam, <br /><br />Mam problem z ADC na Attiny13A i już nie mam pomysłów co może być nie tak.<br /><br />Prawidłowo działa tylko jeden kanał - na PB3.<br /><br />Na PB4 ADC wskazuje cały czas 1023, chociaż mierzę miernikiem napięcie na tym pinie i zależnie od położenia potencjometru napięcie zmienia się w granicach 0 - ~1.1V. Więc jest ok, nie ma żadnego zwarcia. Także płytka jest dobrze zrobiona, napięcia się prawidłowo regulują potencjometrem na obu kanałach, dzielniki napięcia są dobrze obliczone, zresztą korzystałem z MkAVRCalculator.<br /><br />Oto schemat: <br /><br /><a href="https://obrazkiforum.atnel.pl/974/24f93095f66842b1228df7c970a9613b.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/974/24f93095f66842b1228df7c970a9613b.png" alt="Obrazek" /></a><br /><br /><br />Niestety nie mam możliwości zobaczenia wartości ADC na terminalu lub lcd, gdyż to mały kontrolerek. Jednak mając diody LED można sobie poradzić.<br /><br />Korzystam ze sprawdzonego programu Pana Mirka do ADC:<br /><br />main.c:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;main.h&quot;<br />#include &quot;ADC/adc.h&quot;<br /><br />int main(void){<br /><br />init();<br />ADC_Init();<br /><br />while(1){<br /><br />if(pomiar(ADC2_PIN) == 1023){<br />OUT_PORT ^= (OUT1_PIN | OUT2_PIN);<br />}<br />_delay_ms(1000);<br />}<br />}<br /><br />void init(){<br /><br />OUT_DDR |= (OUT1_PIN | OUT2_PIN);<br />OUT_PORT &amp;= ~(OUT1_PIN | OUT2_PIN);<br />}[/syntax]<br /><br />main.h:<br /><br />[syntax=c]#ifndef MAIN_H_<br />#define MAIN_H_<br /><br /><br />#define ADC_PORTPORTB<br />#define ADC_DDRDDRB<br />#define ADC1_PINPB3<br />#define ADC2_PINPB4<br /><br />#define OUT_PORTPORTB<br />#define OUT_DDRDDRB<br />#define OUT1_PIN(1&lt;&lt;PB0)<br />#define OUT2_PIN(1&lt;&lt;PB1)<br /><br /><br />void init();<br />#endif /* MAIN_H_ */[/syntax]<br /><br />adc.c:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &quot;adc.h&quot;<br /><br /><br />void ADC_Init(){<br /><br />ADCSRA |= (1&lt;&lt;ADEN)|(1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);  // preskaler 128, wlaczenie przetwornika<br />ADMUX |= REF11; // napiecie ref 1.1V<br />}<br /><br />uint16_t pomiar(uint8_t kanal){<br /><br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br />ADCSRA |= (1&lt;&lt;ADSC);<br /><br />while(ADCSRA &amp; (1&lt;&lt;ADSC));<br /><br />return ADCW;<br />}[/syntax]<br /><br />adc.h:<br /><br />[syntax=c]#ifndef ADC_H_<br />#define ADC_H_<br /><br /><br /><br />#endif /* ADC_H_ */<br /><br />#include &lt;avr/io.h&gt;<br /><br />#define REF11 (1&lt;&lt;REFS0)<br /><br />void ADC_Init( void );<br />uint16_t pomiar(uint8_t);[/syntax]<br /><br /><br />Na <strong>PB3</strong>, jeśli przekręcę potencjometrem na wartość &gt;= 1.08V, diody zaczynają migać, jeśli zmniejszę napięcie to oczywiście przestają. Czyli jest OK.<br />Z kolei, jak już wspominałem na <strong>PB4</strong> zawsze diody migają, czyli zawsze wynosi 1023. Nawet po zwarciu PB4 do masy nadal migają(Na PB3 po zwarciu do masy przestają migać). Ustawiałem wszystkie konfiguracje pinu <strong>PB4</strong>, na wejście, wejście z pull up, wyjście ze stanem niskim, zawsze diody migają.<br /><br />Płytkę mam niestety zrobioną pod PB4 oraz PB3. Próbowałem jednak również na PB2 - jeśli nie podam żadnego napięcia to diody są zgaszone - więc OK. Jednak jeśli zewrę PB2 do jakiegokolwiek napięcia, to też nic się nie dzieje... diody zgaszone czyli sytuacja odwrotna do PB3. <br /><br />Kanał oczywiście dobieram jako argument do funkcji <strong>pomiar()</strong>.<br /><br />Attiny13 taktowane jest wewnętrznym oscylatorem 4.8 MHz.<br /><br /><br />Nie pierwszy raz mierzę napięcie na ADC, ale pierwszy raz na Attiny13. Nigdy nie było takich problemów, kontroler jest nowo kupiony. Czy robię coś nie tak? <br /><br />Proszę o pomoc, <br /><br />pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=974">miccaldo</a> — 30 lis 2018, o 19:45</p><hr />
]]></content>
</entry>
</feed>