Forum: Mikrocontroller und Digitale Elektronik Was beachten bei Umstieg AVR --> Arduino


von Adrian E. (ahsd)


Lesenswert?

Moin,

ich möchte aus Bequemlichkeit mal einen Arduino Nano verwenden, statt 
einen "nackten" AVR wie bisher zu programmieren. Ich möchte aber meine 
IDE weiter verwenden.

Mir ist noch nicht ganz klar was es jetzt bedeutet, einen Bootloader zu 
haben. Was muss ich beachten?

- Kann ich die TX/RX Pins verwenden, die auch zur Kommunikation mit dem 
USB Controller dienen?

- Brauche ich ein spezielles Makefile, oder kann ich mein Makefile 
verwenden, welches vorher mit C / Avrdude zusammen gut gearbeitet hat?

- Muss der Compiler irgendwie wissen, dass ein Bootloader vorhanden ist?

Ich habe den ATMega238P hiermit bereits zum Antworten bekommen:
1
 avrdude -p atmega328p -P /dev/ttyUSB0 -c arduino -b 57600


Danke im Voraus für Hilfe :)

von Chris K. (Gast)


Lesenswert?

Die Arduinos haben auch die ISP Anschlüsse nach außen geführt. Kannst 
den Arduino also ganz normal via AVR Debugger programmieren. Damit wird 
auch der Bootloader gelöscht. Den kann man bei Bedarf aber auch wieder 
mit dem AVR flashen.

von Adrian E. (ahsd)


Lesenswert?

Das ist mir bewusst. Mit Bequemlichkeit meinte ich gerade, dass ich 
keinen extra Programmer brauche :) Ich würde schon gerne den Bootloader 
verwenden.

: Bearbeitet durch User
von Chris K. (Gast)


Lesenswert?

Google --> Arduino Bootloader --> Adafruit

Just plug in the USB cable, then press the reset just before you start 
avrdude. If you need an avrdude tutorial, check out this page.

    Use -b 19200 to set the baud rate to 19200
    The device signature reads dont seem to work so you'll want to use 
-F
    The programmer type is avrisp
    The device type is -p m168
    The port is whatever the FTDI chip shows up as

von Adrian E. (ahsd)


Lesenswert?

Wie soll mir diese Antwort helfen?
Ich sagte doch bereits, dass avrdude erfolgreich mit dem Nano 
kommuniziert.

von Wolfgang (Gast)


Lesenswert?

Adrian E. schrieb:
> Ich sagte doch bereits, dass avrdude erfolgreich mit dem Nano
> kommuniziert.

Was erwartest du. Auf dem Nano Board sitzt ein ganz gewöhnlicher 
ATmega328, auf den jemand einen Bootloader draufgespielt hat, der sich 
(u.a.) über die Arduino IDE nutzen lässt, z.B. mit AVRdude.

Adrian E. schrieb:
> Ich möchte aber meine IDE weiter verwenden.

Wenn du ein bisschen konkreter sagen würdest, welche IDE du dein eigen 
nennst, wäre es einfacher, zu sagen, ob z.B. Visual Micro dir weiter 
helfen würde.

von machDoch (Gast)


Lesenswert?

Was willst du denn jetzt? Wenn Avrdude geht benutz es doch und fertig

von Adrian E. (ahsd)


Lesenswert?

Okay, meine konkreten Fragen werden einfach ignoriert. Zum Beispiel, ob 
ich genau so kompiliere, wie wenn ich keinen Bootloader verwende und per 
ISP auf den Chip schreibe. Ist ja mal wieder super Stimmung, hier im 
Forum.

Wolfgang schrieb:
> Wenn du ein bisschen konkreter sagen würdest, welche IDE du dein eigen
> nennst, wäre es einfacher, zu sagen, ob z.B. Visual Micro dir weiter
> helfen würde.

Ich verwende Geany mit avr-gcc und avrdude.

von Chris K. (Gast)


Lesenswert?

Ja, tust du. Frage beantwortet?

von Stefan F. (Gast)


Lesenswert?

> Was muss ich beachten?

Der Bootloader liegt am Ende des Flash Speichers und ist durch Fuses vor 
dem Überschrieben geschützt. Also brauchst du eigentlich gar nichts 
weiter beachten, außer dass er die verfügbare Menge vom Flash Speicher 
reduziert.

