ATMGEA256A3BU - readNack

OP #5369505
Lesenswert?

Hallo,

irgendwie habe ich Probleme mit dem lesen von einem Byte und dem senden 
des NACK´s
1
uint8_t twiReadNack( TWI_t *twi , uint8_t reg )
2
{  
3
  /*
4
  *  NACK senden
5
  */  
6
  twi->MASTER.CTRLC = TWI_MASTER_ACKACT_bm;
7
  
8
  /*
9
  *  Adresse übertragen
10
  */
11
   twi->MASTER.DATA   = reg;
12
  /*
13
  *  Warten bis Übertragung komplett ist
14
  */
15
   while(!(twi->MASTER.STATUS&TWI_MASTER_WIF_bm));
16
  /*
17
  *  Warten bis ein Byte empfangen wurde
18
  */
19
  while( ! ( twi->MASTER.STATUS & TWI_MASTER_RIF_bm ) );
20
  
21
  return (twi->MASTER.DATA);  
22
}

Was mache ich vom Ablauf her falsch?
Gast #5370246
Lesenswert?

Jan H. schrieb:
> Was mache ich vom Ablauf her falsch?

Du zeigst nicht den kompletten Code.

Wie sollen wir erraten was du hinter

MASTER.STATUS, MASTER.CTRLC und MASTER.DATA

versteckt hast? Wie sollen wir erraten ob du in *twi
was sinnvolles übergibst?

Ein offensichtlicher "Fehler" ist: ein (vermutliches)
Control Register pauschal mit einer Bitmaske zu beschreiben,
sowas tut man nicht tuten! Weil du damit die ganze
Maschinerie durcheinander bringen kannst.
OP #5370318
Lesenswert?

Kopf Schüttler schrieb:
> MASTER.STATUS, MASTER.CTRLC und MASTER.DATA
>
> versteckt hast? Wie sollen wir erraten ob du in *twi
> was sinnvolles übergibst?

Hast du dich jemals mit den Xmegas ernsthaft beschäftigt?
Diese Konstanten wurden von Atmel / Microchip erfunden und sind in jedem 
Atmel Studio 7.x (evtl. auch andere) vorhanden. Das sind genau die Bits 
wie im Datenblatt zu den jeweiligen Synonymen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren