-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: USI interface an tiny 2313

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    34
    Beiträge
    979

    USI interface an tiny 2313

    Anzeige

    hallo zusammen!

    ich möchte den tiny2313 als I2C slave betreiben, aber so wie ich gesehen haben hat der keinen echten TWI bus sondern das neue USI interface... hat damit schon jemand eine I2C kommunikation aufgebaut? wen ja währe ich sehr froh über ein bisschen hilfe...
    mit 2 atmega8 habe ich schon eine I2C kommunikation zustande gebracht... also ein bisschen kenntniss ist vorhanden.... und das ganze sollte mit Bascom programmiert werden...

    gruss bluesmash

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    34
    Beiträge
    979
    ich habe jetzt mal mein glück versucht...

    code master:
    Code:
    $regfile = "M8def.dat"                                      ' the chip we use
    $crystal = 8000000
    
    Config Sda = Portc.4
    Config Scl = Portc.5
    
    i2cinit
    
    Dim X As Byte
    
    X = 59
    
    
    Do
    
        I2csend 10 , X , 1
        Waitms 100
    Loop
    code slave:
    Code:
    $regfile = "ATtiny2313.DAT"
    $crystal = 8000000
    $baud = 9600
    
    $framesize = 128
    $swstack = 128
    $hwstack = 128
    
    Usicr = &B11111000
    
    'Config Portb.5 = Input
    'Config Portb.7 = Input
    
     Dim X As Byte
    
    On Uci_start Usis
    On Uci_ovflw Usio
    Enable Interrupts
    
    
    Config Portd.6 = Output
    Print "test"
    Print Usidr
    
    Do
    Waitms 100
      Print X
    Loop
    
    
    Usis:
     'Usidr = 0
    
     Usisr.0 = 0
     Usisr.1 = 0
     Usisr.2 = 0
     Usisr.3 = 0
     Usisr.7 = 1
    Return
    
    
    
    Usio:
        X = Usidr
    
        Usisr.6 = 1
        Usisr.0 = 0
        Usisr.1 = 0
        Usisr.2 = 0
        Usisr.3 = 0
    Return

    aber ich erhalte bei der ausgabe von x immer nur 59... eigentlich sollte ja zuerst die adresse mit read/write kommen..... kann mir da jemand helfen???

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    ich hätte eigentlich auch schon ein paar T2313 da liegen um genau das zu probieren, aber habs bis jetzt noch nicht gemacht

    Hast Du schon diese AN's gelesen:
    AVR310: Using the USI module as a I2C-master
    AVR312: Using the USI module as a I2C-slave

    da gibts auch Beispiel code dazu, zu finden hier:
    http://www.atmel.com/dyn/products/ap...?family_id=607

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    34
    Beiträge
    979
    ups... das sieht ja noch viel komplizierter aus als ich dachte... ist wohl doch nicht so einfach zu lösen...

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    34
    Beiträge
    979
    ich hab mich jetzt mal in das c prog eingelesen... ich denke es ist machbar.. (ja klar machbar ist alles.... )
    hab nur noch ein bisschen mühe alles in c zu verstehen...

    was bedeuten das folgende statement?

    Code:
    while ( (PIN_USI & (1<<PORT_USI_SCL)) & !(tmpUSISR & (1<<USIPF)) );
    
    definitionen zu den variablen:
    
    
    #if defined(__AT90Tiny2313__) | defined(__ATtiny2313__)
        #define DDR_USI             DDRB
        #define PORT_USI            PORTB
        #define PIN_USI             PINB
        #define PORT_USI_SDA        PORTB5
        #define PORT_USI_SCL        PORTB7
        #define PIN_USI_SDA         PINB5
        #define PIN_USI_SCL         PINB7
        #define USI_START_COND_INT  USISIF
        #define USI_START_VECTOR    USI_STRT_vect
        #define USI_OVERFLOW_VECTOR USI_OVF_vect
    #endif

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    die Bedeutung steht ja gleich dahinter:

    Code:
    // Wait for SCL to go low to ensure the "Start Condition" has completed.
    // If a Stop condition arises then leave the interrupt to prevent waiting forever.
    Es wird gewartet bis die Takleitung SCL low wird, oder evtl. schon wieder ein STOP erkannt wurde.

    in Bascom könnte das IMHO so ausschaun:
    Code:
    while (Portb.7 = 1 and not USIS.USIPF = 1)
    Die Schleife wird solange wiederholt wie PB7 auf 1 ist und USIS.USIPF nicht auf 1 geht.

    Hab das jetz aber nur auf die schnelle zusammengereimt

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    34
    Beiträge
    979
    ich glaube langsam das Bascom einfach zu langsam ist dafür...
    ich habe jetzt den ganzen abend probiert... mit mehr oder weniger gutem erfolg... konnte jedenfals die adresse übertragen und 2 bytes empfangen aber ab dem 3. byte kam nur noch mülll.... keine ahnung wiso....

    hat noch niemand das usi als I2C mit Bascom geproggt???

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hi,
    hab mir jetzt was schönes zum basteln vorbereitet:
    Damit versuche ich mal die Berge und Täler des USI zu ergründen, und hoffe meinem T2313 etwas TWI-Kommunikation beizubringen.
    Wenn's was wird, kann die ein- oder andere Info ins Wiki eingetragen werden.

    Da ich (jetzt) keine Lust hatte ein ganzes Board für den T2313 zu erstellen, hab ich nur einen Adpater zusammengeflickt.
    Der läuft jetzt mit dem Quarz des RN-Control (16MHz), und kann auch die anderen Features des RN-Control verwenden, soweit überhaupt im T2313 vorhanden.
    Es geht Motortreiber, Buzzer, MAX232 und die 8 LEDs, AD-Wandler hat der ja keinen, deshalb bleibt PortA unbenutzt.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.04.2005
    Ort
    Aarau
    Alter
    34
    Beiträge
    979
    na dann viel glück ich schlage mitlerweilen eine andere rcichtung ein und mache die kommunikation nicht über I2C

    gibt js noch einige varianten

    gruss bluesmash

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Das Zeug liegt bestimmt schon ein Jahr hier rum, und jetzt hab ich endlich etwas Lust hier weiterzuforschen, hab damals das TWI-Modul untersucht und den Wiki-Artikel gebaut.

    Mit dem USI ist das aber so eine Sache, soweit ich das bisher verstanden habe ergibt das mehr ein optimiertes Software-TWI, man muss selber die Richtungsbits setzen usw.
    Das einzige was, mehr oder weniger, automatisch geht ist die Erkennung einer Startsequenz, sogar ein ACK oder NACK muss man selber zusammenbauen,
    na das wird ja lustig

    Bin grad am Anfang die Beispiele aus dem AN310 in Bascom nachzubauen, denn als Master soll das ohne Timer und Interrupt gehen, aber <language="bairisch">des is a rechts gfrett</language> (deutsch->Zum Zeitpunkt der Planung wurde der Zeitaufwand zur Umsetzung des Projektes aufs gröbste unterschätzt !)


    Einen Artikel im Wiki hab ich aber schon angefangen, damit ich nicht wieder alles vergesse was ich da alles lese:
    USI-Artikel

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •