- 12V Akku mit 280 Ah bauen         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: AT MEGA 8 - TWI - Master und Slave - Programmbeispiel

  1. #21
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.11.2006
    Ort
    Geislingen a. d. Steige
    Alter
    32
    Beiträge
    344
    Anzeige

    Powerstation Test
    hi,
    im post vom 23.09.2007, 19:09 hab ich eine angepasste version der AN311 angehängt!

    MfG Martin

  2. #22
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Danke Martin, besonders danke für die schnelle Antwort, das hatte ich gesehen - ich hatte die twi_master.h bei mir referenziert (#include "TWI_Master.h"), trotzdem:

    Code:
    Build started 21.3.2008 at 15:09:03
    avr-gcc.exe  -mmcu=atmega168 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT DME_I2Cm-1.o -MF dep/DME_I2Cm-1.o.d  -c  ../DME_I2Cm-1.c
    In file included from ../TWI_Master-modif.c:30,
                     from ../DME_I2Cm-1.c:127:
    ../TWI_Master.h:39: error: redefinition of 'union TWI_statusReg'
    ../DME_I2Cm-1.c:158: warning: return type of 'main' is not 'int'
    ../DME_I2Cm-1.c: In function 'main':
    ../DME_I2Cm-1.c:171: warning: implicit declaration of function '__enable_interrupt'
    ../DME_I2Cm-1.c:283: warning: implicit declaration of function '__no_operation'
    make: *** [DME_I2Cm-1.o] Error 1
    Build failed with 1 errors and 3 warnings...
    wobei der Fehler hier auftritt:
    Code:
    ****************************************************************************/
    
    union TWI_statusReg                       // Status byte holding flags.
    {
        unsigned char all;
        struct
        {
            unsigned char lastTransOK:1;      
            unsigned char unusedBits:7;
        };
    };
    
    extern union TWI_statusReg TWI_statusReg;
    
    /****************************************************************************
    Aber ich bin gerade dran mit der library von PFleury - da habe ich bisher für den Master (m)einen ersten Erfolg. Da wird zwar im Beispiel erstmal ein Eprom beschrieben, aber die Änderung werd ich wohl hinkriegen. Jedenfalls schön, dass ich Deinen Hinweis habe - so etwas hilft ja immer.

    Danke, schöne Feiertage . .
    Ciao sagt der JoeamBerg

  3. #23
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.11.2006
    Ort
    Geislingen a. d. Steige
    Alter
    32
    Beiträge
    344
    Hi,
    hast du die *.c in das makefile eingebunden?

    Martin

  4. #24
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Hallo, martin,

    hmmmm - das makefile ist (bei meinen bisherigen C Programmen, meine C-Erfahrung ist etwa drei, vier Monate alt, aber es gibt das eine oder andere lauffähige Controllerprogramm von mir) etwas, das der Compiler "hervorzaubert" - sprich - ich bin darin total unbewandert. Das gehört (auch noch) zu den Dingen die ich nicht kann.

    Sprich - ich habe am makefile GARNIX gemacht.
    Code:
    ###############################################################################
    # Makefile for the project test_I2Cs-1
    ###############################################################################
    
    ## General Flags
    PROJECT = test_I2Cs-1
    MCU = atmega168
    TARGET = test_I2Cs-1.elf
    CC = avr-gcc.exe
    
    ## Options common to compile, link and assembly rules
    COMMON = -mmcu=$(MCU)
    
    ## Compile options common for all C compilation units.
    CFLAGS = $(COMMON)
    CFLAGS += -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
    CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d 
    
    ## Assembly specific flags
    ASMFLAGS = $(COMMON)
    ASMFLAGS += $(CFLAGS)
    ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
    
    ## Linker flags
    LDFLAGS = $(COMMON)
    LDFLAGS +=  -Wl,-Map=test_I2Cs-1.map
    
    
    ## Intel Hex file production flags
    HEX_FLASH_FLAGS = -R .eeprom
    
    HEX_EEPROM_FLAGS = -j .eeprom
    HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
    HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
    
    
    ## Objects that must be built in order to link
    OBJECTS = test_I2Cs-1.o 
    
    ## Objects explicitly added by the user
    LINKONLYOBJECTS = 
    
    ## Build
    all: $(TARGET) test_I2Cs-1.hex test_I2Cs-1.eep test_I2Cs-1.lss size
    
    ## Compile
    test_I2Cs-1.o: ../test_I2Cs-1.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    ##Link
    $(TARGET): $(OBJECTS)
    	 $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
    
    %.hex: $(TARGET)
    	avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@
    
    %.eep: $(TARGET)
    	-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
    
    %.lss: $(TARGET)
    	avr-objdump -h -S $< > $@
    
    size: ${TARGET}
    	@echo
    	@avr-size -C --mcu=${MCU} ${TARGET}
    
    ## Clean target
    .PHONY: clean
    clean:
    	-rm -rf $(OBJECTS) test_I2Cs-1.elf dep/* test_I2Cs-1.hex test_I2Cs-1.eep test_I2Cs-1.lss test_I2Cs-1.map
    
    
    ## Other dependencies
    -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
    Leider. Ich habe etwas gepfuscht und das "TWI_Slave.c" als "#include" eingesetzt. Da liegt wohl ein Hund begraben. Und jetzt kommt bei (m)/Deinem Slave-programm wieder dieser error: "../TWI_slave.h:35: error: redefinition of 'union TWI_statusReg' ".
    Code:
    Build started 21.3.2008 at 17:27:18
    avr-gcc.exe  -mmcu=atmega168 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test_I2Cs-1.o -MF dep/test_I2Cs-1.o.d  -c  ../test_I2Cs-1.c
    In file included from ../TWI_Slave.c:27,
                     from ../test_I2Cs-1.c:32:
    ../TWI_slave.h:35: error: redefinition of 'union TWI_statusReg'
    ../test_I2Cs-1.c:53: warning: return type of 'main' is not 'int'
    ../test_I2Cs-1.c: In function 'main':
    ../test_I2Cs-1.c:67: warning: implicit declaration of function '__enable_interrupt'
    ../test_I2Cs-1.c:114: warning: implicit declaration of function '__no_operation'
    ../test_I2Cs-1.c:55: warning: unused variable 'temp'
    make: *** [test_I2Cs-1.o] Error 1
    Build failed with 1 errors and 4 warnings...
    Ich muss mich wohl mit dem makefile beschäftigen .
    Ciao sagt der JoeamBerg

  5. #25
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.11.2006
    Ort
    Geislingen a. d. Steige
    Alter
    32
    Beiträge
    344
    hi,
    wenn ich richtig gelesen habe arbeitest du mit AVR-Studio.
    In AVR-Studio brauchst du dich NICHT mit dem Makefiles herumschlagen, da das alles das AVR-Studio macht.

    So wen du jetzt eine lib einbinden willst musst du das *.c file ins makefile einbinden und die *.h datei in dein Programm includen.

    Das *.c file bindet man in AVR-Studio so ein:
    Du machst einen rechtsklick links im projektbaum auf "Source Files" dann machst du "Add existing source files" da wählst du dann dein *.c file aus.

    MfG Martin

  6. #26
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Hallo Martin,
    Zitat Zitat von MartinFunk
    ... In AVR-Studio brauchst du dich NICHT mit dem Makefiles herumschlagen, da das alles das AVR-Studio macht... Das *.c file bindet man in AVR-Studio so ein:
    Du machst einen rechtsklick ...
    Mal ein ganz herzliches Danke für Deinen Hinweis, den ich im Moment gelesen hatte. Du hast völlig recht, ich habe AVRStudio, mit C beschäftige ich mich erst seit etwa vier Monaten - und es ist Cäh. Ich hatte zum Einbinden der *.c´s schon ne ganze Weile die SuFu vergeblich bemüht. Beim Lesen Deines posts fiel mir ein Stein vom Herzen - weil ich so präzise Hinweise liebe, die im Prinzip sagen: " Du musst fast nix tun ... ". Im Moment bin ich (Feiertagsfrieden im Wohnzimmer - nix PC rumstehen) am Notebook, aber ich werde das bald probieren. Das #include..." mit den *.h-files kenne ich schon, danke.

    Nochmal herzlichen Dank
    Ciao sagt der JoeamBerg

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

LiFePO4 Speicher Test