Forum: Compiler & IDEs C Tutorial


von Kroller (Gast)


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!!!

von Mirki (Gast)


Lesenswert?


von Dirk (Gast)


Lesenswert?

Hi,

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

mfg
dirk

von Mirki (Gast)


Lesenswert?

Stimmt

von 123 (Gast)


Lesenswert?

im wiki gibts en butes tutorial zu gcc(avr)

von mthomas (Gast)


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.

von Lutz Müller (Gast)


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

von mthomas (Gast)


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
[...]

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.