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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2024-11-16T17:40:23+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=24732&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2024-11-16T17:40:23+01:00</updated>
<published>2024-11-16T17:40:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24732&amp;p=238599#p238599</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24732&amp;p=238599#p238599"/>
<title type="html"><![CDATA[Re: Układ MAX6951CEE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24732&amp;p=238599#p238599"><![CDATA[
To naprawdę proste zadanie nawet dla przestarzałych AVR <br />Prościej już chyba się nie da <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br /><br />MOSI (PB3) -&gt; DIN (MAX6951)<br />SCK (PB5) -&gt; CLK (MAX6951)<br />SS (PB2) -&gt; CS (MAX6951)<br /><br />Kwarc 16MHz <br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define SS_PIN PB2<br />#define MOSI_PIN PB3<br />#define SCK_PIN PB5<br /><br />// Funkcja inicjalizująca SPI<br />void SPI_init() {<br />    DDRB |= (1 &lt;&lt; MOSI_PIN) | (1 &lt;&lt; SCK_PIN) | (1 &lt;&lt; SS_PIN); // Ustawienie MOSI, SCK i SS jako wyjścia<br />    SPCR = (1 &lt;&lt; SPE) | (1 &lt;&lt; MSTR) | (1 &lt;&lt; SPR0); // Włącz SPI, ustaw mikrokontroler jako master, preskaler 16<br />}<br /><br />// Funkcja wysyłająca dane przez SPI<br />void SPI_send(uint8_t data) {<br />    SPDR = data; // Wpisz dane do rejestru<br />    while (!(SPSR &amp; (1 &lt;&lt; SPIF))); // Czekaj na zakończenie transmisji<br />}<br /><br />// Funkcja wysyłająca komendę do MAX6951<br />void MAX6951_write(uint8_t address, uint8_t data) {<br />    PORTB &amp;= ~(1 &lt;&lt; SS_PIN); // CS na LOW<br />    SPI_send(address);<br />    SPI_send(data);<br />    PORTB |= (1 &lt;&lt; SS_PIN); // CS na HIGH<br />}<br /><br />// Inicjalizacja MAX6951<br />void MAX6951_init() {<br />    MAX6951_write(0x0C, 0x01); // Włącz tryb normalny (shutdown register)<br />    MAX6951_write(0x09, 0xFF); // Ustaw dekodowanie BCD dla wszystkich cyfr<br />    MAX6951_write(0x0A, 0x0F); // Ustaw maksymalną jasność (intensity register)<br />    MAX6951_write(0x0B, 0x03); // Włącz wszystkie cztery cyfry (scan limit register)<br />}<br /><br />// Funkcja wyświetlająca cyfrę na wyświetlaczach<br />void display_digit(uint8_t digit) {<br />    for (uint8_t i = 1; i &lt;= 4; i++) {<br />        MAX6951_write(i, digit);<br />    }<br />}<br /><br />int main() {<br />    SPI_init(); // Inicjalizacja SPI<br />    MAX6951_init(); // Inicjalizacja MAX6951<br /><br />    uint8_t digit = 0;<br /><br />    while (1) {<br />        display_digit(digit); // Wyświetl cyfrę na wszystkich wyświetlaczach<br />        _delay_ms(1000); // Opóźnienie 1 sekunda<br />        digit = (digit + 1) % 10; // Przejdź do następnej cyfry<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 16 lis 2024, o 17:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wedsrw]]></name></author>
<updated>2024-11-14T15:25:52+01:00</updated>
<published>2024-11-14T15:25:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24732&amp;p=238596#p238596</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24732&amp;p=238596#p238596"/>
<title type="html"><![CDATA[Układ MAX6951CEE]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24732&amp;p=238596#p238596"><![CDATA[
Witam,<br />jestem początkujący w programowaniu i mam problem z napisaniem prostego programu obsługującego sterownik MAX6951CEE.<br /><br />Z noty wyczytałem, że komunikacja odbywa się po SPI i długość ramki danych to 16 bitów, z czego starsze 8 to adres rejestru, a młodsze 8 to dane do przesłania.<br /><br />Mam do wysterowania cztery wyświetlacze 7 segmentowe z kropkami obok podłączone zgodnie ze standardem podanym w nocie. <br />Muszę napisać funkcję inicjalizującą oraz pozwalającą przesyłać dane.<br />Na tą chwilę próbowałem zrobić to w Arduino IDE, później jak zacznie wszystko działać będę pisał w C w Eclipsie. <br /><br />Potrzebuję wytłumaczenia jak czytać taką notę i jeśli to możliwe to napisanie tych wymaganych funkcji, abym mógł je również przeanalizować.<br />Będę wdzięczny za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br />MAX6950_MAX6951-3470805.pdf<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=22180">wedsrw</a> — 14 lis 2024, o 15:25</p><hr />
]]></content>
</entry>
</feed>