USI Problem mit ATtiny24

Gast #1407262
Hallo Leute, hilft mir.

Seit 8 Stunden kämpfe ich mich durch die Datenbläter und diesen Forum, 
um die USI 2-Wire Master daten übertragung zu realesieren.

Ich verstehe einfach nicht wie ich die Daten aus USIDR in die Welt 
schicke. Bis jetzt sehe ich nur ein 1MHz Takt am PA4 = SCL

Im angehängten Code ist die minimal-Version des Programms.
Angehängte Dateien:
Gast
Ok Problem fast gelöst,
Wie auch immer der Fall ist: der Fehler sitz vor dem PC.

Habe am Falschem Pin den Ausgang erwartet, bzw. da ich eine TWO-WiRE 
Mode realesieren möchte habe ich schon an richtiger Stelle gemessen (SDA 
= PA6) funktioniert bis jetz nur 3_WiRE.

Und mit diesem Code leuft ENDLICH 2-WIRE !
1
void USI_TWI_Master_Initialise( void )
2
{
3
  PORT_USI |= (1<<PIN_USI_SDA);           // Enable pullup on SDA, to set high as released state.
4
  PORT_USI |= (1<<PIN_USI_SCL);           // Enable pullup on SCL, to set high as released state.
5
  
6
  DDR_USI  |= (1<<PIN_USI_SCL);           // Enable SCL as output.
7
  DDR_USI  |= (1<<PIN_USI_SDA);           // Enable SDA as output.
8
  
9
  USIDR    =  0xFF;                       // Preload dataregister with "released level" data.
10
  USICR    =  (0<<USISIE)|(0<<USIOIE)|                            // Disable Interrupts.
11
              (1<<USIWM1)|(0<<USIWM0)|                            // Set USI in Two-wire mode.
12
              (1<<USICS1)|(0<<USICS0)|(1<<USICLK)|                // Software stobe as counter clock source
13
              (0<<USITC);
14

15
  USISR   =   (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)|      // Clear flags,
16
              (0x0<<USICNT0);                                     // and reset counter.
17
}

und
1
unsigned char USI_TWI_Master_Transfer( unsigned char temp )
2
{
3
  USIDR = temp;
4

5
  USISR = (1<<USISIF)|(1<<USIOIF)|
6
        (1<<USIPF)|(1<<USIDC)|
7
      (0x0<<USICNT0);                         // Set USISR according to
8
      //  Clear flags, and set USI to shift 8 bits i.e. count 16 clock edges..
9

10
                                                    // Prepare clocking.
11
  temp  =  (0<<USISIE)|(0<<USIOIE)|                 // Interrupts disabled
12
           (1<<USIWM1)|(0<<USIWM0)|                 // Set USI in Two-wire mode.
13
           (1<<USICS1)|(0<<USICS0)|(1<<USICLK)|     // Software clock strobe as source.
14
           (1<<USITC);                              // Toggle Clock Port.
15
  do
16
  {
17
    _delay_loop_1( 2 );              
18
    USICR = temp;                          // Generate positve SCL edge.
19
    while( !(PIN_USI & (1<<PIN_USI_SCL)) );// Wait for SCL to go high.
20
    _delay_loop_1( 4 );              
21
    USICR = temp;                          // Generate negative SCL edge.
22
  }while( !(USISR & (1<<USIOIF)) );        // Check for transfer complete.
23
  
24
  _delay_loop_1( 2 );                
25
  temp  = USIDR;                           // Read out data.
26
  USIDR = 0xFF;                            // Release SDA.
27

28
  return temp;                             // Return the data from the USIDR
29
}
Gast
Hallo Jorg,

/*Hmm, ich blicke jetzt nicht ganz durch, hast du noch ein Problem
offen oder nicht?*/

Nun nicht ganz zu ;) sag ich mal so. Senden kann ich ändlich was (also 
TWI läuft). Hab als Slave einen LM3944 i2c LED-kontroller, der will 
nicht meine Nachrichten umsetzen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.