www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AN312 USI Verständnissfrage


Autor: Jens D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich versuche gerade das IAR Beispiel in ASM umzuschreiben im
grunde ist das kein Thema..

nur verstehe ich nicht, das das zum teil soll
#pragma vector=USI_START_VECTOR
__interrupt void USI_Start_Condition_ISR(void)
{
     unsigned char tmpUSISR;                                         //
Temporary variable to store volatile
     tmpUSISR = USISR;                                               //
Not necessary, but prevents warnings
-- Ist klar

 // Set default starting conditions for new TWI package
     USI_TWI_Overflow_State = USI_SLAVE_CHECK_ADDRESS;
-- Wird hier schon die angesprochene Adresse eingelesen??


     DDR_USI  &= ~(1<<PORT_USI_SDA);                                 //
Set SDA as input
-- Wieso nocheinmal als Input??

     while ( (PIN_USI & (1<<PORT_USI_SCL)) & !(tmpUSISR & (1<<USIPF))
);   // Wait for SCL to go low to ensure the "Start Condition" has
completed.
-- !(tmpUSISR & (1<<USIPF)) was soll sich daran aendern??? 

-- Ist klar
                                                                   // If
a Stop condition arises then leave the interrupt to prevent waiting
forever.
     USICR   =   (1<<USISIE)|(1<<USIOIE)|                            //
Enable Overflow and Start Condition Interrupt. (Keep StartCondInt to
detect RESTART)
                 (1<<USIWM1)|(1<<USIWM0)|                            //
Set USI in Two-wire mode.
                 (1<<USICS1)|(0<<USICS0)|(0<<USICLK)|                //
Shift Register Clock Source = External, positive edge
                 (0<<USITC);
-- Clear FLAGS heisst Bit setzen??
      USISR  =   
(1<<USI_START_COND_INT)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)|      //
Clear flags
                 (0x0<<USICNT0);                                     //
Set USI to sample 8 bits i.e. count 16 external pin toggles.
}

Danke schonmal für euere Antworten

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist schon eine Weile her, dass ich mit der USI eines Tiny26 gekämpft
habe. Du scheinst einen Slave basteln zu wollen.

zu deinen Fragen:

>Wird hier schon die angesprochene Adresse eingelesen??
Nicht direkt, sobalt der Überlaufinterrupt des USI aufgetreten ist,
hast du Slaveadresse im Empfangsregister.

>Wieso nocheinmal als Input??
Die SDA-Leitung wird entweder low oder hochohmig geschalten (d.h.
Umschalten der Richtung Ein- oder Ausgang)

Zu den anderen Fragen kann ich dir aus dem Stand nichts sagen, ist eine
Weile her.

Gruß

Autor: Jens D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, genau das habe ich vor und deine Aussagen sind, wie ich sie vermutet
hatte..

etwas mager Dokumentiert, als AN nunja

hast du es als Slave hinbekommen??

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nur die benötigten Teile (Slave sendet nach Start Condition seinen
Puffer) von IAR nach CodeVision übertragen ( waren keine großen
Änderungen), also kein Assembler.

Gruß

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Inhaltsfragen zu I2C und USI kannst du also gerne stellen, aber bei der
ASM-Umsetzung kann ich dir nicht weiterhelfen.
 btw. Der Start Condition-Interrupt zieht die SDA-Leitung auf Low-Pegel
(d.h. Ausgang). Du musst sie in deinem Programm von Hand wieder
freigeben/hochohmig schalten, also auf Eingang setzen.

gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.