www.mikrocontroller.net

Forum: Compiler & IDEs C Tutorial


Autor: Kroller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leuts!!! Bin auf der Suche nach einem guten C Tutorial bzw. Bücher
die Ihr empfehlen würdet um den Einstieg in C wagen zu können!!

Danke für Die Hilfe!!!

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie ich finde des beste open book
http://www.pronix.de.speedpartner.de/modules/C/openbook/

mfg
dirk

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt

Autor: 123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im wiki gibts en butes tutorial zu gcc(avr)

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das avr-gcc-Tutorial im wikki - zumindest die von mir eingebrachten
Aktualisierungen/Erweiterungen - sind nicht als allgemeines C-Tutorial
gedacht, sondern soll nur in die Nutzung des (gcc-)C-Compilers und
dessen Besonderheiten bei AVR-"Targets" erlaeutern.

Autor: Lutz Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

ist die Zeile in der Rubrik " Aktivieren des ADC" im Tutorial so
richtig? 2 mal ADEN setzen ist doch überflüssig, oder doch nicht?
ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    // Frequenzvorteiler
setzen auf 8 (1)
ADCSRA |= (1<<ADEN);              //  ADC aktivieren (1)

Den empfohlenen Dummy-Readout nach aktivieren des ADC habe ich auch
noch irgendwo im Gedächtnis, konnte es aber z.B. im aktuellen DB vom
Mega16 nicht finden. Ist das mittlerweile geändert worden oder gar vom
MC abhängig?

Zum im selben "Absatz" gefundenen "Teilen durch 4 mit Bitshift"
(result >>= 2;                     // Summe durch vier teilen = arithm.
Mittelwert)  sagt mein C-Buch, daß das heute nicht mehr erforderlich
ist, da es keine Performancegewinn mehr bringen würde (Wegen
Prozessorarchitektur, modernere Compiler und was weiß ich). Oder ist
das hier noch angebrachter, weil AVR-GCC doch etwas anders als der
Standard ist?

P.S.: Das ganze soll keine Kritik sein, nur Fragen, weil ich
unterschiedliche Angaben in verschieden Quellen lese.


Gruß
Lutz

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon ok, wenn berechtigt ist auch Kritik immmer willkommen. Das
Tutorial ist sicher noch nicht vollstaendig und auch nicht fehlerfrei -
jeder der etwas beitragen will ist willkommen.

zum ADEN - jep, das Beispiel hab' ich verbrochen, war nur schnell
zusammenkopiert aus bestehenden Quellcodes. Das zweite ADEN ist wohl
bei der "Mischung" mit reingerutscht. Kannst Du selbst im Wiki
korrigieren. Man kann nichts kaputt machen, im Zweifel laesst sich der
alte Wikki-Zustand jederzeit wiederherstellen.

zum "Dummy-Readout": siehe dazu ATmega169 Datenblatt. Dort wird - im
Zusammenhang mit JTAG - empfohlen, entweder ein Zeitlang zu warten, da
der ADC automatisch "hochfaehrt", oder eine Konvertierung "manuell"
anzustossen. Das Beispiel ist angelehnt an den Butterfly-Quellcode von
Atmel. Manuelles dummy-readout kann nicht schaden, wenn man nicht grade
um jede Millisekunde kaempft.

zum >>=2. Ja, der Compiler sollte zumindest bei eingeschalteter
Optimierung aus >>=2 und /=4 den gleichen Maschinencode erzeugen. Aber
man muss sich ja nicht darauf verlassen, wenn man's "besser weiss".
avr-gcc 3.4.1 mit OPT=S macht es (s.u.)

Ist halt das Problem mit solchen "Codeschnippseln", sie sollen
moeglichst universell sein, aber sind dadurch auch nicht immer die
optimale Loesung. Aber ohne ein paar Beispiele waere das Tutorial noch
"trockener" als es ohnehin schon ist.

Hoffe, das bringt etwas "Klaerung"
Martin


---
[...]
  volatile unsigned short m,n;

  m=0xfefe;
 10e:  2e ef         ldi  r18, 0xFE  ; 254
 110:  3e ef         ldi  r19, 0xFE  ; 254
 112:  29 83         std  Y+1, r18  ; 0x01
 114:  3a 83         std  Y+2, r19  ; 0x02
  m>>=2;
 116:  89 81         ldd  r24, Y+1  ; 0x01
 118:  9a 81         ldd  r25, Y+2  ; 0x02
 11a:  96 95         lsr  r25
 11c:  87 95         ror  r24
 11e:  96 95         lsr  r25
 120:  87 95         ror  r24
 122:  89 83         std  Y+1, r24  ; 0x01
 124:  9a 83         std  Y+2, r25  ; 0x02
  n=m;
 126:  89 81         ldd  r24, Y+1  ; 0x01
 128:  9a 81         ldd  r25, Y+2  ; 0x02
 12a:  8b 83         std  Y+3, r24  ; 0x03
 12c:  9c 83         std  Y+4, r25  ; 0x04

  m=0xfefe;
 12e:  29 83         std  Y+1, r18  ; 0x01
 130:  3a 83         std  Y+2, r19  ; 0x02
  m/=4;
 132:  89 81         ldd  r24, Y+1  ; 0x01
 134:  9a 81         ldd  r25, Y+2  ; 0x02
 136:  96 95         lsr  r25
 138:  87 95         ror  r24
 13a:  96 95         lsr  r25
 13c:  87 95         ror  r24
 13e:  89 83         std  Y+1, r24  ; 0x01
 140:  9a 83         std  Y+2, r25  ; 0x02
  n=m;
 142:  89 81         ldd  r24, Y+1  ; 0x01
 144:  9a 81         ldd  r25, Y+2  ; 0x02
 146:  8b 83         std  Y+3, r24  ; 0x03
 148:  9c 83         std  Y+4, r25  ; 0x04
[...]

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.