- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 49

Thema: TWI-slave ohne lib

  1. #21
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.04.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    336
    Anzeige

    LiFePo4 Akku selber bauen - Video
    dein programm ist aber irgendwie anderst aufgebaut wie die meisten beispiele. Du schreibst z.B. Twar = &H40 in einem anderem Thread steht Config Twislave = &H40 , Btr = 1 , Bitrate = 400000

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Buch hab ich keines zum AVR oder µC, kann deswegen auch keine Tipps geben, hab nur alles aus dem Inet, bzw. halt den Datenblättern.

    Programmieren in diese Richtung kenne ich aber schon von früher her aus C64 Zeiten, da hat mich damals schon mehr interresiert was unter der Haube ist und rumgebastelt, ziemlich viel in ASM. Das kommt den µC schon ziemlich nahe.

    Dann zu Config TWIslave, das kann man nur verwenden wenn man die berühmte Lib für Bascom hat.
    Deswegen muss/kann man auch die gewünschte Geschwindigkeit angeben, was beim Slave normalerweise nicht gebraucht wird, weil das mit der Lib auch in Software möglich ist, und Bascom sich wohl einen Timer einstellt um an der Clock und Datenleitung zu lauschen.
    Ist aber nur eine Vermutung.

    Wenn ich am Wochenende mal Zeit/Lust habe, probier ich mal mein Testprogramm etwas aufzubohren.

  3. #23
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.04.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    336
    wenn ich aber twislave eingeba dann meldet Bascom mir immer Unknown Interrupt TWI Error : 117

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.04.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    336
    In deinem Programm kenn ich mich irgendwie gar nicht aus. Wo empfängst du das Byte? gibts da nich solche Befehle Receive?

    Edit: Könntest du mir noch zeigen wie ich vom Slave auch senden kann? Die Hilfe in Bascom kann man da ja vergessen.
    Ich hab jetzt dieses Programm hergenommen:
    Code:
    $regfile = "M32def.dat"                           ' the used chip
    $crystal = 16000000                               ' frequency used
    $baud = 9600                                      ' baud rate
    
    
    $lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
    
    
    Config Scl = Portc.0                              ' we need to provide the SCL pin name
    Config Sda = Portc.1                              ' we need to provide the SDA pin name
    
    'On the Mega8,          On the PCF8574A
    'scl=PC5 , pin 28            pin 14
    'sda=PC4 , pin 27            pin 15
    
    
    I2cinit                                                     ' we need to set the pins in the proper state
    
    
    Config Twi = 100000                                         ' wanted clock frequency
    'will set TWBR and TWSR
    'Twbr = 12                                                   'bit rate register
    'Twsr = 0                                                    'pre scaler bits
    
    Dim B As Byte , X As Byte
    Print "TWI master"
    Do
      Input B                                         ' increase value
      I2csend &H40 , B                                    ' send the value
      Print "Error : " ; Err                                    ' show error status
      I2creceive &H41 , X                                 ' get a byte
      Print X                                         ' show error
      Print "Error" ; Err
      Waitms 500                                                'wait a bit
    Loop
    End
    Doch wenn ich X empfangen will empfängt er nur 65 doch Err ist 0. Das bedeutet doch dass kein fehler aufgetreten ist?
    Das Byte B finde ich im Slave ja gar nicht. Wie empfängt der denn das?

    Wie kommst du denn aus der Hauptschleife wieder heraus?
    Ich habe das Programm mal Simuliert. Der hüpft ja kreuz und quer durchs Programm. Was soll denn dann das Do Loop in der Hauptschleife?

    Twcr = &B00000100
    Twcr = &B01000100
    das ist wohl auch doppelt oder?

    Welche Adresse hat denn der Master?

    So das waren jetzt etwas viel Fragen aber sonst blick ich da nie durch.

  5. #25
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Im Slave wird das Byte direkt aus dem register TWDR geholt, siehe Kommentar.

    Wie ich schon beschrieben habe, kann der SlaveCode so wie er jetzt ist, nichts senden, weil das da nicht vorgesehen ist.

    Warum soll ich aus der Hauptschleife heraus, es gibt sonst nix zu tun ?
    Die schleife wird immer durchlaufen und überprüft ob TWI-seitig was anliegt, wenn über TWI ein Byte angekommen ist, wird das Byte an PortD angezeigt.

    Der Master hat keine Adresse, weils eben der Master ist.

    Lese Dir mal im Wiki die I2C Seiten durch, sonst muss ich hier alles nochmal erzählen.

    Wenn du eine Eierlegende Wollmilchsau in Sachen I2C haben willst, musst Du die Lib von Bascom ans laufen bekommen, dann muss man nicht denken, und alles läuft fast von selber, und es gibt schöne funktionen zum aufrufen.

  6. #26
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Zitat Zitat von Zeroeightfifteen
    Twcr = &B00000100
    Twcr = &B01000100
    das ist wohl auch doppelt oder?
    Doppelt ist etwas, wenns zweimal dasgleiche ist, ist hier aber nicht der Fall !

    Man kann sich evtl. darüber streiten wie man das macht, hier ist es schön der Reihe nach eingestellt.

  7. #27
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.04.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    336
    zum thema I2C steht in der Wiki nicht viel drin. Da wird ja nur beschrieben wie das mit SCL und SDA ist aber solche sachen wie Twar, Twcr, Twdr nicht dran. Wie kann dann der Atmega die Unterprogramme (TWi als Slave aktivieren, Schaun ob was gekommen ist, warten bis TWINT gesetzt ist) aufrufen? Die muss er ja auch verarbeiten?

  8. #28
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    In jedem Datenblatt von Atmel zu den AVR Megas steht ausführlich drinnen wie man mit den Registern umgeht, Kapitel Two Wire Serial Interface kurz -> TWI . Das ist bei allen Megas gleich.

    hier die Seite der Datasheets, einfach eins nehmen von einem Mega der TWI hat (M8, M16, M32, ...):
    http://www.atmel.com/dyn/products/da...ily_id=607#760

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.04.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    336
    Danke für den Link aber Englisch ist nicht meine stärke. Ich bestell mir jetzt mal das Buch von Roland Walter. Vielleicht steht da etwas brauchbares drin.

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2004
    Ort
    Aschbach
    Alter
    36
    Beiträge
    223
    Hi Leute,

    bin so newby bei dem Thema TWI aber könnt ihr mir ma sagen ob ich mit euren programmcodes jetzt einfach die scl und sda leitungen meiner atmega32 verbinden kann und loslegen senden oder brauch ich noch irgendwelche anderen bauteile dazu?


    Mfg
    Sven

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test