- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: Problem mit I²C in Bascom und AVR

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270

    Problem mit I²C in Bascom und AVR

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo!

    Ich habe hier einen SAA1064 (4 Digit LED driver. http://www.ortodoxism.ro/datasheets/philips/SAA1064.pdf)
    Der wird per I²C angesteuert. Bascom hat ja berets die I2C funktion... sobald diese aber ausgeführt wird, bleibt der µC (ein AT90S2313) hängen

    hier mal mein Quellcode
    Code:
          $crystal = 10000000
          Config Scl = Portd.4
          Config Sda = Portd.3
          I2cinit
    
    Print "Schritt 1"
    
    I2cwbyte &H70
    
    Print "Schritt 2"
    
    I2cwbyte 0
    
    Print "Schritt 3"
    
    I2cwbyte &B1111110
    
    Print "Fertig"
    
    Do
    Loop
    "Schritt 1" wird noch gesendet, doch dann bleibt der µC einfach hängen und mach garnix mehr
    wenn ich die I2cwbyte befehle weglass, bleibt er nicht hängen. hab das gleiche problem auch mit einem Atiny-15L. Woran kann das liegen??

    THX 4 Help!

    Schoko

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

    Du musst auch vor dem senden der Datenbytes die Verbindung zum Slave starten,
    dazu gibt es die Befehle I2Cstart und I2Cstop.
    Danach wird als erstes die Slaveadresse gesendet, dann erst die Daten.

    In der Bascomhilfe steht genaueres, incl. Beispiel.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270
    Hi! stimmt, das hab ich vergessen. Habs jetzt eingefügt, aber hat nicht wirklich was gebracht. bin jetzt von Portd auf Portb gewechselt, hat aber auch nichts gebracht. Hier der überarbeitete code
    Code:
          $crystal = 10000000
          $baud = 19200
          Config Scl = Portb.2
          Config Sda = Portb.1
          I2cinit
    
    Print "Config fertig"
    
    I2cstart
    Print "I²C gestartet"
    I2cwbyte &H70
    Print "Schritt 1"
    I2cwbyte &B00000000
    Print "schritt 2"
    I2cwbyte &B1111110
    Print "Schritt 3"
    I2cstop
    Print "I²C gestoppt"
    
    Do
    
    Loop
    der AT90S2313 bleibt wieder bei I2cwbyte hängen. Lediglich "Config fertig" und "I²C gestartet" werden gesendet, dann sagt der gar nix mehr

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Wie schaut die sache Hardwaremässig aus ?

    Die Pullupwiderstände werden gerne mal vergessen, wenns ein selbstgebautes Board ist !

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270
    hardware mäßig schauts so aus, dass der AT90S2313 an den ISP adapter angeschlossen ist, pin 2 und 3 sind für RXD und TXD vom UART belegt und der SAA1064 hängt mit Sda und Scl an PortD 1 und 2. Von Scl und Sda gehen je ein 1k Widerstand nach GND.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    36
    Beiträge
    270
    AU MANN!!! da hab ich mir die antwort doch gearde selber gegeben....

    hab die widerstände an VCC angelötet und siehe da: alles tut.... wegen so einem blödsinn hier 3 stunden verdödeln...

    trotzdem danke!!
    Warum bekommen Vegetarier immer eine Extrawurst?

Berechtigungen

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

LiFePO4 Speicher Test