> Kann ich die TX/RX Pins verwenden

Ja, denn zwischen AVR und USB-UART sind 1kΩ Widerstände. Deine externe 
Beschaltung kann die Signale dominieren (muss natürlich genug Strom 
liefern können).

> Brauche ich ein spezielles Makefile?

Nein.

Wenn du den Chip per ISP Schnittstelle programmierst, wird der 
Bootloader in der Regel gelöscht. Dann musst du die Fuses entsprechend 
umstellen. Wenn du den Chip per Bootloader über die USB Schnittstelle 
programmierst, lässt du die Fuses besser so wie sie sind.

von Geany Arduino (Gast)


Lesenswert?

Wieso fragt man hier im Forum, wenn man Google nutzen kann?

von Timmo H. (masterfx)


Lesenswert?

Geany Arduino schrieb:
> Wieso fragt man hier im Forum, wenn man Google nutzen kann?
Betonung auf "wenn man Google nutzen kann". Es gibt Leute die können das 
nicht und diskutieren lieber stundenlang um weniger Input zu bekommen 
als wenn man gegoogelt hätte

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Weil man vor allem als Anfänger manche Fachwörter noch nicht versteht 
oder sie nicht kennt und deswegen nicht die "guten" Seiten findet.

von Adrian E. (ahsd)


Lesenswert?

Stefanus F. schrieb:
> Weil man vor allem als Anfänger manche Fachwörter noch nicht versteht
> oder sie nicht kennt und deswegen nicht die "guten" Seiten findet.

Und weil man sich beim Googeln häufig durch zig Seiten wühlen muss auf 
denen  die eigene, wenn auch einfache, Frage nicht beantwortet wird.

Die Hochnäsigkeit mit der man in diesem Forum konfrontiert wird ist 
immer wieder erstaunlich.

Timmo H. schrieb:
> Es gibt Leute die können das
> nicht und diskutieren lieber stundenlang um weniger Input zu bekommen
> als wenn man gegoogelt hätte

Ich war nicht derjenige der diesen Thread mit unnötigen Beiträgen in die 
Länge gezogen hat.


@ Stefanus F:
Danke!

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Adrian E. schrieb:
> Okay, meine konkreten Fragen werden einfach ignoriert. Zum Beispiel, ob
> ich genau so kompiliere, wie wenn ich keinen Bootloader verwende und per
> ISP auf den Chip schreibe.

Wenn schon faul, dann richtig: Schreibe in der gewohnten Umgebung, aber 
überlasse Kompilieren / Hochladen der Arduino-IDE. Es hält Dich niemand 
davon ab, vorher in Deiner Umgebung einen Compilerlauf zu machen und 
Fehler zu bereingen. Unter A*-IDE sitzt gcc, also warum nicht?

Wenn man in der A-IDE den Haken "Externen Editor verwenden" setzt, liest 
das Ding jedesmal die Datei neu ein.

Wenn Du den Upload partout nicht mit der A*-IDE machen willst, wirst Du 
wohl deren Steuersequenz nacherfinden müssen, sie beginnt auf jeden Fall 
mit einem Reset.

Einmal die Datei \Arduino_IDE\hardware\arduino\avr\boards.txt anschauen 
schadet nicht, es gibt aber noch deutlich mehr Beschreibungsdateien.

von Adrian E. (ahsd)


Lesenswert?

Danke für den Tipp.

Kompilieren wie gewohnt und hochladen mit avrdude funktioniert aber 
soweit gut. Avrdude kennt auch das flag
1
-c arduino

von S. R. (svenska)


Lesenswert?

Adrian E. schrieb:
> Okay, meine konkreten Fragen werden einfach ignoriert.

Welche?
Und warum hast du es nicht einfach mal ausprobiert?

von Harry L. (mysth)


Lesenswert?

Geany Arduino schrieb:
> Wieso fragt man hier im Forum, wenn man Google nutzen kann?

Weil viele einfach zu blöd sind, eine Google-Anfrage so zu formulieren, 
daß auch sinnvolle Ergebnisse kommen.
Wenn man Google einfach nur "Arduino" zum Fraß vorwirft, passiert genau 
sowas.

Allerdings frage ich mich, wie man mit dieser Herangehensweise überhaupt 
sinnvoll programmieren will, wenn man schon bei einer so simplen Sache 
wie Google seine Gedanken nicht geordnet formulieren kann....

von Manfred (Gast)


Lesenswert?

Adrian E. schrieb:
> Kompilieren wie gewohnt und hochladen mit avrdude funktioniert aber
> soweit gut. Avrdude kennt auch das flag-c arduino

Dann verstehe ich Deine Fragestellung nicht mehr. Lädst Du per ISP oder 
erlaubt Dein "flag arduino" schon seriellen Zugriff?

von Adrian E. (ahsd)


Lesenswert?

Manfred schrieb:
> Adrian E. schrieb:
>> Kompilieren wie gewohnt und hochladen mit avrdude funktioniert aber
>> soweit gut. Avrdude kennt auch das flag-c arduino
>
> Dann verstehe ich Deine Fragestellung nicht mehr. Lädst Du per ISP oder
> erlaubt Dein "flag arduino" schon seriellen Zugriff?

Meine Fragestellung ist von Stefanus beantwortet worden. Ich weiß jetzt, 
dass es nicht zu Problemen kommen kann, wenn ich meinen Code für einen 
AVR mit Bootloader genau so kompiliere wie zuvor.

Beitrag #5468192 wurde von einem Moderator gelöscht.
von Axel S. (a-za-z0-9)


Lesenswert?

Adrian E. schrieb:
> - Kann ich die TX/RX Pins verwenden, die auch zur Kommunikation mit dem
> USB Controller dienen?

Du kannst sie nur zur Kommunikation mit dem USB-UART Chip nutzen. Ist 
aber trivial. Einfach am PC im Terminalprogramm die gleiche Baudrate 
einstellen wie am AVR und es funktioniert direkt. Das ist m.M.n. der 
größte Vorteil dieser Arduino-Boards, daß man den UART-Kanal zur 
Entwicklungsumgebung gratis hat.

> - Brauche ich ein spezielles Makefile, oder kann ich mein Makefile
> verwenden, welches vorher mit C / Avrdude zusammen gut gearbeitet hat?

Wenn du den Arduino-Krempel weglassen willst, mußt du ein paar Variablen 
im Makefile passend setzen (im wesentlichen NO_CORE=Yes). Du schreibst 
nicht, auf welcher Plattform du unterwegs bist, aber für Linux gibt es 
ein Package "arduino-mk", das genau dafür gedacht ist, den AVR auf dem 
Arduino "nackt" zu verwenden.

> - Muss der Compiler irgendwie wissen, dass ein Bootloader vorhanden ist?

Dem Linker sollte man sagen, daß er 2KB weniger Flash hat. Dann ist 
sichergestellt, daß das HEX File den Bootloader nicht überschreibt. Bei 
Verwendung von Arduino-mk werden die Arduino-Linkerskripte verwendet, 
die genau das tun.


Hier mal das "Blink" Beispiel unter Verwendung von arduino-mk. 
Compilieren mit "make", flashen mit "make upload".

blink.c
1
/*
2
 * ATmega328
3
 *
4
 * Example Blink. Toggles PB5=D13 at 1Hz
5
 */
6
7
#include <avr/io.h>
8
#include <util/delay.h>
9
10
void init_io(void)
11
{
12
        // 1 = output, 0 = input
13
        DDRB = 0b00100000; // PB5=D13 is output
14
        DDRC = 0; // inputs
15
        DDRD = 0; // inputs
16
        // turn on pullups on all inputs
17
        PORTB = 0b11011111;
18
        PORTC = 0xFF;
19
        PORTD = 0xFF;
20
}
21
22
int main(void)
23
{
24
        init_io();
25
26
        while (1)
27
        {
28
                PORTB |= 0b00100000;
29
                _delay_ms(100);
30
31
                PORTB &= ~(0b00100000);
32
                _delay_ms(900);
33
        }
34
35
        return 0;
36
}


Makefile
1
# build a naked project
2
NO_CORE = Yes
3
BOARD_TAG = nano328
4
MCU = atmega328p
5
HEX_MAXIMUM_SIZE = 30720
6
F_CPU = 16000000L
7
CFLAGS = -std=gnu99 -Wall -Wextra
8
OPTIMIZATION_LEVEL = s -flto
9
10
# upload via arduino bootloader
11
AVRDUDE_ARD_PROGRAMMER = arduino
12
AVRDUDE_ARD_BAUDRATE = 57600
13
14
include /usr/share/arduino/Arduino.mk

