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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.