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
Hab's gesehen, allerdings funktionieren die Hover-Schaltflächen nicht. Gruss 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
http://www.mikrocontroller.net/articles/c3/ Wozu sollen die Hover-Buttons denn gut sein? Normale Links tun's doch auch.
Hallo! Sehr gutes Tutorial ;=)) Nur leider kann ich die Übungen weder mit dem IE6 noch dem Netscape 7 anzeigen. Liegt es am "Ü"? Bis denne Jens
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.
Ja, das geht. Ich habe fast den Verdacht, daß es die Datei Übung_1.htm auf http://www.mikrocontroller.net/articles/c3/Übung_1.htm garnicht gibt? Kann das sein? Schmittchen.
Das "Ü" war schuld (Umlaute in URLs machen immer irgendwelche Probleme und sollten deshalb vermieden werden). Ist aber jetzt repariert.
Somit kann ich die Hover-Schaltflächen eigentlich drin lassen. Die Dateinamen werde ich entsprechend umbenennen. Christian
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.
da scheint noch immer ein bug zu sein..bei mir gehts immer noch nicht...mhhh....
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
http://www.mikrocontroller.net/articles/c4/ -> "Benötogte Werkzeuge" geht nicht. Am besten alle Links und alle Dateinamen kleinschreiben.
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
Ich habe aus versehen oben (zwei Beiträge früher) den falschen File (servo6) gepostet. Ist mir grad aufgefallen! Hier kommt der richtige. Sorry.
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
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.