von Peter D. (peda)


Lesenswert?

Bei den AVRs kann man den Bootloader so schreiben, daß die Applikation 
nichts davon wissen muß, d.h. sie startet ganz normal an Adresse 0x0000.
Das geht auch für die ATtiny und den ATmega48.

Um den Bootloader zu starten gibt es 2 Möglichkeiten:
1. Der Bootloader fragt einen Pin ab.
2. Der Bootloader wartet nach jedem Reset einige Sekunden, ob ein 
Kommando reinkommt. Dann erst startet er die Applikation.

von Arno (Gast)


Lesenswert?

Harry L. schrieb:
> Geany Arduino schrieb:
>> Wieso fragt man hier im Forum, wenn man Google nutzen kann?
>
> Weil viele einfach zu blöd sind, eine Google-Anfrage so zu formulieren,
> daß auch sinnvolle Ergebnisse kommen.
> Wenn man Google einfach nur "Arduino" zum Fraß vorwirft, passiert genau
> sowas.

Zur Ehrenrettung der Frager: Gerade zum Thema Arduino gibt es eine 
gefühlte halbe Million "Anfänger-Tutorials" mit einem Fritzing-Bild, 
einer LED, zwei Sensoren und den Worten "Bootloader" und "ohne" im Text, 
die genau beschreiben, wie ein Draht an die Stiftleiste anzuschließen 
ist und die recht gute SEO betreiben. Die relativ wenigen Seiten, die 
darüber hinaus gehen, gehen daher in den Suchergebnissen häufig unter.

MfG, Arno

...der zum Beispiel schon stundenlang den Rückgabetyp von analogRead() 
in der ESP-Arduino-Umgebung gesucht hat - manchmal ja schon relevant, 
wenn das Ergebnis z.B. an ein snprintf weitergegeben werden soll...

von Stefan F. (Gast)


Lesenswert?

> schon stundenlang den Rückgabetyp von analogRead()
> in der ESP-Arduino-Umgebung gesucht hat

Das ist für Arduino Doku typisch. Ich habe mir inzwischen angewöhnt, 
eine
"richtige" IDE zu benutzen, die zeigt mir das dann schon an.

Aber eigentlich gehört so etwas in die Doku - ist meine Meinung dazu. 
Ich wette, die Arduino Macher merken das gar nicht, weil sie ihre eigene 
nicht-IDE nicht benutzen.

von Safari (Gast)


Lesenswert?

Arno schrieb:
> ...der zum Beispiel schon stundenlang den Rückgabetyp von analogRead()

funktioniert so etwas wie:
 printf("%d", sizeof(analogRead()))
?
Da hat man zwar die Information signed/unsigned noch nicht, aber das 
dürfte sich bei analogRead anhand der Werte ja ergeben/sehen lassen.

von Einer K. (Gast)


Lesenswert?

Stefanus F. schrieb:
>> schon stundenlang den Rückgabetyp von analogRead()
>> in der ESP-Arduino-Umgebung gesucht hat
>
> Das ist für Arduino Doku typisch. Ich habe mir inzwischen angewöhnt,
> eine
> "richtige" IDE zu benutzen, die zeigt mir das dann schon an.
>
> Aber eigentlich gehört so etwas in die Doku - ist meine Meinung dazu.
> Ich wette, die Arduino Macher merken das gar nicht, weil sie ihre eigene
> nicht-IDE nicht benutzen.

Typisches Arduino Bashing....
Drauf hauen, ohne die Augen auf zu machen.

Natürlich ist der ESP, kein Arduino.
Die Arduino Leute für die angeblich schlechte Doku der Erweiterung für 
den ESP verantwortlich zu machen ist arg vermessen.
Ja, grenzt schon an Dummheit.
Wenn nicht sogar Absicht dahinter steckt.

In der Arduino Referenz 
https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
Steht ganz klar:
> Returns
> int(0 to 1023)
Wenn das einer nicht lesen kann, dann hilft auch keine Fettschrift mehr.

analogRead() liefert also einen int

Die Produzenten der Integration von weiteren/fremden Boards, werden 
diesen Rückgabewert übernehmen, wenn denn dieser exotische µC das kann.

