www.mikrocontroller.net

Forum: Compiler & IDEs Wie komfortabel ist C auf ATmega?


Autor: johngo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
bin auf der Suche nach dem richtigen Prozessor....
Wie komfortabel programmiert man in C auf einem ATmega?
Gibt es Einschränkungen?
Gibt es gute Entwicklungsumgebungen, am besten freie?
Gibt es auch Debugger, Source-Level-Debugger?
danke,
johngo

Autor: Azrael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also für den AVR gibt es einen gcc, ich würde an deiner stelle gleich
nach winavr suchen, da sind alle programme zusammen. ich hab bisher mit
zwei debuggern gearbeitet, einmal den von atmel, avrstudio 4.x und
vmlab, damit kann man auch hardware rund herum simulieren. und donst
kannst du noch in circuet debuggen mit insight, ist auch frei.

ähnliches bekommst du auch für den msp430, nur das ich für den noch
keinen richtigen debugger gefunden hab, aber in-circuet reicht mir
eigentlich in dem fall.

bei den pics ist das freie schon ein bisschen eingeschränkt, die
meisten compiler sind auf 4k eingeschränkt, aber ich glaub den c18 von
microchip selber ist frei, man kann nur nicht die zusatzfunktionen
verwenden(bessere optimierung)

ich habe mit dem AVR angefangen und finde es ist ein guter
einstiegsmicrocontroller, sowohl als C als auch assambler

mfg Azrael

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Link da links hast Du vermutlich übersehen:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial


Es gibt eine wesentliche Einschränkung bzw. einen wesentlichen
Unterschied zwischen C auf einem AVR und C auf anderen Prozessoren;
AVRs verwenden die Harvard-Architektur, die zwischen Programm- und
Datenspeicher unterscheidet.

Einem Pointer ist aber nicht anzusehen, ob er auf Programm- oder
Datenspeicher verweist, so daß mit unterschiedlichen Funktionen
gearbeitet werden muss, wenn Daten aus dem Programmspeicher (Flash-ROM)
oder Daten aus dem Datenspeicher (RAM) verwendet werden sollen.
Da das RAM bei den AVRs eher knapp bemessen ist, ist es sinnvoll,
möglichst viele (konstante) Daten im ROM abzulegen (das fängt mit
Stringkonstanten an), und dafür sind bereits spezielle Klimmzüge
erforderlich.

Mehr zum Thema wirst Du sicherlich im eingangs erwähnten Tutorial
finden ...

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>>> ....Da das RAM bei den AVRs eher knapp bemessen ist, ....

Anmerkung dazu: ATmegas können auch mit externem RAM betrieben werden.

Gruß, Michael

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Anmerkung dazu: ATmegas können auch mit externem RAM betrieben
werden.

Nicht alle ATmegas, der ATmega8515 und der ATmega128 haben ein externes
Speicherinterface. Gibts noch weitere?

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Nicht alle ATmegas, der ATmega8515 und der ATmega128 haben ein
externes
Speicherinterface. Gibts noch weitere?"

Mega162, Mega640, Mega641, Mega 1280, Mega1281, Mega 2560, Mega 2561,
um nur ein paar zu nennen...

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, ich sollte wohl öfter mal auf www.atmel.com gehen :)

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein nicht zu unterschätzender Nachteil des externen Speicherinterfaces
ist der Verlust von I/O-Ports, da Atmel bislang nur Gehäuse mit
eindeutig zu wenig Anschlüssen verwendet (der Mega128 ist
beispielsweise in einem 64poligen Gehäuse untergebracht).

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus T. Firefly

"da Atmel bislang nur Gehäuse mit eindeutig zu wenig Anschlüssen
verwendet"


Ist aber nur Deine rein persönliche Meinung.

Mir reichen die Pins mehr als massig aus, nur der Flash ist immer zu
klein.

Der Mega168 war da schon der Schritt in die richtige Richtung und den
Tiny85 erwarte ich sehnsüchtigst. Ich scheine also nicht der einzige zu
sein, dem es so geht.

