www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Routinen in Cpp


Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen zusammen,

hier wird oft von vorhandenen I2C Routinen zum einbinden gesprochen.
Wo finde ich die Dinger (in CPP)

Gruß aus Berlin
Ingo

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ein Klasse Beispiel auf ATmega88 Basis findest Du auf der Internet 
Seite des computer club 2

http://www.cc-zwei.de/wiki/index.php/ATM18::Projek...

Viel Spaß beim Stöbern

Daniel

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In .cpp gibts da eher nix.

In C schon, z.B. in hier in der ((Achtung! Geheimtip:) Codesammlung, 
oder bei Peter Fleury.

Oliver

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,
;-) im Geheimtipp habe ich schon gesucht und bin auch zu deinem 
Ergebniss gekommen >> In .cpp gibts da eher nix.

Gruß Agent Ingo
p.s. werde mal bei Peter Fleury schauen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ingo Laabs schrieb:
> Hallo Oliver,
> ;-) im Geheimtipp habe ich schon gesucht und bin auch zu deinem
> Ergebniss gekommen >> In .cpp gibts da eher nix.

Ich versteh nicht ganz.
Wo liegt dann jetzt das Problem?

Um 3 Funktionen eine Klasse drumherumschnitzen kann doch nicht das 
Problem sein.

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...gibt ja auch kein Problem..jetzt nicht mehr.

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt mal eine Schreibroutine zusammen gewürfelt. Kann aber leider 
noch nicht sagen ob sie so in der Form funktioniert da EEPROM noch im 
Bastelladen. Vlt kann ja mal einer drüber schauen ob alles so OK ist,
bzw. meckern und mich zusammen stauchen wenn was falsch ist.


#include <stdlib.h>
#include <avr/io.h>
#define F_CPU 12000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/twi.h>

// Mega 32 CPU 12 MHz
//  EEPROM 24c08 100 KHz

int main (void)

{
TWSR = (0<<TWPS0) | (0<<TWPS1);        // Prescaler 1
TWBR = 0x34;                          // berechnung ergab 52


TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);  // start senden
while  (!(TWCR & (1<<TWINT)));              // warten bis fertig



TWDR = 0xA0;                  // Controll BYTE fur 24c08  OxA1 = lesen 
!!
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));


TWDR=0x0;              // Adresse im EEPROMs
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));          // warten bis fertig


TWDR = 0xF0;              //Daten an das EEPROM senden
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));          // warten bis fertig

TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);   // und STOP senden
while  (!(TWCR & (1<<TWINT)));           // warten bis fertig

while(1)
  {
     // Nüscht machen !
  }

 return 0;
}

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn da nun .cpp?

Für stinknormales C funktionieren die o.a. Quellen wunderbar. Da 
brauchst du das Rad nicht nochmal zu erfinden. Zusätzlich gibt es auch 
noch ein C-Code-Beispiel im AVR-Datenblatt. Alles geprüft und lauffähig.

Mir fehlt in deinem Code die Fehlerbehandlung.

Oliver

Autor: Ingo Laabs (grobian)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

mir geht es eigentlich jetzt nur darum ob ich mit den berechneten Werten 
und der Programmsequenz das EEPROM richtig anspreche.

Gruß Ingo

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.