Hallo C-Freunde
Jetzt geht es endlich weiter.
Nachdem ihr alle nun ja schon ein wenig C im Allgemeinen kennengelernt
habt folgt nun die lange erwartete Fortsetzung.
Im ersten Teil gibt es eine allgemeine Einführung und ihr werdet lernen,
wie ihr digitale Signale mit dem AVR erfasst und ausgebt.
Weitere Folgen werden in loser Folge erscheinen, je nachdem, wie viel
Zeit ich jeweils investieren kann.
Einfach die beiliegende ZIP-Datei in einen beliebigen Ordner entpacken
und das Dokmument Index.htm doppelklicken.
Kollegiale Grüsse aus der Schweiz
Christian
Ich will nur anmerken, daß der "Interruptgesteuerte Programmablauf" mit
leerer Hauptschleife nur ein rein theoretischer Spezialfall ist.
Der übliche Normalfall ist eine nicht leere Hauptschleife, die durch
Interrupts unterbrochen wird.
Der Witz eines Interrupts ist nämlich, daß er höher priorisiert als die
Hauptschleife ist
Wenn also die Hauptschleife leer ist, geht der Nutzen eines Interrupts
verloren.
Peter
Super Tutorial - mach weiter so!!!!!!
Ich hab' mir C für Mikrocontroller gekauft und fast nix verstanden, aber
dein Tut ist recht einstiegerfreundlich und übersichtlich - Danke!!!
mfg
Christian
@Peter
Du hast grundsätzlich Recht. Der Controller kann natürlich statt dumm
auf den nächsten Interrupt zu warten auch irgendwelche nicht
zeitkritische Aktionen ausführen.
Es ging mir in dieser Abbildung aber in erster Linie um die Ausnutzung
der Interruptfunktionalität als Programmstrukturierungsmöglichkeit
(geiles Wort).
Ich bin aber immer wieder dankbar für Hinweise aus eurer Sicht, da ich
beileibe auch nicht perfekt bin ;-)
Kann ich eigentlich nicht auch den Controller in den Schlafmodus
versetzen und beim nächsten Interrupt aufwecken lassen (Strom sparen)?
Gruss
Christian
Es geht weiter.
Im diesem Teil geht es um die Kommunikation mit dem UART.
Damit haben wir dann auch gleich ein Hilfsmittel zur Hand, um
Textausgaben zu Debugzwecken an den PC zu schicken.
Das ZIP-File enthält den vollständigen Dokumentsatz, also auch den
vorangegangenen Teil.
Ich hoffe, ihr seid noch nicht Müde, ich bin nämlich schon am nächsten
Teil.
Gruss
Christian
Glaube ich eigentlich nicht. Du kannst aber ansonsten auch die
entsprechenden HTML-Dateien direkt öffnen mit Doppelklick. Sie heissen
jeweils Übung_x.htm.
Gruss
Christian
Die _Ü_bungen funktionieren hier mit IE5.5 auch nicht. Weder per Link,
noch direkt. Ich kriege aber auch eine Fehlermeldung "java...:
fhover..." (an mehr kann ich mich nicht mehr erinnern, da die
Fehlermeldung nur beim 1.Mal erschien).
Schmittchen.
Wozu sollen die Hover-Schaltflächen denn überhaupt gut sein? Das
Anzeigen der Seite dauert deutlich länger wenn immer noch die JVM
gestartet werden muss.
Wollt ihr noch???????
Dann kriegt ihr noch!!
Habe die Hoverschaltflächen ersetzt durch normale Bildchen und alle
Umlaute aus den Dateinamen entfernt.
Das müsste jetzt eigentlich so gehen.
Ach ja, und selbstverständlich ist ein neues Thema dazu gekommen.
Diesmal geht es um die Verarbeitung von Analogwerten.
Viel Spass beim Ausprobieren.
Christian
Hi
sorry das ich mich lange nicht Melden konnte
Bin gerade an deiner Datei sieht ja echt genial aus. Hast du was dagegen
wen ich es auf meine Seite stellen würde?
DANKE nochmal
CU Diminator
Christian, ich würde es ja gern wieder in den Artikel-Bereich hochladen,
aber einige Links deines Artikels funktionieren nicht. Tipp:
Unix-Webserver sind case sensitive, das heißt du musst bei den Links und
den Dateinamen auf Groß-/Kleinschreibung achten. Und ein paar Dateien
und Ordner mit Umlauten sind auch noch dabei habe ich gesehen.
Gruß
Andreas
@Diminator
Wie du auf der Einleitungsseite lesen kannst darf das Tutorial weiteren
Personen zugänglich gemacht werden, sofern der Copyright-Hinweis nicht
verändert wird. Dies betrifft seblstverständlich auch die
Veröffentlichung auf anderen Webseiten.
@Andreas
Die Dateinamen mit Umlauten kannst du wegschmeissen, sind bloss noch
Datenleichen.
Bei den Links kannst du mir sicherlich sagen ob der Unix-Server
eventuell Probleme hat mit Leerzeichen in den Dateinamen. Ich meine, ich
habe die Links immer mit der Auswahlbox des Fileselectors eingefügt,
dann müsste ja eigentlich die Gross-/Kleinschreibung stimmen.
Nenn mir doch mal ein oder zwei Beispiellinks, welche nicht funzen.
Gruss
Christian
Hallo Andreas
Den Teil 2 kannst du bei den Artikeln eigentlich auch weglassen, da der
Teil 3 das komplette Tutorial beinhaltet. Ich erweitere jedes mal
einfach wieder um ein paar Seiten. Somit ist immer das ganze Tut in
meinem ZIP vorhanden.
Gruss
Christian
Hallo Freunde
Das Tutorial wird selbstverständlich weiter geführt. Allerdings bin ich
momentan gerade mit einem Projekt beschäftigt. Ich baue mir eine
Lichtsteuereinheit mit 8 Scheinwerfern, die über die MIDI-Schnittstelle
eines Keyboards angesteuert wird. Bin aber schon fast fertig. Dann
geht's weiter mit dem Tut.
Besten Dank für eure Geduld.
Ich hoffe, es ist immer noch Interesse vorhanden.
Gruss
Christian
Hi,
das Tutorial sieht schon verdamt gut aus (der Button "zum Kurs" in der
Einleitung geht nicht und ein paar Bilder fehlen).
Das setzt aber voraus, das man einen Compiler installiert hat, das man
den Sinn und den Inhalt der Makefiles versteht und das man die Vorgänge
zumindest ungefähr versteht, die bei der Compilierung ablaufen. Die
Optionen von Compiler, Linker, Assember usw sind auch nicht jedem
bekannt. Gibt es dazu schon brauchbare (deutsche) Tutorials? Ich kenn
mich leider damit nicht aus um sowas selbst zu schreiben.
Gruß
Markus
Ach ja, und was z.B. "elf" und "cof" bedeutet. Das ist für mich bisher
noch ein Buch mit sieben Siegeln, weil ich mit jeglicher Art von GCC
Compilern noch keine Erfahrung hab.
Gruß
Markus
@Markus
Soll ich dir mal was verraten?
Ich habe auch keine Ahnung, was die ELF und COF-Dateien bewirken, aber
es ist mir ziemlich schnurz. Hauptsache, ich kriege ein ROM-File,
welches ich auf den AVR laden kann :-)
Das mache ich übrigens mit Pony Prog.
Bezüglich Entwicklungsumgebung habe ich mich an das gehalten, was ich im
Netz so gefunden habe. Leider praktisch alles in Englisch. Nicht zuletzt
deswegen habe ich mich dazu entschlossen, dieses Tutorial zu schreiben,
damit auch mal was in (Schweizer-)Deutsch vorhanden ist.
Der Aufbau der Makefiles ist, denke ich, in den ersten Beispiellösungen
ausführlich dokumentiert, und wenn du mal ein braubares Makefile hast,
kannst du dieses für neue Projekte kopieren und anpassen.
Die Installation des Compilers habe ich nach der Anleitung auf dieser
Homepage durchgeführt. Hat eigentlich auch auf Anhieb geklappt.
Den Link des Buttons "Zum Kurs" werde ich in der nächsten Version
flicken. Da ist doch tatsächlich noch ein Klein-/Grossschreibung-Problem
versteckt.
Gruss
Christian
Ich bin gerade dabei, den nächsten Teil des Tuts fertig zu stellen.
Mir fehlt jetzt ein praxisnahes Beispiel als Übung für die Anwendung des
16-Bit Timer/Counter.
Irgend welche Ideen???? Mit fällt gerade nichts schlaues ein, und eine
Null Acht Fuffzehn Übung möchte ich auch nicht unbedingt machen. Das
ganze soll natürlich noch mit einfachen Mittel aufzubauen sein, also
keine speziellen IC's und dergleichen.
Gruss
Christian
nur so ne idee...vielleicht ist es auch schon drin..habs nur mal ein
wenig überflogen...
vielleicht solltest du mal ein wenig mehr auf das bit geklimper
eingehen...schieben, XOR, AND, OR usw.
zumindest hatte ich da meine schwierigkeiten am anfang mit.
oder spezielle sachen..wie ich z.b direkt auf einen feste sram adresse
direkt schreiben kann:
unsigned char *ptr
ptr = (unsigned char *) 0x0060;
das sind so dinge die mir am amfang etwas kopf zerbrechen gemacht
haben...
gruss,
BAB
@ Christian: wie wäre es mit einer Geschwindigkeitsmessung? Zwei
Sensoren wie zb Lichtschranken in einem festen Abstand von zb 10cm. Der
erste Sensor startet den Meßvorgang, der zweite stoppt ihn.
Und als Counter könnte man einen Impulssensor an einem Rad nehmen. So
könnte z.B. ein 8Bit Conter die Zahl der Impulse zählen und der 16 Bit
Counter wird bei jeder vollen Umdrehung durch einen Sync-Eingan neu
gestartet. Der 16Bit Timer mißt die Zeit pro Umdrehung. So könnte man
neben der Drehzahl auch die Position ermitteln.
Gruß
Markus
Hallo Christian,
ich möchte mich als erstes für Dein super Tutorial bedanken. Ich habe
erst vor einem Monat mit AVR-s und mit dem programmieren angefangen, und
der Anfang währe ohne dieses Tutorial 1000 Mal schwiereiger gewesen.
Ich würde gerne dieses Programm hier als Beispielanwendung für den
16-Bit Timer/Counter vorschlagen. Das Programm misst die Pulslänge von
R/C Empfängern (mit dem 16-bit Timer), speichert den Wert und gibt
wieder den selben Puls, wiederum mit Hilfe des 16-Bit Timers aus.
Gruß
Zoltan
Besten Dank für eure Ideen.
Ich werde diese Anregungen gerne entgegen nehmen für ein Kapitel
"Praxisbeispiele" zum krönenden Abschluss des Tutorials.
Für die Übungen zum Thema suche ich aber wirklich überschaubare
Anwendungen, welche mit den Bauteilen, die eigentlich jeder in der
Schublade hat (LED, Taster, Transis, Kondensatoren etc.) zu realisieren
ist. Für den 8-Bit Timer habe ich z.B. eine Software-PWM mit 4 Kanälen
gebastelt, welche einfach 4 LED's ansteuert. Das ganze sollte übrigens
bisher noch ohne Interrupts auskommen, weil die Interrupts erst später
im Kurs besprochen werden.
Gruss
Christian
Was lange währt...
Hallo an Alle
Es hat lange gedauert bis ich wieder soweit war.
Jetzt ist es aber soweit, rechtzeitig zum Jahresende.
Ich wünsche euch allen viel Spass beim Experimentieren und ein
erfolgreiches 2003.
Ich hoffe, ich habe alle erforderlichen Dateien in das beiliegende
ZIP-File gepackt.
Mit kollegialem Gruss
Christian
Gong zur nächsten Runde, wenn es euch noch nicht verleidet ist.
Ich habe einige Links korrigiert und einen direkten Download der
ZIP-Datei von meiner Homepage integeriert, da ich viele Mails mit
entsprechenden Anfragen erhalten habe.
Viel Spass
Christian
Hab's wieder hochgeladen:
http://www.mikrocontroller.net/articles/c/
Vielleicht solltst du dein Tutorial auf die neueste Version von AVR-GCC
updaten? Es hat sich einiges geändert, z.B. der Portzugriff und die
Positionen mancher Header-Dateien (avr/io.h statt io.h).
Hast Du inzwischen ein Beispiel für den 16-bit T/C gefunden? Ansonsten
schau mal in die offiziellen Beispiele der avr-libc (siehe
http://savannah.nongnu.org/projects/avr-libc ), das simple Demo dort
benutzt einen solchen Timer für einen PWM, mit dem eine LED an- und
abschwillt.
Seid ihr noch alle da?
Ich habe das Tutorial jetzt zu Ende gebracht.
Speziell dazu gekommen ist jetzt noch das Thema Interrupts.
Ich hoffe, es hat euch Spass gemacht, dieses Tutorial durchzuackern.
Viel Spass nun noch beim Programmieren
Christian
Nachdem ich etliche Anfragen erhalten habe, ob es das Tutorial auch in
druckbarer Form gibt habe ich jetzt das Ganze in eine Word-Datei
verpackt.
Ihr könnt das Dokument so wie es ist ausdrucken oder dasselbe vorher
noch ein wenig nachformatieren, insbesondere die Seitenumbrüche
innerhalb von Tabellen sind nicht immer optimal.
Gruss
Christian
PDF wäre nicht schlecht, ich glaube nicht dass jeder Word hat. Und
vielleicht sollte man das Tutorial für die neue Version von AVR-GCC
anpassen oder zumindest darauf hinweisen welche Unterschiede zu beachten
sind.
Gruß
Andreas