- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Probleme mit I2C/TWI-Slave -> Master funktioniert

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    Anzeige

    Praxistest und DIY Projekte
    teilweise...ich habs folgendermaßen gemacht
    TWCR = 0x45;
    sei();
    TWCR |= 0b10000000;

    der letzte Befehl ist eine Oder-Verknüpfung, der das MSB(Bit Nummer 7, also das höchste) setzt
    wenn ich das vor dem sei stehen hab, gehts nicht, und was ist, wenn ich das sei vor die ganze Prozedur setze, hab ich noch nicht probiert, da es eben so ging

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Also bei mir ändert sich nichts, wenn ich das umschreibe!
    Warum und wo muss ich denn das TWINT wieder setzen?

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    du musst das TWINT am Ende der ISR(in ASM also vor dem ret, oder was zum Teufel man da verwendet) wieder auf 1 setzen
    du musst das setzen, weil ansonsten das TWI-Modul nichts mehr macht
    dieses wird bei einem Interrupt, also wenn das TWINT-Bit gleich 0 ist, gestoppt, damit man zB Daten auswerten kann
    aber das TWINT wird nicht automatisch nach der ISR wieder auf 1 gesetzt, das muss man manuell machen

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Ok, ich probiere es gleich aus!

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hmmmm, schade!
    Der µC gibt leider noch immer, trotz der Änderungen, nur seine eigene Adresse aus, komisch!

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Naja, ich gehe jetzt erstmal ins Bett, trotzdem Danke für Deine Hilfe! :o)

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    kannst du bitte mal den aktuellen Code posten?
    ich weiß nicht, ob du es inzwischen geändert hast, aber in dem von dir geposteten Code für den Slave wartest du ja immer darauf, dass TWINT gleich 1 gesetzt wird, das wird aber nicht passieren, weil du das manuell machen musst

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Guten morgen Pascal!
    Also im Datenblatt-Beispielcode des Mastertransmitters habe ich das so verstanden, dass der Master immer auf die Bestätigung durch TWINT=1 wartet, bevor er den Statuscode abfragt.
    Das Prinzip habe ich auf den Slavereceiver übertragen.
    Mit dem Statuscode 0x60 scheint das ja auch zu funktionieren, aber mit dem Statuscode 0x80 nicht.
    Ich kann es gelich auch mal ohne ausprobieren! :o)

    Mittlerweile vermute ich sogar, dass mein Mega8 kaputt ist, denn ein anderer Mega8 gibt etwas ganz anderes aus, nämlich nicht seine eigene Adresse, sondern garnichts.
    Ich werde mir gleich einen neuen Mega8 aus der Kiste kramen und es nochmals ausprobieren.
    Im Notfall werde ich auf den Mega8 mal den Mastertransmitter aufspielen und dann sehen, ob er so funktioniert!

    Den aktuellen Code werde ich gleich posten! :o)

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    Also im Datenblatt-Beispielcode des Mastertransmitters habe ich das so verstanden, dass der Master immer auf die Bestätigung durch TWINT=1 wartet, bevor er den Statuscode abfragt.
    das ist ja auch richtig, zB beim Senden von START, schreibst du was ins TWCR-Register und wartest dann darauf, dass er damit fertig ist, um dann die Addresse zu senden
    beim Slave ist das aber anders, wenn der TWI-Interrupt ausgelöst wird, wird das TWINT=0 gesetzt, das TWI ist dann solange inaktiv bis du das TWINT wieder gleich 1 setzt, erst dann arbeitet das TWI-Modul wieder

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Achso, naja dann war das wohl ein Denkfehler meinerseits! :o(
    Leider muss ich jetzt ersteinmal für meine Physikprüfung am Di. üben, aber nachher melde ich mich nochmal und probiere es weiter!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress