Vorrei impartire degli ordini ad un dispositivo di riproduzione sonora (SOMO-14D) attraverso un ATMEGA328.
Visto che non si tratta di un colloquio, eviterei di sprecare una SPI e quindi mi piacerebbe imparare a realizzare una connessione di tipo bit banging anche per usi futuri.
Nel datasheet del dispositivo si trovano queste informazioni :
In base a queste informazioni ho scritto e provato questa funzione :
- Codice: Seleziona tutto
void invia_comando(uint16_t comando)
{
PORTD |= (1 << CLK ); // tRESET
_delay_ms(300);
PORTD &= ~( 1 << CLK ); // tSTART
_delay_ms(2);
for (uint8_t i=1; i <= 16; i++)
{
if (comando & 0x8000)
{PORTB |= (1 << DTA );}
else
PORTB &= ~( 1<<DTA );
PORTD &= ~( 1 << CLK ); // tCL
_delay_us(100);
PORTD |= (1 << CLK ); // tCH
_delay_us(100);
comando <<= 1;
}
PORTD |= (1 << CLK ); //
_delay_ms(2); // tSTOP
}
Per fortuna non funziona !.
Personalmente ho sempre diffidato dei programmi, non banali, che funzionano al primo colpo (ovviamente non banale per me e non, per esempio, per
Le connessioni fisiche dei dispositivi dovrebbero essere corrette e quindi parto dal codice.
La mia insicurezza nasce dalla trasposizione della grafica in codice.
In particolare, mentre mi è chiaro il concetto di "fronte di salita/discesa" (e cioè il tempo necessario per passare, stabilmente, da uno stato logico all'altro), non mi è chiaro come sia possibile intercettarlo attraverso il codice.
Inoltre, la somma di tDS(Time data setup) e tDH(time data hold) è di 51 us, mentre nella rappresentazione grafica sembra essere uguale al periodo totale di clock (200 us).
Insomma, come avrete capito, ho bisogno di tutto: consigli, correzioni, link ecc. ecc.
Un saluto a Tutti e grazie per la disponibilità.
Ps: in rete ho trovato del codice dedicato, ma sono sicuro di poter sbagliare da solo !.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

