Arduino Uno C Programieren mit Atmel Studio

Gast #3726455
Lesenswert?

Du programmierst deinen Arduino immer in C/C++. Auch in der Arduino IDE 
kannst du weitestgehend auf die Arduino Bibliothekt verzichten. 
Lediglich die Sache mit setup() und loop() ist fest vorgegeben.

Ansonsten guck dir die Arduino Extension für das Atmel Studio an. Oder 
bau dir einen Post-Build Prozess ein, der automatisch nach jedem 
compilieren avrdude aufruft, um das Programm zu übertragen oder bastel 
dir eine Batch Datei, um das manuell zu machen.
Gast #3726771
Lesenswert?

Du brauchst keinen Programmer bestellen, sondern mit dem Bootloader vom 
Arduino das Programm hinunterladen-

Das Buch

 Powerprojekte mit Arduino und C
ISBN-10: 3645651314

zeigt dafür super Beispiele. Ich halte es für das beste yC Buch.
#3727816
Lesenswert?

Anton B. schrieb:
> Hubert G. schrieb:
>> http://xloader.russemotto.com/
>
> Hat irgendwer erfahrungen mit dem programm?
> Funktioniert das gut oder gibt es irgentwelche bugs?
>
> das mit den external tools in atmel studio hab ich schon ausprobiert nur
> kommt bei mir ein fehler:
>
>  stk500_getsync(): not in sync: resp=0x00

Dir ist klar, dass Du den Arduino-Bootloader im AVR brauchst?

Ich kannte den Xloader bis gestern auch nicht und habe ihn gestern noch 
ausprobiert. Allerdings klappte der Upload zunächst nicht.

Was ich nicht berücksichtigt hatte: Ich hatte mein Arduino-Board (UNO 
R3) vorher mittels des ISP-Headers direkt aus Studio geflasht und dabei 
den Bootloader zerschossen. Xloader ging deshalb nicht und die 
Original-Arduino Software ging natürlich auch nicht mehr.

Erst nachdem ich den Bootloader (optiboot) wieder geflasht hatte, 
funktionierte der Xloader. Deshalb: Daumen hoch für das Programm...

Gruß,
Thomas
OP #3728033
Lesenswert?

Andy B. schrieb:
> Anton B. schrieb:
>> das mit den external tools in atmel studio hab ich schon ausprobiert nur
>> kommt bei mir ein fehler:
>>
>>  stk500_getsync(): not in sync: resp=0x00
>
> Welchen Arduino hast du und was hast du bei External Tools in Arguments
> stehen?




Commands
C:\Users\Administrator\Desktop\avrdude\avrdude.exe

Arguments
-CC:\Users\Administrator\Desktop\avrdude\avrdude.conf -patmega328p 
-carduino -P\\.\COM4 -b160000 - 
Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i


avrdude.exe und avrdude.conf hab ich aus dem Arduino Ordner.
OP #3728044
Lesenswert?

Thomas T. schrieb:
> Anton B. schrieb:
>> Hubert G. schrieb:
>>> http://xloader.russemotto.com/
>>
>> Hat irgendwer erfahrungen mit dem programm?
>> Funktioniert das gut oder gibt es irgentwelche bugs?
>>
>> das mit den external tools in atmel studio hab ich schon ausprobiert nur
>> kommt bei mir ein fehler:
>>
>>  stk500_getsync(): not in sync: resp=0x00
>
> Dir ist klar, dass Du den Arduino-Bootloader im AVR brauchst?
>
> Ich kannte den Xloader bis gestern auch nicht und habe ihn gestern noch
> ausprobiert. Allerdings klappte der Upload zunächst nicht.
>
> Was ich nicht berücksichtigt hatte: Ich hatte mein Arduino-Board (UNO
> R3) vorher mittels des ISP-Headers direkt aus Studio geflasht und dabei
> den Bootloader zerschossen. Xloader ging deshalb nicht und die
> Original-Arduino Software ging natürlich auch nicht mehr.
>
> Erst nachdem ich den Bootloader (optiboot) wieder geflasht hatte,
> funktionierte der Xloader. Deshalb: Daumen hoch für das Programm...
>
> Gruß,
> Thomas


ich habe den XLoader auch ausprobiert. Auf jedenfall blink die LED wenn 
ich es Uploade, aber es kommt nicht der Gewünschte effekt.

kann es sein das es an meinem C Code liegt?

#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 16000000UL     /* Quarz mit 16 Mhz */
#endif
#include <util/delay.h>


int main()
{
  DDRB = ( 1 << DDB0 ) | ( 1 << DDB5 );

    while(1)
    {
    PORTB |= ( 1 << PB0 );
    _delay_ms(1000);
    PORTB |= ( 1 << PB5 );
    _delay_ms(100);

    }
  return 0;
}
OP #3728077
Lesenswert?

Okay bei diesem Code:
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 16000000UL     /* Quarz mit 16 Mhz */
#endif
#include <util/delay.h>


int main()
{
  DDRB = ( 1 << DDB0 ) | ( 1 << DDB5 );

    while(1)
    {
    PORTB |= ( 1 << PB0 );
    _delay_ms(1000);
    PORTB |= ( 1 << PB5 );
    _delay_ms(1000);
    PORTB |= ( 0 << PB0 );
    _delay_ms(1000);
    PORTB |= ( 0 << PB5 );
    _delay_ms(1000);

    }
  return 0;
}

Passiert dass:

Die LED an PB0 geht sofort an, und kurz darauf die LED an PB5. Dann 
passiert nichts mehr..

eins hat es gebracht, die LEDs laufen jetzt auf voller helligkeit.
OP #3728080
Lesenswert?

>> Welchen Arduino hast du und was hast du bei External Tools in Arguments
>> stehen?
>
>
>
>
> Commands
> C:\Users\Administrator\Desktop\avrdude\avrdude.exe
>
> Arguments
> -CC:\Users\Administrator\Desktop\avrdude\avrdude.conf -patmega328p
> -carduino -P\\.\COM4 -b160000 -
> Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
>
> avrdude.exe und avrdude.conf hab ich aus dem Arduino Ordner.


Ach ja ich hab den Arduino UNO
OP #3728090
Lesenswert?

Hubert G. schrieb:
> So wird es blinken.
>
1
>  PORTB |= ( 1 << PB0 );
2
>     _delay_ms(1000);
3
>     PORTB |= ( 1 << PB5 );
4
>     _delay_ms(1000);
5
>     PORTB &=~ ( 1 << PB0 );
6
>     _delay_ms(1000);
7
>     PORTB &=~ ( 1 << PB5 );
8
>     _delay_ms(1000);
9
>
> Du solltest mal das AVR-Tutorial lesen.

Oh shit, dass hab ich überlesen das bits auf LOW setzten analog 
funktioniert.
Kurz geändert, und.... Yeah es läuft!

Danke schön!!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren