PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einsteigerhilfe mit AVR und dem Arduino Lernpaket



Digital-Ghost
01.05.2012, 14:29
Hallo zusammen ;D
Da ich mir damals das Arduiono Lernpaket von Franzis gekauft habe und es ohne ISP Probleme gab habe ich mir das AVRISP-MKII zugelegt.
Jetzt habe ich mir das AVR Studio 4 heruntergeladen und möchte gerne testen obs funktioniert.
Die Treiber sind alle aktuell und scheinen zu laufen.
Jetzt habe ich eine kleine Bitte...
Da die Programmierung jetzt anders erfolgt als mit dem Lernpaket frage ich euch ob mir einer ein kleines C Programm geben kann was nur die integrierte Leuchte auf dem Arduino-Board zum leuchten bringt damit ich alles mal testen kann.

http://www.amazon.de/Lernpaket-Mikrocontroller-Technik-Arduino-Freeduino-Bauteilen/dp/3645650644/ref=sr_1_3?ie=UTF8&qid=1335878918&sr=8-3

Es ist ein Atmega-168 verbaut.

Danke für eure Hilfe (:

Kampi
01.05.2012, 15:31
Hi,

Wenn es aufgebaut ist wie das Arduino Duemlianove sollte das funktionieren. Sonst wäre ein Schaltplan nicht schlecht.
Dieses Programm schaltet die LED an PinB5 ein:


/*
* AVRGCC3.c
*
* Created: 01.05.2012 15:57:49
* Author: Daniel
*/

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{

DDRB = 0xFF; // Kompletter Port C auf Ausgang

while(1)
{
PORTB = (1<<PINB5);
}
}


Und dieses Programm lässt die LED blinken



/*
* AVRGCC3.c
*
* Created: 01.05.2012 15:57:49
* Author: Daniel
*/

#ifndef F_CPU
#define F_CPU 16000000UL
#endif


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{

DDRB = 0xFF;

while(1)
{
PORTB ^= (1<<PINB5);
_delay_ms(1000);
}
}

Digital-Ghost
01.05.2012, 16:32
Danke hat super funktioniert (:
Kann mir einer noch ein gutes Assemblertutorial zeigen (oder Buch) wie man die Programmierung von Grund auf lernt?
Am besten eins wo die Beispiele zum meinem Microcontroller passen ^^

Kampi
01.05.2012, 16:48
Die Assemblerbefehle sind für die AVRs alle gleich. Aber für genauere Infos musst du ins Datenblatt schauen. Dort sind alle Befehle aufgelistet.
Ein Tutorial hast du hier:

http://www.avr-asm-tutorial.net/avr_de/index.html

Das Datenblatt hast du hier:

http://www.atmel.com/Images/doc2545.pdf

Wenn du dann mal auf Seite 347 schaust, findest du einen Bereich der "Instruction set Summary" heißt (die Kategorie heißt in fast allen Datenblättern so).
Dort sind alle Befehle aufgelistet die der Controller versteht.
Von daher brauchst du keine Programme die für deinen Controller zugeschnitten sind. Da der Grundaufbau der AVRs immer gleich ist kannst du quasi ein Programm für alle schreiben (vorrausgesetzt du verwendest keinen ADC usw. Bei der Peripherie musst du unterschiede zwischen den Chips berücksichtigen).

Digital-Ghost
02.05.2012, 19:11
Gut das lese ich mir die Tage mal durch.
Eine (vielleicht etwas größere) Frage habe ich noch.
Und zwar habe ich auf einem Laptop Debian drauf. Da habe ich mir nun "gcc-avr" "avr-gcc" "avr-libc" und "avrdude" heruntergeladen.
Nun möchte ich den oben genannten Quellcode kompilieren doch ich brauche anscheinen eine Makefile dafür.
Gibt es dafür eine Art Vorlage?
Weil ich komme da momentan nicht weiter...

Kampi
02.05.2012, 19:48
Gibt es für Linux keine AVR-Studio Version die du verwenden kannst?

Digital-Ghost
02.05.2012, 20:17
Da ist ein ganz alter Laptop da läuft nur Debian richtig drauf also ohne GUI.

Kampi
02.05.2012, 20:28
Da ist ein ganz alter Laptop da läuft nur Debian richtig drauf also ohne GUI.

Uff....ok da kann ich dir dann nicht weiterhelfen :)
Hab leider keine Ahnung von AVRDude usw....

Digital-Ghost
03.05.2012, 20:55
Kann mir sonst keiner weiterhelfen?

Digital-Ghost
03.05.2012, 21:11
Also ich habe bereits erfolgreich mein Programm mit dem AVRStudio kompiliert und übertragen.
Jetzt habe ich im Projektordner diese Makefile verwendet (die funktioniert)
Ist diese Makefile Plattformunabhängig also kann ich die für den gcc-avr unter Debian verwenden?
Weiß das einer? :(



################################################## ##############################
# Automatically-generated file. Do not edit!
################################################## ##############################

SHELL := cmd.exe
RM := rm -rf

USER_OBJS :=

LIBS :=
PROJ :=

O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=

# Every subdirectory with source files must be described here
SUBDIRS :=


# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../Leuchte.c


PREPROCESSING_SRCS +=


ASM_SRCS +=


OBJS += \
Leuchte.o


OBJS_AS_ARGS += \
Leuchte.o


C_DEPS += \
Leuchte.d


C_DEPS_AS_ARGS += \
Leuchte.d


OUTPUT_FILE_PATH +=Leuchte.elf

OUTPUT_FILE_PATH_AS_ARGS +=Leuchte.elf

ADDITIONAL_DEPENDENCIES:=

OUTPUT_FILE_DEP:= ./makedep.mk

# AVR32/GNU C Compiler



./%.o: .././%.c
@echo Building file: $<
@echo Invoking: AVR/GNU C Compiler
$(QUOTE)C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-gcc.exe$(QUOTE) -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -mmcu=atmega168 -o"$@" "$<"
@echo Finished building: $<



# AVR32/GNU Preprocessing Assembler



# AVR32/GNU Assembler




ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif

# Add inputs and outputs from these tool invocations to the build variables

# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)

$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP)
@echo Building target: $@
@echo Invoking: AVR/GNU C Linker
$(QUOTE)C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="Leuchte.map" -Wl,-lm -mmcu=atmega168
@echo Finished building target: $@
"C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "Leuchte.elf" "Leuchte.hex"
"C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "Leuchte.elf" "Leuchte.eep" || exit 0
"C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-objdump.exe" -h -S "Leuchte.elf" > "Leuchte.lss"
"C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-size.exe" -C --mcu=atmega168 "Leuchte.elf"





# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS)$(C_DEPS_AS_ARGS) $(EXECUTABLES)
rm -rf "Leuchte.hex" "Leuchte.lss" "Leuchte.eep" "Leuchte.map"

Kampi
03.05.2012, 21:18
Glaube nicht das es unabhängig ist weil wenn du dir das mal anschaust steht da schon:

$(QUOTE)C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\Atmel\AVRGCC\3.3.1.27\AVRToolchain\ bin\avr-gcc.e