- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Binär - Hex - Decimal

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.03.2005
    Ort
    Villach
    Alter
    33
    Beiträge
    995
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi,
    Ich habs geschafft. DEr Fehler war eine fehlende Klammer. Das make.exe geht noch immer nicht aber so wie ichs jetzt hab gehts auch. Aber wie könnte ich Ponyprog aus WinAvr heraus zum proggen bedienen?

    Hier der Code:
    Code:
    /*Taster und LED 2 */
       
    #include <avr/io.h>
    //#include <avr/iom16.h>
    #include <stdint.h>
    
    #define TRUE 1
    #define FALSE 0
    
    
    void init(void)      								// Initialisierung
    {
    	DDRB |= ( (1<<PB5) | (1<<PB6) | (1<<PB7) );
    	PORTB &= ~(1<<PB5);
    	PORTB &= ~(1<<PB6);
    }
    
    int main(void) 
    {
    init();
    	
    	
    	while (1)
    		{
    			
    							
    			if ( !(PINB & (1<<PINB2)))   // Hie hatte ich eine Klammer vergessen (-;
    				
    			{ 
    				//LEDs einschalten
    				PORTB |= (1<<PB6);
    				PORTB &= ~(1<<PB5);
    			}
    			else
    			{
    			PORTB |= (1<<PB5);
    			PORTB &= ~(1<<PB6);
    			}
    		}
    			
    	return 0;
    		
    }
    Das Hex hab ich jetzt auch kapiert. Danke.

    MfG
    Superhirn

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Was meinst du mit "aus WinAVR heraus"? Welche Oberfläche verwendest du denn? Den pn (Programmers Notepad)? Pony kannst du skripten, und z.b. aus pn aus aufrufen bzw. eine make-Regel machen, die dir ein reset macht oder das Programm brennt.

    Makefile: Hier wird das Skript aufgerufen, mit "make burn". Evtl musst du das an dein Makefie anpassen bzw. Pfade ändern.
    Übrigens solltest du in Pfadnamen NIE Leerzeichen verwenden und auch KEINE Umlaute/Ligaturen!
    Code:
    PRG                 = das_programm
    MCU_TARGET    = atmega8
    BURN_SCRIPT    = /d/avr/bin/burn.sh
    
    .PHONY: burn
    
    burn: 
    	sh $(BURN_SCRIPT) $(PRG).hex $(MCU_TARGET)
    burn.sh ist ein Shell-Skript, das die Aufgabe übernimmt. Die Pfade musst du natürlich anpassen und evtl auch die Pony-Befehle, wenn du was anderes nachen willst z.B. auch ein Verify. Es wäre auch möglich, die temporäre Datei direkt im Makefiel zu erzeugen, aber das ist nur sehr schlecht lesbar. Die Pony-Kommandos findest du in der Pony-Doku.
    Code:
    #!/bin/sh
    
    burn=e:/temp/burn-tmp.e2s
    pony=e:/PonyProg2000/PONYPROG2000.EXE
    
    case $2 in
    	at90s2313)
    		target=AT90S2313
    		;;
    	atmega8)
    		target=ATmega8
    		;;
    	at90s8515)
    		target=AT90S8515
    		;;
    	*)
    		echo !!! Unknown Target $2;
    		exit 1;
    		;;
    esac
    
    portion=ALL
    
    echo Burning $1 for $target
    rm -rf $burn
    
    echo "# generated file" > $burn
    
    EEPROM_FILE=`basename $1 .hex`_eeprom.hex
    
    #------ START --------
    #Programming sequence
    echo "SELECTDEVICE $target" >> $burn
    echo "call \"echo Clearing buffer...\"" >> $burn
    echo "CLEARBUFFER" >> $burn
    echo "call \"echo Loading PROG from $1...\"" >> $burn
    echo "LOAD-PROG $1" >> $burn
    echo "call \"echo Loading DATA from $EEPROM_FILE...\"" >> $burn
    echo "LOAD-DATA $EEPROM_FILE" >> $burn
    # echo "PAUSE \"Reinstöpseln, anschalten, und los geht's!\"" >> $burn
    echo "call \"echo Writing $portion to $target...\"" >> $burn
    echo "WRITE-$portion" >> $burn
    	
    $pony $burn
    Disclaimer: none. Sue me.

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.03.2005
    Ort
    Villach
    Alter
    33
    Beiträge
    995
    Makefile: Hier wird das Skript aufgerufen, mit "make burn". Evtl musst du das an dein Makefie anpassen bzw. Pfade ändern.
    Übrigens solltest du in Pfadnamen NIE Leerzeichen verwenden und auch KEINE Umlaute/Ligaturen!
    Das ohne leerzeichen wird ja Unmöglich werden. Schon mein Benutzername Hat ein leerzeichen und alle anderen ordner auch.

    Pony Wollte ich aus PN (was gibt es sons?) heraus benutzen. ich werde es bald testen.

    Mfg
    Thomas

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Leerzeichen ist je nach Umgebung Stringende, so auch für make bzw in einem Makefile, etwa da wo du SRC definierst. Je nach Umgebung hilft Quoten in "" oder '' oder escapen mit \
    Spätestens bei mehrfach verschachtelten Quotes wird's aber etwas unübersichtlich. Wenn die Datei zB als Übergabeparameter aus deinem PN kommt, nimmt das ja den Dateinamen "as is".
    Was da genau rumzuzwiebeln ist kann ich jetzt nicht sagen, weil ich keine Leerzeichen/Umlaute/Ligaturen oder * oder $ in Namen verwende.

    Prinzipiell geht jeder Texteditor, vorzugsweise einer, der Sytax-Highlight für C kann, minimale Ansprücke an eine Prjektverwaltung erfüllt und Skripte ausführen bzw Shell-Kommandos absetzen kann wie PN oder TextPad.
    Natürlich geht auch AVR-Studio, aber das ist recht fett und Geschmackssache -- wie die Leichtgewichte auch.
    Disclaimer: none. Sue me.

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.03.2005
    Ort
    Villach
    Alter
    33
    Beiträge
    995
    ich hab jetzt eure makefile verwendet:
    Code:
    MCU = atmega16
    
    #Tagret einstellen
    TARGET = taster_und_led
    #Sourcefiles
    SRC = $(TARGET).c
    
    SRC +=
    
    FORMAT = ihex
    
    #Assemblerfiles
    ASRC=
    
    OPT = s
    
    #Compilerflags
    CFLAGS = -g -O$(OPT) \
       -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
       -Wall -Wstrict-prototypes \
       -Wa,-ahlms=$(<:.c=.lst)
    
    #Assemblerflags
    ASFLAGS = -Wa,-ahlms=$(<:.S=.lst),-gstabs
    
    #Linkerflags
    
    LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
    
    # Additional libraries
    #
    # Minimalistic printf version
    #LDFLAGS += -Wl,-u,vfprintf -lprintf_min
    #
    # Floating point printf version (requires -lm below)
    #LDFLAGS +=  -Wl,-u,vfprintf -lprintf_flt
    #
    # -lm = math library
    LDFLAGS += -lm
    
    # Define programs and commands.
    SHELL = sh
    
    CC = avr-gcc
    
    OBJCOPY = avr-objcopy
    OBJDUMP = avr-objdump
    SIZE = avr-size
    
    REMOVE = rm -f
    COPY = cp
    
    HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
    ELFSIZE = $(SIZE) -A $(TARGET).elf
    
    FINISH = echo Errors: none
    BEGIN = echo -------- begin --------
    END = echo --------  end  --------
    
    
    
    
    # Define all object files.
    OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
    
    # Define all listing files.
    LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
    
    # Combine all necessary flags and optional flags.
    # Add target processor to flags.
    ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
    ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
    
    
    
    # Default target.
    all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \
       $(TARGET).lss sizeafter finished end
    
    
    # Eye candy.
    # AVR Studio 3.x does not check make's exit code but relies on
    # the following magic strings to be generated by the compile job.
    begin:
       @$(BEGIN)
    
    finished:
       @$(FINISH)
    
    end:
       @$(END)
    
    
    # Display size of file.
    sizebefore:
       @if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE);fi
    
    sizeafter:
       @if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE);fi
    
    
    
    # Display compiler version information.
    gccversion :
       $(CC) --version
    
    
    
    
    # Convert ELF to COFF for use in debugging / simulating in
    # AVR Studio or VMLAB.
    COFFCONVERT=$(OBJCOPY) --debugging \
       --change-section-address .data-0x800000 \
       --change-section-address .bss-0x800000 \
       --change-section-address .noinit-0x800000 \
       --change-section-address .eeprom-0x810000
    
    
    coff: $(TARGET).elf
       $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
    
    
    extcoff: $(TARGET).elf
       $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
    
    # Create final output files (.hex, .eep) from ELF output file.
    %.hex: %.elf
       $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
    
    %.eep: %.elf
       -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
       --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
    
    # Create extended listing file from ELF output file.
    %.lss: %.elf
       $(OBJDUMP) -h -S $< > $@
    
    
    
    # Link: create ELF output file from object files.
    .SECONDARY : $(TARGET).elf
    .PRECIOUS : $(OBJ)
    %.elf: $(OBJ)
       $(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
    
    
    # Compile: create object files from C source files.
    %.o : %.c
       $(CC) -c $(ALL_CFLAGS) $< -o $@
    
    
    # Compile: create assembler files from C source files.
    %.s : %.c
       $(CC) -S $(ALL_CFLAGS) $< -o $@
    
    
    # Assemble: create object files from assembler source files.
    %.o : %.S
       $(CC) -c $(ALL_ASFLAGS) $< -o $@
    
    
    
    
    
    
    # Target: clean project.
    clean: begin clean_list finished end
    
    clean_list :
       $(REMOVE) $(TARGET).hex
       $(REMOVE) $(TARGET).eep
       $(REMOVE) $(TARGET).obj
       $(REMOVE) $(TARGET).cof
       $(REMOVE) $(TARGET).elf
       $(REMOVE) $(TARGET).map
       $(REMOVE) $(TARGET).obj
       $(REMOVE) $(TARGET).a90
       $(REMOVE) $(TARGET).sym
       $(REMOVE) $(TARGET).lnk
       $(REMOVE) $(TARGET).lss
       $(REMOVE) $(OBJ)
       $(REMOVE) $(LST)
       $(REMOVE) $(SRC:.c=.s)
       $(REMOVE) $(SRC:.c=.d)
    
    
    # Automatically generate C source code dependencies.
    # (Code originally taken from the GNU make user manual and modified
    # (See README.txt Credits).)
    #
    # Note that this will work with sh (bash) and sed that is shipped with WinAVR
    # (see the SHELL variable defined above).
    # This may not work with other shells or other seds.
    #
    %.d: %.c
       set -e; $(CC) -MM $(ALL_CFLAGS) $< \
       | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \
       [ -s $@ ] || rm -f $@
    
    
    # Remove the '-' if you want to see the dependency files generated.
    -include $(SRC:.c=.d)
    
    
    
    # Listing of phony targets.
    .PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \
       clean clean_list program
    
    #
    Fehler: (Von make.exe angezeigt)
    Code:
    Makefile:86: *** missing separator.  Stop.
    Könntet ihr mir bitte eine komplette makefile mit Ponyprog senden da ich ja noch nicht so viel ahnung habe.
    Daten:
    Mega16
    14,7456MHz
    led_taster_2.c

    Danke
    Thomas

    PS: mit avr-gcc gehts. Braucht das keine makefile, oder. Dafür muss halt als in den parametern stehen und Ponyprog brauch ich auch noch extra.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress