Usando Atmel Studio 7 para programar Arduino Uno

1

Me gustaría usar AS7 IDE para programar la placa Arduino, para iniciar Im usando Arduino UNO con el chip ATMEGA328P-PU. Estoy usando Windows 10 profesional

Primero utilicé el IDE de Arduino para ejecutar / confirmar este sencillo programa que parpadea el LED naranja (pin 13) en un patrón de Fibonacci hasta Fib 100. El programa se carga & Funciona bien usando Arduino IDE.

Código de Arduino:

void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
 int i = 0; 
 int n =100; 
 int t1 = 0; 
 int t2 = 1; 
 int numberOnOff; 
 for ( i = 1; i<=n; i++)
 {
  numberOnOff = t1 + t2; 
  t1 = t2; 
  t2 = numberOnOff; 
  delay(3000);
  int counter = 0; 
  while (counter <  numberOnOff)
  {
    onOff(); 
    counter++; 
  }
 }

}


void onOff()
{
 digitalWrite(13,HIGH);
 delay(1000);
 digitalWrite(13,LOW);
 delay(1000);
}

Luego migré a AS7 IDE & usé este video tutorial: enlace

paso 1) Copié el comando de carga de Arduino & formateado:

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.15.0_x86__mdqgnx93n4wtt\hardware\tools\avr\bin\avrdude.exe

-C"C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.15.0_x86__mdqgnx93n4wtt\hardware\tools\avr\etc\avrdude.conf" -v -patmega328p -carduino -PCOM6 -b115200 -D -Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i 

paso 2) Navegué al menú "Herramientas" de AS7, luego a "Herramientas externas", luego creé una herramienta de construcción titulada usando rutas copiadas desde el paso 1 "Arduino_via_bootloader":

Establecí el valor de Comando =

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.15.0_x86__mdqgnx93n4wtt\hardware\tools\avr\bin\avrdude.exe

Y el valor de Arguments =

 -C"C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.15.0_x86__mdqgnx93n4wtt\hardware\tools\avr\etc\avrdude.conf" -v -patmega328p -carduino -PCOM6 -b115200 -D -Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i 

HazclicenAceptar&aplicar.

paso3)LuegomodifiquémicódigoC(main.c):

/**Arduino2.c**Created:11/6/20185:48:19PM*Author:cyber101*/#defineF_CPU16000000#include<avr/io.h>#include<util/delay.h>voidloop();voidonOff();intmain(void){/*Replacewithyourapplicationcode*/while(1){loop();}}voidloop(){//putyourmaincodehere,torunrepeatedly:inti=0;intn=100;intt1=0;intt2=1;intnumberOnOff;for(i=1;i<=n;i++){numberOnOff=t1+t2;t1=t2;t2=numberOnOff*3;_delay_ms(3000);intcounter=0;while(counter<numberOnOff){onOff();counter++;}}}voidonOff(){/*Insertapplicationcodehere,aftertheboardhasbeeninitialized.*/PORTB|=0B00100000;_delay_ms(1000);PORTB&=0B11011111;_delay_ms(1000);}

paso4)Construyoelproyecto&Tieneéxito:

Doneexecutingtask"RunCompilerTask".
    Using "RunOutputFileVerifyTask" task from assembly "C:\Program Files (x86)\Atmel\Studio.0\Extensions\Application\AvrGCC.dll".
    Task "RunOutputFileVerifyTask"
                Program Memory Usage    :   308 bytes   0.9 % Full
                Data Memory Usage       :   0 bytes   0.0 % Full
    Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "Arduino2.cproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Studio.0\Vs\Avr.common.targets" from project "c:\users\anaim\Documents\Atmel Studio.0\Arduino2\Arduino2\Arduino2.cproj" (entry point):
Done building target "Build" in project "Arduino2.cproj".
Done building project "Arduino2.cproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

paso 5) Finalmente, navegué al menú "Herramientas" & Seleccioné mi compilación personalizada "Arduino_via_bootloader". Sin embargo, no pasa nada, la consola de salida AS7 está vacía para los mensajes, no hay errores, no hay comentarios? Y el tablero no está parpadeando. ¿Cómo puede arreglar este proceso de compilación?

Gracias un millón.

    
pregunta cyber101

1 respuesta

0

Utilizo con éxito un enfoque diferente para hacer que AtmelStudio programe un dispositivo con un cargador de arranque, y es usar la "Herramienta de programación personalizada".

En la ventana "Explorador de soluciones", haga clic derecho en su proyecto y seleccione "Propiedades". Esto debería abrir una pestaña con varias configuraciones como Crear, Cadena de herramientas, etc. En esta pestaña encontrará una sección llamada "Herramienta" como se muestra a continuación.

Hayunmenúdesplegableenlaseccióndelaherramientallamada"Depurador / programador seleccionado", y desde aquí puede seleccionar "Herramienta de programación personalizada" como opción.

Estodeberíamostrarunarchivodetextollamado"Herramienta de programación personalizada - > Comando:", en el que puede ingresar un comando / programa para ejecutarse.

Ingreseelsiguientecomando:

"<path\to>\avrdudeStdout.bat" "<path\to\avrdude>\bin\avrdude.exe" "<path\to\avrdude>\etc\avrdude.conf" "COM6" "arduino" "115200" "$(OutputDirectory)\$(OutputFileName).hex" $(avrdevice)

Debes cambiar el comando para que se ajuste a tus necesidades. Se debe cambiar lo siguiente:

  • "<path\to>\avrdudeStdout.bat" : la ubicación del archivo por lotes que se explica más adelante en esta respuesta
  • "<path\to\avrdude>\bin\avrdude.exe" : la ubicación de su avrdude.exe
  • "<path\to\avrdude>\etc\avrdude.conf" : la ubicación de su avrdude.conf
  • "COM6" : qué puerto COM está utilizando
  • "arduino" : el programador que estás utilizando (por ejemplo, "arduino" para el gestor de arranque Arduino
  • "115200" : la velocidad en baudios que se debe utilizar

No cambie nada más, especialmente las cosas en $() - ¡AtmelStudio las calcula automáticamente!

Finalmente, deberá guardar lo siguiente en un archivo llamado avrdudeStdout.bat , que puede poner en su directorio de proyecto AS7, o con el archivo avrdude.exe.

@echo off

set avrdude=%~1
set conf=%~2
set port=%~3
set prog=%~4
set baud=%~5
set hexfile=%~6
set device=%~7

echo Running AVRDude With Command:
echo "%avrdude%" -C"%conf%" -p%device% -c%prog% -b%baud% -D -v -Uflash:w:"%hexfile%":i -P%port% 2>&1

"%avrdude%" -C"%conf%" -p%device% -c%prog% -b%baud% -D -v -Uflash:w:"%hexfile%":i -P%port% 2>&1

El archivo por lotes es necesario para evitar que AS7 diga que hubo un error de programación ( vea aquí si desea más detalles sobre por qué).

Una vez que se configura la herramienta de programación personalizada, programar su Arduino es un caso simple de presionar el botón verde "Reproducir" en la barra de herramientas principal (o desde el menú, seleccione "Debug- > Start Without Debugging (Ctrl + Alt + F5) ".

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas