- 12V Akku mit 280 Ah bauen         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 39

Thema: I2C Einstieg

  1. #21
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Anzeige

    E-Bike
    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. #22
    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. #23
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    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. #24
    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. #25
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.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. #26
    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. #27
    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 21:11 Uhr) Grund: Schon wieder die 1000 erreicht.
    Lieber Asuro programieren als arbeiten gehen.

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Hallo Sternthaler,

    "I2cinit
    Habe ich jetzt eingefügt, geht aber trotzdem nicht.

    P.S.: Im übrigen hat mir deine Fragerunde auch gut 'die Augen geöffnet'.
    ?

    Und da das hier gerade (schon wieder) mein 1000'er Eintrag ist, verweise ich mal auf
    Warum schon wieder ?? Du hast doch erst 1000.

    Also zurück zu meinem Problem: Warum geht es nicht ?? Beim ersten Mal anschalten nach dem Proggen funktioniert es, wenn ich es dann aber ausschalte und wieder an dann geht gar nichts mehr! Weder Ton noch Text !

    Kennt sich einer von den Fachleuten da aus ?? Ich würde mich über Antworten sehr freuen, da ich echt nicht weiter weiß.

    Der Einsteiger

  9. #29
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Zitat Zitat von Der Einsteiger Beitrag anzeigen
    Habe ich jetzt eingefügt, geht aber trotzdem nicht.
    Schade. Aber da sieht man mal, dass ich wirklich keine Ahnung vom Bascom habe

    Zitat Zitat von Der Einsteiger Beitrag anzeigen
    P.S.: Im Übrigen hat mir deine Fragerunde auch gut 'die Augen geöffnet'.
    Ich habe die Antworten zu deinen Fragen mit Spannung gelesen, da meine I2C-Kentnisse, zwar in C, auch nur recht klein sind.

    Zitat Zitat von Der Einsteiger Beitrag anzeigen
    Warum schon wieder ?? Du hast doch erst 1000.
    Genau das ist auch mein "Problem"!

    Zitat Zitat von Der Einsteiger Beitrag anzeigen
    Also zurück zu meinem Problem: Warum geht es nicht ?? Beim ersten Mal anschalten nach dem Proggen funktioniert es, wenn ich es dann aber ausschalte und wieder an dann geht gar nichts mehr! Weder Ton noch Text !
    Da bin auch ich auf eine funktionierende Antwort gespannt.

    Gruß
    Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  10. #30
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Hast du eine LED dran, mit der du die verschiedenen Programmphasen sichtbar machen kannst? Die LED sukkzessive immer später im Programmablauf einschalten.Vielleicht bleibt der Controller in einer der Funktionen stecken.

    Wie ist der Reset realisiert? Über den Programmer, oder über das Spannung einschalten? Gibt es da unterschiedliches Verhalten? Die Initialisierung nach dem Reset kann (zumindest bei PICs) je nach Resetursache (PowerUp, BrownOut, WatchDog, Sleep) durchaus unterschiedlich sein.

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Problem mit I2C Sensor DRMOD-I2C-RVI
    Von muerzi im Forum Sensoren / Sensorik
    Antworten: 23
    Letzter Beitrag: 22.02.2010, 19:29
  2. I2C Overview für den Einstieg
    Von Vbxler im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 19.05.2008, 19: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, 16: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, 20: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, 10:58

Berechtigungen

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

Solar Speicher und Akkus Tests