Ein externer Intergrationdokumentierer wird Abweichungen vom original 
Framework dokumentieren, und nicht jedem Depp die Welt erklären.


PS:
Wem die original Arduino Doku nicht gefällt, der/die/es ist sicherlich 
herzlich willkommen diese zu verbessern.

Wem die ESP Doku nicht gefällt, für den gilt das gleiche. Das Zeugs 
liegt auf GitHub.

Selbst der Quellcode der Arduino IDE findet sich auf GitHub.

von Einer K. (Gast)


Lesenswert?

Safari schrieb:
> funktioniert so etwas wie:
>  printf("%d", sizeof(analogRead()))
> ?

Nein!
Da fehlt ein Parameter
Wenn, dann sizeof(analogRead(A0))
So stimmt wenigstens die Syntax, in soweit, dass der Kompiler durchläuft
1
void test()
2
{
3
 auto var = analogRead(A0);
4
 Serial.println(sizeof(var)); 
5
}
Liefert auf einem UNO: 2

Wird auf dem ESP 4 liefern.
ungetestet

von Harry L. (mysth)


Lesenswert?

Arduino Fanboy D. schrieb:
> In der Arduino Referenz
> https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
> Steht ganz klar:
>> Returns
>> int(0 to 1023)
> Wenn das einer nicht lesen kann, dann hilft auch keine Fettschrift mehr.

Ist doch schon Scheisse!
Bei AVR ist int 16bit, bei STM32 32bit usw...
Hinzu kommt, daß int Vorzeichen-behaftet ist und der ADC nur positive 
Werte liefern kann.
Genau dafür gibts uint16_16

Die Arduidioten sollten erstmal Programmieren lernen!

von Einer K. (Gast)


Lesenswert?

Harry L. schrieb:
> Ist doch schon Scheisse!

Ja, so funktioniert Bashing.
Scheiße schreien, obwohl Datentype und Wertebereich klar dokumentiert 
sind.

Und natürlich jegliche Kompetenz absprechen.
Kommt auch immer wieder gut.


Erst war scheiße, dass es angeblich nicht dokumentiert wurde.
Jetzt sind die Programmierer scheiße und Idioten.



Nebenbei:
Historisch gesehen kommt das Arduino Framework aus der Processing Ecke.
Versucht weitgehende Kompatibilität damit zu erhalten.
Processing ist Java, und kennt kein unsigned int oder uint16_t

----
Harry L. schrieb:
> Hinzu kommt, daß int Vorzeichen-behaftet ist und der ADC nur positive
> Werte liefern kann.
Ach neee.....
Das ist ja schon eine etwas dreiste Lüge.
Es gibt einige AVR, welche Spannungsdifferenzen messen können
(auch wenn Arduino das nicht per Framework unterstützt)

Aber dass ein AVR ADC keine negativen Werte liefern kann, ist in der 
allgemeinen Aussage gelogen.


----

Aber das interessiert doch sowieso keinen, der unbedingt was zum 
schlechtreden braucht.

Also hackt weiter darauf rum

ohne mich.

---
Nachtrag:
https://de.wikipedia.org/wiki/Kompetenzstufenentwicklung
Die Leute auf dem niedrigsten Kompetenzlevel reißen das Maul am 
weitesten auf, ohne zu merken, wie sehr sie sich dabei blamieren.

von Harry L. (mysth)


Lesenswert?

Du machst ja deinem Nickname alle Ehre...

Setz mal deine rosarote Arduino-Brille ab!

Arduino Fanboy D. schrieb:
> Processing ist Java, und kennt kein unsigned int oder uint16_t

Ach, und ich dachte, das wäre C(++)...

Erst schreibst du:
Arduino Fanboy D. schrieb:
> In der Arduino Referenz
> https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
> Steht ganz klar:
>> Returns
>> int(0 to 1023)

Und dann kann das plötzlich doch negativ werden ?!?
WTF????

Arduino Fanboy D. schrieb:
> Das ist ja schon eine etwas dreiste Lüge.
> Es gibt einige AVR, welche Spannungsdifferenzen messen können
> (auch wenn Arduino das nicht per Framework unterstützt)

Merkst du noch was???

Wundert mich gar nicht, daß bei so krausen Gedankengängen nur 
beschissener Code heraus kommt.

von Einer K. (Gast)


