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!!!
Hi, wie ich finde des beste open book http://www.pronix.de.speedpartner.de/modules/C/openbook/ mfg dirk
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.