- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 50

Thema: Atmega8 als I2C Slave

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Beiträge
    56
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Den Fehler kenne ich an sich nicht. Ich habe nun nochmal dein Code Nr.2 kopiert und kompilieren lassen.

    Irgendwie scheint mit nem Code von Winavr selber was nicht zu stimmen.
    Gruß, Werner
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fehlermeldung_129.jpg  

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Wie ist das Hauptprogramm, wie ist das makefile?

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Beiträge
    56
    Makefile macht ja avrstudio selber. Darum muss ich mich ja im Normalfall nicht kümmern!?

    Hauptprogramm existiert eigentlich keins. Solange doch dieser Code nicht fehlerfrei kompiliert wird, wird ein Hauptprogramm auch nichts bringen. Sehe ich das falsch?

    Der Code sollte später auf einem Mega 8 ohne externen Quarz laufen.

    Ich würd mich echt freuen, wenn des klappen würde!

    Gruß, Werner

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    du brauchst auf jeden Falll nen Funktion namens main. Die muss in jedem Programm vorhanden sein. main wird als erstes aufgerufen, wenn der AVR startet.

    Pack am besten ne Ausgabe des rxbuffers (LEDs, LCD, UART, wasauchimmer du am AVR hängen hast) in main. Oder die Werte aus dem rxbuffer lesen, verändern und in txbuffer packen....

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Beiträge
    56
    avr-gcc.exe -mmcu=atmega8 M8LED.o Zeit.o twislave.o -o M8LED.elf
    twislave.o: In function `init_twi_slave':
    ../twislave.c:35: multiple definition of `init_twi_slave'
    M8LED.o:C:\Dokumente und Einstellungen\Werner\Eigene Dateien\M8LED\twislave.c:35: first defined here
    twislave.o: In function `__vector_17':
    ../twislave.c:47: multiple definition of `__vector_17'
    M8LED.o:C:\Dokumente und Einstellungen\Werner\Eigene Dateien\M8LED\twislave.c:47: first defined here
    make.exe: *** [M8LED.elf] Error 1


    Habs gerade mal mit dem Programmersnotepad kompiliert, weil man da ja offensichtlich eine genauere Fehlerbeschreibung bekommt.

    So wie es ausschaut, meckert er zweimal wegen multipler Definition.

    Hast du ne Ahnung, was ich anders machen kann?

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Hast du vielleicht das ganze Zeug einmal im Hauptprogramm und einmal in der twislave.c stehen? Oder die twislave.c zweimal eingebunden? (muss ich bei Gelegenheit mal ändern, damit das nicht mehr zu nem Fehler führt)

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Ich hab jetzt mal meine aktuelle Version ins Wiki gepackt.
    https://www.roboternetz.de/wissen/in...ve_mit_avr-gcc
    Ne genauere Beschreibung folgt die Tage.

  8. #18
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Beiträge
    56
    Ich glaube das war der springende Punkt. Wenn ich jetzt über diesen Projektmanager twislave.c einfüge, diese Datei extra kompiliere und anschließend build klicke, kommt kein Fehler mehr!

    Habe aber jetzt noch ne Frage. Wie kann ich den nun die Funktion am leichtesten testen:

    init_twi_slave(0x50);

    Reicht das schon, dass ich vom Master aus was sinnvolles empfange?

    Sorry für die vielen Fragen...

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Mit
    init_twi_slave(0x50);
    aktivierst du die Schnittstelle und setzt die Slave-Adresse auf 0x50.
    Um die Kommunikation zu testen, müssterst du z.B. was in den txbuffer schreiben:
    txbuffer[0]=255;
    txbuffer[1]=100;
    txbuffer[2]=33;
    ...

    Wenn du jetzt vom Master aus auf den Slave zugreifst, müsstest du diese Wert erhalten.

    Nen Codeschnipsel für den Master, benutzt die fleury-Master-lib:
    Code:
    #define SLAVE_ADRESSE 0x50
    
    		if(!(i2c_start(SLAVE_ADRESSE+I2C_WRITE))) //Slave bereit zum lesen?
    		{
    			i2c_write(0x00); //buffer Startadresse zum Auslesen
    			i2c_rep_start(SLAVE_ADRESSE+I2C_READ); //Lesen beginnen
    
    				byte0= i2c_readAck();
                                    byte1= i2c_readAck();
                                    byte2= i2c_readAck();
    
    			i2c_stop();
    		}

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Beiträge
    56
    Das will bei mir nicht klappen

    Nach wie vor wird das bei mir nicht richtig kompiliert.

    Standardfehler sind mittlerweile:
    ../../../../../avr-libc-1.4.5/crt1/gcrt1.S:51: undefined reference to `main'
    oder

    make.exe: *** No rule to make target `C:/Dokumente', needed by `main.elf'. Stop.

    Das Problem ist, dass diese c-Datei in meiner main.c nie ordentlich eingebunden ist, ansonsten käme doch kein impilicit Declaration.

    Hab echt keine Ahnung, warum das bei mir so Probleme macht...

    Gruß

    PS: Nichtmal dieses bescheurte Beispielprogramm 311 von Atmel wird fehlerfrei kompiliert!

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test