Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 10 09, 03:07. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
Taigi, pasigaminau tda7313 plokste, bet per I2C nenori nei su arduino nei su atmega16 draugaut.
Ant arduino gaunu toki:
I2C status: 2, received NACK on transmit of address
Cia per serialmonitor, nes neturiu lcd ekrano. Net nezinau kas cia per erroras, ir guglei nelabai kas rasoma apie ji.
Bandziau ant atmega16, bet kaip patikrinti ar procesoriukas gavo komanda?
Tarkim jei gavo, isijungia koks led'as.
Nustatau, kad input butu stereo 2 kaip datasheete parodyta : 0x49
Prie isejimu front ir rear prijungiau garsiakalbi, pridejus ausi girdisi toks 'takst'. Prisjungiau stiprintuva, tai burzgimas... Bet ne toks kaip pvz nebuna input gnd laidas neprijungtas, o kitoks, gal kaip nuo maitinimo.
Su testeriu matuojant mV ant isejimu sokineja, tai 100mV, tai 1000mV.
Galvojau gal kur trumpina ploksteje, atsilitavau tda7313 ir pajungiau maitinima ir I2C, taspats error. Siandien nusipirkau kita tda7313, pirmiausia nelitavau i plokste, taipat pajungiau maitinima ir I2C, vistiek... Sulitavau, velgi taspats burzgimas.
Pull-up rezistoriai - 4.7k
Jeigu atjungiu nesvarbu kuri(ar abu) SDA/SCL vistiek tapati errora raso, atjungiu maitinimo gnd, taspats... Atjungiu maitinimo +V viskas sustoja ir nebejuda arduino, perkrovus irgi nieko neraso.
Maitininau 5V, poto is reguliuojamo mait. saltinio 7-8V.
Pasidomek kaip veikia I2C ir nepamirsk, kad ten turi but kokiu 4k7 pullupai ant abieju laidu.
Jei siunti pirma reiksme ir gauni NACK, tai reiskia, kad tokio adreso I2C shynoje nera.
Pakeiciau rezistorius i 5.1k
Nu vistiek, gi jo adresas yra 10001000, tai 0x88
Kodas:
#include <Wire.h>
void setup7313()
{
byte result;
Serial.print("setting up audio processor\n");
Wire.beginTransmission(0x88);
// Wire.send(0x00);
result = Wire.endTransmission();
printstatus(result);
}
void printstatus(byte result)
{
Serial.print("I2C status: ");
Serial.print(result, DEC);
switch (result)
{
case 0:
Serial.print(", success!\n");
break;
case 1:
Serial.print(", data too long to fit in transmit buffer\n");
break;
case 2:
Serial.print(", received NACK on transmit of address\n");
break;
case 3:
Serial.print(", received NACK on transmit of data\n");
break;
case 4:
Serial.print(", other error\n");
break;
}
}
Seip as nezinau to chipo - niekada nenaudojau, bet gali but 2 problemos:
1) Paprastai tarp skaitymo ir rasymo adresu vienas bitas skiriasi.
2) I2C standartas yra dvieju greiciu: 400kbps is 100kbps. Jei varai greiciau nei jis supranta, tai jokio atsakymo ir negausi.
Paprastai normaliai klausiant zmones suteikia daug info. Musu lietuviai daugumoj pasako NEVEIKIA, o tada burk kas ten jam gali neveikt. Bent programos gabala idejai, dabar idek chipo datasheeta ir papasakok ka matai oscilografu. Jei arduino yra kazkokie pullup'ai integruoti, tai tu su 5k1 uzlygiagretinai esamus ir to chipo smarves gal jau nepakanka kilnot kojas. Vienzo oscilografas tavo draugas arba darykis koki log. analizatoriu.
NACK adrese ir negali tau atsiust, nes jei netiko adresas, tai mikroschema isvis neturi atsakineti. NACK adrese sugeneruoti gali nebent i2c tvarkykle po timeout, nes naudoji ne defaultines kojas, o savo naudojamu nenustatei.
Is aparatines puses dar galimas atvejis, kai neinicializavai mikroschemos, bet bandai su ja susisneketi arba klaidos sujungimuose.
Ne nu tai aisku itin logiska leist staciakampi 100kHz arba 400kHz signala per garso korta ir dar tiketis ten kazka rast...
AlgisL rašo:
NACK adrese ir negali tau atsiust, nes jei netiko adresas, tai mikroschema isvis neturi atsakineti. NACK adrese sugeneruoti gali nebent i2c tvarkykle po timeout, nes naudoji ne defaultines kojas, o savo naudojamu nenustatei.
Is aparatines puses dar galimas atvejis, kai neinicializavai mikroschemos, bet bandai su ja susisneketi arba klaidos sujungimuose.
NACK seip jau nera nei siuntinejamas, nei kazkoks generuojamas. Tiesiog jei chipas pripazista adresa, tai jis signala islaiko tam tikram lygyje, jei ne tai ne ir nereikia cia jokiu timeoutu.