Hallo
Ich muss das Programm Tastenentprellen dokumentieren.
Ich programmiere im AVR Studio
Da ich leider sehr wenig oder sogar keine Ahnung was ich schreiben soll
könnt ihr mir versuchen zu schreiben was das tut. Ich brauche die
Kommentare weil ich sonst durchfalle da ich eh schon schlecht genug bin.
Es kennt sich von meinen Klassenkollegen fast leider niemand aus.
Ich hoffe ihr könnt mir helfen Es ist mir sehr wichtig.
lg
#include <avr/io.h>
#include <inttypes.h>
#define F_CPU 12000000
#include <util/delay.h>
uint8_t debounce (volatile uint8_t *port, uint8_t pin) // was ist das
alles
{
if (! (*port & (1 << pin)) ) // was macht das
{
_delay_ms(50); // soll 50ms warten
_delay_ms(50); // soll 50ms warten
if (*port & (1 << pin)) // was macht das
{
_delay_ms(50); // soll 50ms warten
_delay_ms(50); // soll 50ms warten
return 1; // was macht das
}
}
return 0; //frage steht bei return 1
}
int main(void)
{
DDRD &=~(1 << PD0); // was tut das
PORTD |= (1 << PD0); // was tut das
DDRC=0xFF; // aktiviert alle Ports als Ausgang
while(1) // endlos Schleife
{
if(debounce(&PIND,PD0)) // das verstehe ich auch nicht
PORTC =~ PORTC; // invertiert den Wert auf PORTC
}
}
Machen wir dann deine Hausaufgaben?
Wie dem auch sei, Szenario ist also, du hast das Programm bekommen und
sollst nun das Programm verstehen und, um das zu zeigen, das Programm
dokumentieren.
Was mich etwas wundert ist, dass hier noch niemand geschrieben hat, dass
du dir bitte ein C-Buch besorgen sollst.
Ich geb dir mal nen Link dazu:
http://openbook.galileocomputing.de/c_von_a_bis_z/
Wenn du die einzelnen Schlüsselwörter aus deinem Programm (z.B. return,
volatile etc) da suchst, bekommst du schon ne gute Hilfe.
Dann such mal nach logischen Operatoren in selbigem Buch, dann wirst du
verstehen was "~" "&=" etc bedeutet.
Die groß geschriebenen Sachen wie DDRC scheinen mir in irgendeiner
Headerdatei definiert zu sein und in deinem Fall für Portzugriffe
verwendet zu werden.
Ich hoffe ich konnte dir damit zumindest etwas helfen, deine
Hausaufgaben zu erledigen.
Sven H. schrieb:> Wie dem auch sei, Szenario ist also, du hast das Programm bekommen und> sollst nun das Programm verstehen und, um das zu zeigen, das Programm> dokumentieren.
oder: er sollte es programmieren und dokumentieren, hat sich das
Programm schon geschnorrt und muß jetzt noch den Rest machen lassen.
Fil Janev schrieb:> Hallo>> Ich muss das Programm Tastenentprellen dokumentieren.
Hausaufgabe. Siehe Beitrag "Einheitlicher Umgang mit faulen Schülern etc.?"> Ich programmiere im AVR Studio
Du meinst, du arbeitest mit AVR Studio. Würdest du damit selbst
Programme schreiben, wüsstest du vermutlich was dein Programm an welcher
Stelle warum tut.
> Ich brauche die Kommentare weil ich sonst durchfalle da ich eh schon> schlecht genug bin.
Das ist der Sinn des Durchfallens. Du bekommst die Möglichkeit, das
ganze Jahr zu wiederholen und deine Wissenslücken zu stopfen.
> Es kennt sich von meinen Klassenkollegen fast leider niemand aus.
Oder sie sehen nicht ein, warum sie deine Faulheit(?) unterstützen
sollen.
> Ich hoffe ihr könnt mir helfen Es ist mir sehr wichtig.
Und wie lautet nun deine Erklärung für deine Wissens-/Verständnislücken?
Es scheint mir, dass Du zunächst nicht verstanden hast, was man darunter
versteht ein Programm zu kommentieren. (Ich weiss allerdings nicht was
Dein Lehrer dafür hält).
Wie Du Deinen eigenen Kommentaren ansehen kannst, z.B. bei den delays,
ist Dein Kommentar im wesentlichen nur eine Übersetzung ins Deutsche.
Allein aufgrund des Funktionsnamens auf Englisch weiss ohnehin jeder das
eine Verzögerung stattfindet. Dein "Kommentar" fügt also nichts neues
hinzu.
Sinngemäß gilt das auch für Dein restlichen Kommentare. Wer die Sprache
C kennt braucht Deinen Kommentar nicht.
Bei einem Kommentar setzt man in der Regel voraus, das die
Programmfunktion, was und wie es das im groben tut, beschrieben ist. Ein
Kommentar fügt nur an gewissen Stellen die Information hinzu, warum an
einer gewissen Stelle ein bestimmter Befehl/Funktion bzw. eine Folge
davon verwendet wird.
Was "debounce" heisst, schlägst Du bei google bzw. Leo nach. Hier siehst
Du auch gleich, welchen Vorteil "sprechende" Funktionsnamen haben. Sie
machen einen Kommentar überflüssig.
Was die Anweisungen betrifft, zu denen Du geschrieben hast, Du verstehst
nicht, was sie tun, solltest Du dies aus dem Unterricht, bzw. aus Deinen
Notizen dazu kennen.
Du schreibst selbst, das Du nicht so gut dastehst. Das ist die Folge
davon, das Du nicht aufmerksam warst und die Themen nicht für Dich
durchdacht hast. Wir sind hier nicht dafür da, Deine Hausaufgaben zu
machen oder Deine Untätigkeit auszugleichen. Schlage die Befehle, die
Syntax usw. in Deinem Buch über C nach.
Viel Erfolg.
Um auch etwas konstruktives beizutragen:
In dem genannten Buch über C steht eher nur die Sprache
beschrieben; in dem programm tauchen aber auch noch Dinge
auf, die für den Controller spezifisch sind.
Die sind besser zu verstehen, wenn man etwas wie das hiesige
Tutorial durcharbeitet und kapiert:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Zur Dokumentation könnte man in der Einleitung schreiben, wozu das ganze
gut ist. Weiter gehört eine Beschreibung eines typischen Eingangssignals
und des gewünschten Ausgangssignales dazu. Dann kann man verschiedene
Algorithmen aufzählen, eventuell kurz beschreiben und den eigenen
genauer erklären. Weiter geht es dann mit der Beschreibung der Umsetzung
im eigenen Programm (Initialisierung, Programmablauf) und der
Quellenangabe, woher das stammt ;-)
Da kannst du schon mal einiges schreiben...
Fil Janev schrieb:> Da ich leider sehr wenig oder sogar keine Ahnung was ich schreiben soll> könnt ihr mir versuchen zu schreiben was das tut. Ich brauche die> Kommentare weil ich sonst durchfalle da ich eh schon schlecht genug bin.> Es kennt sich von meinen Klassenkollegen fast leider niemand aus.
Das glaub ich ehrlich gesagt nicht.
Das Programm ist so einfach, das ist schon fast grundlegend.
Wie man kommentiert wurde ja schon gesagt
(kommentiere nicht das WIE sondern das WARUM. Das WIE steht im Code)
Und um etwas 'sinnvolles' beizutragen, mach ich den Thread dicht. Das
Forum ist sich sowieso (hoffentlich) darin einig, dass das wenig Sinn
macht. Wer dieses grundlegende Programm nicht versteht, sollte meiner
Meinung nach in diesem Fach keinen positiven Abschluss bekommen. Ein
Abschluss soll belegen, dass man zumindest die grundlegensten Dinge
verstanden und gelernt hat. Davon ist nichts erkennbar, wenn dieses Pgm
Probleme in der beschriebenen Form macht. Also wäre ein Abschluss auch
nicht gerechtfertigt. Zumal die Aufgabe noch nicht mal besonders schwer
ist. Da sind hauptsächlich Elemente drinnen, die gehören in die erste
oder zweite Stunde µC Programmierung, gleich nach der Grundausbildung in
C-Programmierung. Wer regelmässig seine Hausaufgaben gemacht hat, sollte
damit keinerlei Schwierigkeiten haben.
Nachtrag: Das fängt schon mit der äusseren Form das 'Programms' an.
Schon die ist unter jeder Kritik.