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

Thema: Und wieder I2C am ASURO

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Alter
    55
    Beiträge
    33

    Und wieder I2C am ASURO

    Anzeige

    LiFePo4 Akku selber bauen - Video
    ich dacht das lesen der I/O's vom 8574 hätte bei mir geklappt.
    fehler !!!
    ich hatte zwar werte bekommen aber mich erst einmal nicht
    weiter darum gekümmert.
    heute wollte ich mich noch einmal mit dem lesen der ports vom 8574P
    beschäftigen und habe mich dann doch etwas gewundert!

    also erst mal mein code:
    Code:
    #include <stdlib.h>
    #include <avr/io.h>
    #include "i2cmaster.h"
    #include "asuro.h"
    
    
    #define Dev8574   0x40      // device address of PCF 8574, see datasheet
    
    int main(void)
    {
    
      unsigned char wert;
    
      int i;
        
      Init();                                    // init Asuro
      i2c_init();                                // init I2C interface
    
      
      while(1)
      {	    
     
       i2c_rep_start(Dev8574+I2C_READ);
       wert=i2c_readNak();
       i2c_stop();
     
    	  char text1[6] =" ";
          itoa(wert, text1, 6);    
          SerWrite(text1, 6);
    	  SerWrite("     x", 6);
    
    	  SerWrite("\r\n", 2); // Zeilenvorschub 
    		
    	  for (i=0; i<200; i++){Sleep(155);}
    
    
      
      }
      return 0;
    }
    und damit erhalte ich folgende ausgabe:

    alle offen = 1103
    P0 auf 0 = 1102
    P1 auf 0 = 1101
    P2 auf 0 = 1055
    P3 auf 0 = 1051
    P4 auf 0 = 1035
    P5 auf 0 = 1011
    P6 auf 0 = 515
    P7 auf 0 = 331

    wer sieht was was ich nicht sehe (oder verstehe)

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    versuch mal, nicht rep-start in die endlosschleife zu packen.

    mach mal

    i2c_start(Adresse+I2C_READ);

    while(1){

    i2c_read(); //ohne NAK

    }

    (anpassen, hab das grad nur so getippt =)

    vielleicht wirds dann besser.

    leg mal alle pins gleichzeitig auf masse, was passiert dann?

    und versuch mal PrintInt(integerwert); dann kannst du fehler bei der umwandlung in den string ausschliessen.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Alter
    55
    Beiträge
    33
    ok. habe den kampf gewonne. (hoffentlich !!!)

    also readnak ist schon ok, da ich ja nur ein byte haben will und den vorgang ja dann immer gleich stoppe.

    aber PRINTINT hura dem entwickler sei dank.
    mein byte wurde einfach nur falsch übersetzt.

    habe mir den teil aus der asuro.c mal rausgenommen und siehe da es geht.
    zugegeben ich nehme gerne noch die alte asuro.c da ich wieder einmal
    gesehen habe, das der unterschied 11 pages beim übertragen ist.
    (30 pages zu 41 pages)

    hier mal der kleine feine unterschied zu meiner umwandlung von
    int nach ascii und die genie version
    Code:
    	// meine version
        char text1[6] =" ";
        itoa(wert, text1, 6);    
        SerWrite(text1, 6);
    
       
    	//genie version
       	char text[6];
    	itoa(wert,text,10);
    	SerWrite(text,strlen(text));
    also das zauber wort lautet strlen
    hier wird die wirklich zeichenkettenlänge ermittelt und nicht wie bei mir
    versucht immer 6 zeichen zu wandeln.

    aber mal was anderes am rande.
    wieviel byte sind eine page im speicher.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    05.03.2007
    Alter
    55
    Beiträge
    33
    dank m.a.r.v.i.n noch eine erleuchtung.

    es liegt nicht nur alleine an strlen.
    auch bei dem 3. parameter von itoa habe ich mich vertan.
    6 steht für hex 10 für dezimal.
    und klar das es sich mit dezimal besser rechnen lässt.

    DANKE

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    ich glaube 7 kb entsprechen 140 pages, also ein kb 20 pages. so ungefähr wenigstens.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad