Gast
#472006
Ich habe versucht an einen Mega8 einen Digital - Analog Wandler von
Philips anzuschließen, aber leider scheint irgendwie in meinem Code der
Wurm drinn zu sein es bleibt immer an der Stelle stehen wo eigendlich
die Daten zum ersten mal gesendet werden sollten. Um erstmal zu
überprüfen wo es stehen bleibt stehen überall im Code USART sendungen
die mir den jeweiligen Punkt mitteilen. Damit hab ich auch
herausgefunden das es an der Stelle in einer Endlosschleife stehen
bleibt:
void TWI_data(char DATA)
{
USART_write("TWI data");
TWDR = DATA;
USART_write("TWI 1");
TWCR = (1<<TWINT) | (1<<TWEN);
USART_write("TWI 2");
//Load DATA into TWDR Register. Clear TWINT bit in TWCR to start
transmission of data
while (!(TWCR & (1<<TWINT)))
{
USART_write("Endlosschleife ?"); //hier bleibt es hängen
}
//Wait for TWINT Flag set. This indicates that the DATA has been
transmitted, and ACK/NACK has been received.
USART_write("TWI 3");
}
Der gesammte code ist aus dem Datenblatt vom Mega8 und nur in einzelne
teile gespalten wobei ich einige teile weglassen musste da der compiler
meinte die Funktion würde dort zum ersten mal benutzt:
void TWI_start(void)
{
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN) // Send START condition
while (!(TWCR & (1<<TWINT)));
// Wait for TWINT Flag set. This indicates that the START condition
has been transmitted
if ((TWSR & 0xF8) != START)ERROR();//Gemeint ist diese Stelle mit
!=START
// Check value of TWI Status Register. Mask prescaler bits. If
status different from START go to ERROR
}
Habe ich irgendein include vergessen ? (Gesammter Code im Anhang)
Der Bus befindet sich zur Zeit nur kurz auf zwei Lochraster Platinen mit
1a Verbindung ca 10 cm und hat jeweil einen 10k pullup.
Der TDA wird momentan mit 5V versorgt genauso wie der Mega8 (hängen
beide an der gleichen Festspannungsquelle) Momentan sind die Ausgänge
des DAC durchgehend nur 0,28 V. Am merkwürdigsten ist auch wenn ich die
verbindung zwischen den Beiden trenne und dann die TWI komunikation
starte , dann bleibt der Mega8 an der gleichen Stelle hängen. Deshalb
vertrau ich meinem code überhaupt nicht. Ich hoffe mir kann irgendjemand
zumindest nen Tipp geben wo mein Fehler ist ich Poste auch gleich noch
das Datenblatt für den DAC.
Was auch super wäre wenn jemand ein Beispiel für ein Twi-Komunikation
kennt außer die von Atmel.