Lesenswert?

Harry L. schrieb:
> Du machst ja deinem Nickname alle Ehre...
Danke, für die Anerkennung!

von Uli (Gast)


Lesenswert?

Hallo  Adrian E..

Am besten Du vergisst das mit dem umsteigen.
Arduino ist was für Anfänger die hoffentlich später mal richtig 
Programmieren lernen. Für was anders ist das Projekt auch nicht 
gestartet worden.

Ich habe mich mal daran versucht, weil es einige Libs gab die ich 
brauchte.
Bis die mal so liefen das man die benutzen konnte hätte ich das gleich 
selber schreiben können.

Den Bootloader davon nutze ich aber gerne, auch einige Boards von denen 
setzte ich sehr gerne ein.
Nur programmieren würde ich die Teile weiter unter einer guten IDE mit 
Debugger, dann geht der Bootloader aber nicht mehr!

Uli

von Axel S. (a-za-z0-9)


Lesenswert?

Uli schrieb:
> Am besten Du vergisst das mit dem umsteigen.
> Arduino ist was für Anfänger die hoffentlich später mal richtig
> Programmieren lernen. Für was anders ist das Projekt auch nicht
> gestartet worden.

Wieder einer, der antwortet ohne den TE auch zu lesen. Er will auf die 
Arduino-Platinen umsteigen, seinen AVR aber trotzdem ohne den 
Arduino-Mittelbau programmieren. Und das ist durchaus sinnvoll. Zum 
einen, weil man die Nanos aus China billiger bekommt als hierzulande 
einen ATMega328 allein. Den USB-UART kriegt man dann noch dazu.

von Uli (Gast)


Lesenswert?

Hast ja recht, er will das machen was ich auch mache.
Billige Hardware und vernüntige Software.

Hatte wohl schon zuviel hier gelesen.

von Adrian E. (ahsd)


Lesenswert?

Wow! Ich wollte den Tab gerade schließen, da sehen ich doch noch eine 
Million neuer Antworten. Und sogar ein paar in denen niemand persönlich 
beleidigt wird.

Arno schrieb:
> Zur Ehrenrettung der Frager: Gerade zum Thema Arduino gibt es eine
> gefühlte halbe Million "Anfänger-Tutorials" mit einem Fritzing-Bild,
> einer LED, zwei Sensoren und den Worten "Bootloader" und "ohne" im Text,
> die genau beschreiben, wie ein Draht an die Stiftleiste anzuschließen
> ist und die recht gute SEO betreiben. Die relativ wenigen Seiten, die
> darüber hinaus gehen, gehen daher in den Suchergebnissen häufig unter.
>
> MfG, Arno

Danke! Exakt so sah mein Google Erlebnis aus.
Wenn es hier nicht doch ein paar echt kompetente und verständnisvolle 
Leute gäbe, hätte ich diesem Forum schon vor Jahren den Rücken 
zugekehrt.


Was macht die Option NO_CORE = Yes im Makefile? Bei meinen ersten Tests 
habe ich folgende Optionen angepasst und das hat funktioniert:
1
MCU = atmega328p
2
AVRDUDE_PROGRAMMER = arduino
3
AVRDUDE_PORT = /dev/ttyUSB0
4
AVRDUDE_BAUDRATE = 57600

Plattform ist übrigens Linux.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Was macht die Option NO_CORE = Yes im Makefile?

Zeige mal das Makefile dann kann ich sehen, was es damit anstellt.

von Adrian E. (ahsd)


Lesenswert?

Stefanus F. schrieb:
>> Was macht die Option NO_CORE = Yes im Makefile?
>
> Zeige mal das Makefile dann kann ich sehen, was es damit anstellt.

https://pastebin.com/drjZdcWe

NO_CORE kommt in diesem Makefile gar nicht vor.

von Axel S. (a-za-z0-9)


Lesenswert?

Adrian E. schrieb:
> Was macht die Option NO_CORE = Yes im Makefile?

Schrieb ich doch: die sorgt dafür, daß der Arduino-Kruscht weder 
compiliert noch zu deinem Projekt gelinkt wird. Da du den AVR ja direkt 
programmieren wolltest, ist das genau das, was du willst.

von HippHopp (Gast)


Lesenswert?

Makefile brauch ich nicht, arduino nano c code compilieren und flashen:


