- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 39

Thema: I2C Einstieg

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Für faule Leute:

    http://www.arndt-bruenner.de/mathe/s...lensysteme.htm

    Ansonsten normale Binär-Hex Umwandlung
    Deine Adresse ist zum schrieben:

    1010 0000

    Du fängst von links an:

    1010 = 10 (1*(2^3) + 0*(2^2) + 1*(2^1) + 0*(2^0)) aber 10 ist im Hexsystem = A

    Und bei "0000" machst du es genau so
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Ok, danke, aber da fällt mir gleich noch eine Frage zum PCF ein :
    Programm für Eingänge:

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    Config Portd.7 = Output
    
    'TWI konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Twi = 100000                                         'TWI Frequenz
    
    'Adresse des PCF
    Const Pcf8574w = &H40
    Const Pcf8574r = &H41
    
    Dim Meinevariable As Byte
    
    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 400 , 250
    Sound Portd.7 , 400 , 450
    Wait 1
    
    'I²C initialisieren
    I2cinit
    
    Sound Portd.7 , 400 , 450
    
    Do
    
    I2cstart
    I2cwbyte Pcf8574r
    I2crbyte MeineVariable, Nack
    I2cstop
    
    Print Meinevariable
    Print
    
    Waitms 500
    
    Loop
    End
    Warum erhalte ich da nur 255 und wenn ich einen Taste drücke 127 ? Wie mache ich das richtig ? Was ist dieses Nack (das habe ich in der Bascom Hilfe nicht gefunden) ?

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Ganz einfach....der PCF gibt 1 BYTE an Daten raus, wovon jedes Bit einen IO darstellt, sprich Bit 0 = IO 0 etc.
    Hier ist was zum Thema ACK/NACK:

    http://de.wikipedia.org/wiki/I%C2%B2C
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Ok. Danke funktioniert jetzt und ich habe es verstanden .
    Doch jetzt noch was : irgendeiner sagte ein paar Beiträge zuvor, dass man einen Eingang vorher auf 1 stellen muss, da es sonst nicht funktioniert. Muss man das ? bei mir hat es nämlich auch ohne funktioniert mit dem Code aus Beitrag 22.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Zitat Zitat von Der Einsteiger Beitrag anzeigen
    irgendeiner sagte ein paar Beiträge zuvor, dass man einen Eingang vorher auf 1 stellen muss, da es sonst nicht funktioniert. Muss man das ? bei mir hat es nämlich auch ohne funktioniert mit dem Code aus Beitrag 22.
    Das war ich. Im Datenblatt unter "quasi-bidirectional I/O" findet man beide sich ergänzende Aussagen: Zum einen sind alle Ports nach dem PowerUp per default High und damit Input-fähig; das trifft deinen Fall. Zum anderen sind Anwendungen denkbar, bei denen ein Port z.B. sowohl eine LED treiben als auch (zeitversetzt !) einen Schalter lesen soll. Dann gilt das Gesagte zum expliziten H-setzen.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    bei denen ein Port z.B. sowohl eine LED treiben als auch (zeitversetzt !) einen Schalter lesen soll. Dann gilt das Gesagte zum expliziten H-setzen.
    Und das wollte ich ja nicht


    So, ich habe jetzt mal mit dem 24C16 einen kleinen Datenlogger für LDR Messwerte gebaut.
    Das Aufnehmen der Messwerte klappt auch schon, doch kann ich sie weder abspielen, noch, wenn ich den Conroller wieder einschalte neu beschreiben. Also ich kann es nur einmal beschreiben. Danach wird irgendwie der Controller dumm (beim wiederanschalten gibt es keinen Summerklang mehr und ich bekomme nichts mehr auf der seriellen Schnittstelle angezeigt )

    Woran liegt es ??

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    Config Portd.7 = Output
    
    Config Pind.6 = Input
    Pind.6 = 1
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    Waitms 10
    
    'TWI konfigurieren
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Twi = 100000
    
    Dim X As Byte
    Dim A As Byte
    Dim B As Byte
    Dim Lesen As Byte
    
    Dim W As Word
    
    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 400 , 250
    Sound Portd.7 , 400 , 450
    Wait 2
    
    
    If Pind.6 = 0 Then                                          'Taster für Moduswahl
    
    '---- schreibe in EEprom ----
    For A = 1 To 10
    
    W = Getadc(6)                                               'Messwert
    Print W
    X = W / 4                                                   'damit der Speicher reicht
    Print "Durch 4 geteilt: " ; X
    Print
    Print
    Waitms 200
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA0                                               'Sende Slave Adresse
    I2cwbyte A                                                  'Sende Speicheradresse
    I2cwbyte X                                                  'Sende Wert
    I2cstop                                                     'Stop I2C
    Waitms 10                                                   'warte 10ms
    
    Print "ins EEprom = " ; X ; "  "                            ' Ausgabe der geschriebenen Werte
    Waitms 500
    Next A
    
    Sound Portd.7 , 400 , 450                                   'damit ich weiß, wann er fertig ist
    Waitms 40
    Sound Portd.7 , 400 , 450
    
    
    
    Else
    
    '--- lesen vom EEprom ----
    For B = 1 To 10
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA0                                               'sende Slave Adresse
    I2cwbyte B                                                  'sende Speicheradresse
    
    I2cstart                                                    'Start I2C
    I2cwbyte &HA1                                               'sende Slave Adresse +1 für Lesen
    I2crbyte Lesen , Nack                                       'lese Adresse vom EEprom
    I2cstop                                                     'Stop I2C
    
    Print "Lese  EEprom= " ; Lesen ; "  "                       'Ausgabe der EEprom Werte
    Waitms 500
    Next B
    
    End If
    
    End

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Grüß dich 'Der Einsteiger',

    ich habe zwar keine Ahnung vom Bascom und mache auch nur mit C, aber igendwie vermisse ich hier die Initialisierung mit "I2cinit". (Ob es das ist, kann ich noch nicht einmal sagen.)
    Oder ich bin nur blind

    Gruß Sternthaler

    P.S.: Im übrigen hat mir deine Fragerunde auch gut 'die Augen geöffnet'.
    Also ein großes Dankeschön an alle Frageantworter

    P.P.S: Und da das hier gerade (schon wieder) mein 1000'er Eintrag ist, verweise ich mal auf https://www.roboternetz.de/community...l=1#post487842
    Geändert von Sternthaler (07.08.2013 um 20:11 Uhr) Grund: Schon wieder die 1000 erreicht.
    Lieber Asuro programieren als arbeiten gehen.

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von Der Einsteiger Beitrag anzeigen
    Code:
    Config Pind.6 = Input
    Pind.6 = 1
    Michael meint, daß, um den Pullup einzuschalten, es Portd.6 = 1 heißen müsste.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Problem mit I2C Sensor DRMOD-I2C-RVI
    Von muerzi im Forum Sensoren / Sensorik
    Antworten: 23
    Letzter Beitrag: 22.02.2010, 18:29
  2. I2C Overview für den Einstieg
    Von Vbxler im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 19.05.2008, 18:30
  3. Problem: Zwei MEGA8 via I2C-Bus koppeln (mit I2C-slave-Lib)
    Von Ulfens im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 11.01.2006, 15:25
  4. *I2C* maximale eingänge per i2c auf 8 digitale Pins
    Von Christian Sturm im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 22.06.2004, 19:44
  5. Grundlegendes zum Einstieg mit I2C / AVR / RN-Control etc.
    Von Trabukh im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 31
    Letzter Beitrag: 20.06.2004, 09:58

Berechtigungen

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

LiFePO4 Speicher Test