Witam.
Myślę że ten dział najbardziej to tego pasuje ale jeśli moderator ma inne zdanie to proszę o przeniesienie ale niekasowanie:)
Postaram się opisać wszystko najdokładniej jak mogę.
Otóż zakupiłem taki układzik jest to przetwornik analogowo-cyfrowy (SAR) z interfejsem SPI, tutaj test jego datasheet:Link
Na początku powiem, że dziesiątki razy szukałem w googlach ale nic nie znalazłem co mogło by mi pomóc może poza tym :link
W tym układziku nóżka od zasilania jest referencją jednocześnie.
Podłączam go deo ATmegi w taki sposób:
Od razu mowię że ten schemat to tak na szybko żeby tylko zobrazować podłączenie między dwoma układami
Kod do uc taki:
Zrobiłem sobie taki dzielnik rezystorowy , 4rezystory po 560 Ohm
dla zera pokazuje 0
dla 1,24 V:
ale już dla 2.48 V:
podobnie dla 3,73 V:
Siedziałem wczoraj większość nocy nad tym i nie mogę dojść końca , z tego wszystkiego mogę stwierdzić jedynie tyle że przetwornik jako tako działa bo im wyższe napięcie dam na wejście tym większa liczba jest wyświetlana,ale wyniki są bardzo niestabilne poza tym jak mi pokazuje wynik na wyświetlaczu to nie zauważyłem skakania najmniej znaczącej cyfry ALE za to zmieniają się setki jak by było coś sknocone przy tym całym przesuwaniu i sumowaniu bajtów może coś pominięte może coś za dużo nie wiem dużo rzeczy mi przychodzi do głowy i dużo już próbowałem po prostu to wszystko razem nie działa jak powinno , dlatego proszę was drodzy forumowicze o sprawdzenie kodu i schematu może o czymś zapomniałem co dla dla was może być oczywiste . to jest moja pierwsza styczność z SPI.
Jeśli coś jest nie jasne proszę pisać postaram się rozjaśnić .
Byłbym niezmiernie wdzięczny za jakąkolwiek pomoc.
Pozdrawiam .
Myślę że ten dział najbardziej to tego pasuje ale jeśli moderator ma inne zdanie to proszę o przeniesienie ale niekasowanie:)
Postaram się opisać wszystko najdokładniej jak mogę.
Otóż zakupiłem taki układzik jest to przetwornik analogowo-cyfrowy (SAR) z interfejsem SPI, tutaj test jego datasheet:Link
Na początku powiem, że dziesiątki razy szukałem w googlach ale nic nie znalazłem co mogło by mi pomóc może poza tym :link
W tym układziku nóżka od zasilania jest referencją jednocześnie.
Podłączam go deo ATmegi w taki sposób:
Od razu mowię że ten schemat to tak na szybko żeby tylko zobrazować podłączenie między dwoma układami
Kod do uc taki:
#include<avr/io.h>
#include<util/delay.h>
#include "HD44780.c"
int odb0=0;
int odb1=0;
int odb2=0;
int suma=0;
char i=0;
void Inicjacja_spi()
{
DDRB |= ( 1 << PB5 ) | ( 1 << PB3 ) | ( 1 << PB2 ); //MOSI, SCK, SS' jako wyjścia
SPCR = ( 1 << SPE ) | ( 1 << MSTR ) | ( 1 << SPR1 ) | ( 1 << SPR0 ); //Włączamy SPI,
} //układ Master, najmniejsza częstotliwość SCK fosc / 128
void Wyslij_spi(char bajt)
{
SPDR = bajt; //Wysyłamy zawartość zmiennej bajt
while( ! bit_is_set( SPSR, SPIF ) );
//Oczekujemy na zakończenie transmisji ( do ustawienia SPIF ) przez sprzęt
}
int main()
{
char buffer_n[5];
DDRB &=0xef;// MISO jako wejscie
int dana0=0x9f;// bajt z konfiguracją
int dana1=0xff;
DDRB |=0x01;
PORTB &=0xfe;
LCD_Initalize();
char bajt = 0;
Inicjacja_spi();
while(1) //Pętla nieskończona
{
PORTB &=0xfb;// ustaw stan niski na linii ss czyli zezwól na przesył
Wyslij_spi(dana0);// wyslij pierwszy bajt z konfiguracja
odb0=SPDR;// to co przyszło przypisz do zmiennej
odb0=(odb0<<9);// przesun o 9 w lweo bo to sa 3 najstarsze bity wyniku 12 bitowego
Wyslij_spi(dana1);// wyslij cokolwiek
odb1=SPDR;//to co przyszło przypisz do zmiennej
odb1=(odb1<<1);// przesun w lewo o 1 bo to są bity 8..1( bez LSB)
Wyslij_spi(dana1);//to co przyszło przypisz do zmiennej
odb2=SPDR;// tutaj będzie juz tylko LSB konwersji
PORTB |=0x04;// teraz ustaw stan wysoki na linii ss czyli zablokuj przesył
suma=(odb2+odb1)+odb0;// zsumuj wszystko
utoa(suma, buffer_n, 10); // zamień na string
LCD_WriteText(buffer_n);// wyswietl
_delay_ms(5);
LCD_Clear();
}
return 0;
}
Zrobiłem sobie taki dzielnik rezystorowy , 4rezystory po 560 Ohm
dla zera pokazuje 0
dla 1,24 V:
ale już dla 2.48 V:
podobnie dla 3,73 V:
Siedziałem wczoraj większość nocy nad tym i nie mogę dojść końca , z tego wszystkiego mogę stwierdzić jedynie tyle że przetwornik jako tako działa bo im wyższe napięcie dam na wejście tym większa liczba jest wyświetlana,ale wyniki są bardzo niestabilne poza tym jak mi pokazuje wynik na wyświetlaczu to nie zauważyłem skakania najmniej znaczącej cyfry ALE za to zmieniają się setki jak by było coś sknocone przy tym całym przesuwaniu i sumowaniu bajtów może coś pominięte może coś za dużo nie wiem dużo rzeczy mi przychodzi do głowy i dużo już próbowałem po prostu to wszystko razem nie działa jak powinno , dlatego proszę was drodzy forumowicze o sprawdzenie kodu i schematu może o czymś zapomniałem co dla dla was może być oczywiste . to jest moja pierwsza styczność z SPI.
Jeśli coś jest nie jasne proszę pisać postaram się rozjaśnić .
Byłbym niezmiernie wdzięczny za jakąkolwiek pomoc.
Pozdrawiam .