compilieren:
1
avr-gcc -Wall -Wextra -Os -fshort-enums -lm -mmcu=atmega328p -D F_CPU=16000000UL $(find . -name '*.c') -o main.elf
2
3
avr-objcopy -O ihex -j .text -j .data main.elf main.hex


Per bootloader flashen:
1
avrdude -p m328p -c arduino -b 57600 -P /dev/ttyUSB0 -U flash:w:main.hex:i

von Harald (Gast)


Lesenswert?

Uli schrieb
>Am besten Du vergisst das mit dem umsteigen.
>Arduino ist was für Anfänger die hoffentlich später mal richtig
>Programmieren lernen.

Nicht ganz. Es ist auch was für Profis wie mich, die schon 30 Jahre lang 
Mikrocontroller programmieren und denen es zu dumm ist, jedes mal die 
Zeit in die Inbetriebname einer neuen Toolchain zu stecken.
Bei Bedarf wird Hardware benutzt, für die es eine Arduino Framework gibt 
oder es wird eine Library angepasst, weil man aus langer Erfahrung weiß, 
wo man hin greifen muss und wann sich der Einsatz für welchen Zweck 
lohnt.

Probleme mit den Arduinos hat hier eher das Mittelmaß, welches die Stufe 
zur Meisterschaft noch nicht erklommen hat.

>Ich habe mich mal daran versucht, weil es einige Libs gab die ich
>brauchte.
>Bis die mal so liefen das man die benutzen konnte hätte ich das gleich
>selber schreiben können.

q.e.d.

von Joachim B. (jar)


Lesenswert?

Uli schrieb:
> Ich habe mich mal daran versucht, weil es einige Libs gab die ich
> brauchte.
> Bis die mal so liefen das man die benutzen konnte hätte ich das gleich
> selber schreiben können.

ich nicht,
aber ich konnte die fastLED LIB so patchen für meinen 1284p bis sie 
lief!
https://www.mikrocontroller.net/attachment/244099/m1284p_timing.jpg
Beitrag "Re: Arduino FastLED LIB vs. WS28xx LIB"

: Bearbeitet durch User
von Max B. (theeye)


Lesenswert?

Stefanus F. schrieb:
> [...] Wenn du den Chip per ISP Schnittstelle programmierst, wird der
> Bootloader in der Regel gelöscht. Dann musst du die Fuses entsprechend
> umstellen. [...]

Wieso? Ich mache das genau so aber habe an den Fuses nichts geändert. 
Oder ist das nur die Empfehlung, um den vollen Speicher beschreiben zu 
können?

Viele Grüße
Max

von Einer K. (Gast)


Lesenswert?

Wenn dein Code in den Bootloaderbereich ragt, wird das mit wundersamem 
Verhalten bestraft.

Ansonsten werden vom Prozessor sizeof(Bootloader) viele Nops 
durchlaufen. Also der Start verzögert.


Bootloader löschen, aber die Fuses dafür stehen lassen, halte ich für 
schlampige Arbeit.

Der Kram kann einem auf die Füße fallen, muss aber nicht.

von Max B. (theeye)


Lesenswert?

Also ja. Danke, werde ich mal korrigieren.

Viele Grüße
Max

von Joachim B. (jar)


Lesenswert?

Adrian E. schrieb:
> Okay, meine konkreten Fragen werden einfach ignoriert.

an deinen Texten ist nichts konkret, du beantwortest ja nicht mal Fragen

Max B. schrieb:
> Wieso? Ich mache das genau

und fast einen Monat später kommt nichts konkretes!

glaubst hier sitzen Hellseher die wissen welche IDE du benutzt?

Adrian E. schrieb:
> Ich möchte aber meine
> IDE weiter verwenden.

ich habe auch keine Lust alle deine Beiträge noch mal zu untersuchen, 
Salami mag ich nur auf Pizza, aber nicht so lieblos hingerotzt wie deine 
Fragen.

Beitrag #5480096 wurde von einem Moderator gelöscht.
von Max B. (theeye)


Lesenswert?

Joachim B. schrieb:
> Max B. schrieb:
>> Wieso? Ich mache das genau
>
> und fast einen Monat später kommt nichts konkretes!

Also ich habe heute das erste Mal in diesem Thread gepostet...

Viele Grüße
Max

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.