Ein Tiny8313 wäre aber auch nicht schlecht (2313 mit 8kB), ich mußte
schonmal notgedrungen einen Mega8 verwenden.

Für die riesigen 64-Pinner hatte ich bisher nirgends ne Anwendung, aber
für einen Mega1288 (Mega8 mit 128kB) wüßte ich schon ne Anwendung.


Peter

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus T. Firefly

"Da das RAM bei den AVRs eher knapp bemessen ist"

Das ist auch nur rein subjektiv so.

Ich hab jahrelang mit dem 8051 gearbeitet und da sind oft nur 128 oder
256 Byte RAM drin.

Besonders, wenn man in C programmiert kann der Compiler den RAM sehr
effektiv überlagern und massig lokale Variablen drin unterbringen.
Man denkt erst, 128 Byte sind wenig, aber man kriegt trotzdem sehr
komplexe Programme drin unter.

Dagegen sind die 1kB des Mega8 geradezu riesig, ich krieg die auch
nicht annähernd voll.
Deshalb lasse ich oft Textausgaben der Bequemlichkeit halber im RAM
liegen, dann ist er manchmal schon zu 50% voll.


Peter

Autor: johngo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus T. Firefly schrieb:
>>>>>
AVRs verwenden die Harvard-Architektur, die zwischen Programm- und
Datenspeicher unterscheidet.
>>>>
so daß mit unterschiedlichen Funktionen
gearbeitet werden muss, wenn Daten aus dem Programmspeicher
(Flash-ROM)
oder Daten aus dem Datenspeicher (RAM) verwendet werden sollen.
>>>
bereits spezielle Klimmzüge erforderlich.

::
Die Programmierung stell ich mir da doch etwas umständlich vor, wenn
man immer spezielle Funktionen verwenden muss. Oder stört das in der
Praxis nicht sehr?
Weiß jemand, wie das bei anderen Controllern ausschaut, z.B. 8051?

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

> Für die riesigen 64-Pinner hatte ich bisher nirgends ne Anwendung,
> aber für einen Mega1288 (Mega8 mit 128kB) wüßte ich schon ne
> Anwendung.

Welche Anwendung (nur so aus Neugier) ?

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Oder stört das in der Praxis nicht sehr?
Meine Erfahrung ist, dass es eben ein wenig mehr Arbeit ist wenn man
mit Strings arbeitet. Bei mathematischen Operationen bekomme ich davon
überhaupt nichts mit - größere Tabellen müssen aber natürlich auch hier
in den Flash.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thorsten,

"Welche Anwendung (nur so aus Neugier) ?"

Z.B. als Datenlogger.
Zur Zeit ist es ein AT89C2051 + AT24C512, aber eine 1-Chiplösung wäre
nicht schlecht.

Aber 128kB wirklich nur mit Code zu füllen, dürfte ein Ding der
Ünmöglichkeit sein (ich meine mit sinvollem Code).


Peter

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber 128kB wirklich nur mit Code zu füllen, dürfte ein Ding der
> Unmöglichkeit sein (ich meine mit sinvollem Code).

Für eine Anwendung als Datenlogger ist der Flash-ROM aber eher wenig
zu gebrauchen.  Erstens kannst du ihn nur aus der bootloader section
beschreiben, und zweitens ist m.E. das `wear out' deutlich schlechter
als bei den dataflashs.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg

"ist m.E. das `wear out' deutlich schlechter als bei den
dataflashs"

Was ist ein `wear out' ?


Konkret ist es ein Logger (Energieverbrauch+Temperaturkurve) für einen
Brennofen (1 Tag heizen, mind 3 Tage abkühlen), die 128kB sollten für
etwa ein Jahr reichen, die geringere Anzahl Schreibzyklen wäre also
kein Problem.


Peter

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"wear out" ist die Abnutzung; in diesem Falle wohl die Anzahl der
Schreibzyklen.

Ich denke schon, daß man 128KB sinnvoll füllen kann. Schau Dir doch nur
mal moderne Handys an. Ist ja auch kein Wunder, wenn da u.a. ein IrDA-,
Bluetooth- und ein TCP/IP-Stack enthalten sind.

Markus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.