Forum: Mikrocontroller und Digitale Elektronik Lauflicht Atmega8 Unter C


von Ludwig (Gast)


Angehängte Dateien:

Lesenswert?

Das lauflicht ist mit dem ATMEGA 8   Gebaut worden
Es gibt auch ein Code für das Lauflicht

Ich würde mich sehr freuen wenn wer sich den Beitrag einer Annimmt oder 
wenn Fragen hat



Ein Gruß Ludwig63

von E...... B. (ludwig63)


Angehängte Dateien:

Lesenswert?

Das lauflicht ist mit dem ATMEGA 8   Gebaut worden
Es gibt auch ein Code für das Lauflicht

Ich würde mich sehr freuen wenn wer sich den Beitrag einer Annimmt oder
wenn Fragen hat



Ein Gruß Ludwig63

: Bearbeitet durch User
Beitrag #4999231 wurde vom Autor gelöscht.
Beitrag #4999233 wurde von einem Moderator gelöscht.
Beitrag #4999236 wurde von einem Moderator gelöscht.
von pegel (Gast)


Lesenswert?

Na gut:

1. es ist sinnvoll die Pins am Atmega zu beschriften und nicht einfach 
nur durch zu nummerieren, denn nicht jeder holt jetzt das Datenblatt 
hervor

2. die Dioden sind falsch herum

3. wer liefert 5V Batterien?

4. wir wissen jetzt das du PortD beschreiben kannst und den delay kennst

5. wenn du es besser machen willst, nimm Schleifen und Arrays

6. es bringt nicht viel anonym aufzutreten und seinen Namen in den 
Quelltext zu schreiben ;)

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Als 'Hello world' nicht schlecht, kostet aber doch einiges an Speicher.
Weiter bist Du so recht unflexibel.

Ok, wenn der µC erst Mal 'in the wild' ist und eh nur sein Programm 
abspult, ist's egal, wie das Programm aussieht, aber Das geht auch 
schöner.

Mir ist nicht bekannt, ob der Aufruf 'delay(20)' jedes Mal einen 
Codeblock generiert, oder ob in den Tiefen der Includes eine Funktion 
aufgerufen wird - bei Erstem wäre Platz einzusparen, wenn man das Delay 
selber in eine Funktion packt.

Sofern die LEDs in eine Richtung laufen, kann man Das mit 
Bit-Manipulation machen.
So lässt der Assembler-Befehl 'LSL' die Bits eine Position nach links 
wandern (ein einfaches x2 tut das Gleiche und wird vom Compiler wohl in 
ein LSL ersetzt).
Wenn dabei die Reihe aufgefüllt werden soll, kommt ein +1 dazu und das 
rechte Bit wird gesetzt.

Wenn über mehrere Ports verschoben werden soll, kann man das Carry-Flag 
dafür benutzen.
LSL r0
ROL r1
schiebt die Bits in r0 um eine Position nach links.
Wenn dabei ein Bit links raus fällt, landet Das im CF.
Mit ROL wird 'über das Carry' geschoben - also das CF wird rechts rein 
geschoben, wenn links ein Bit raus fällt, landet Das wieder im CF.
Mit weiteren ROL könnte man weitere Ports in das Lauflicht involvieren.

Für 'nach Rechts' wäre :2 das Mittel meiner Wahl (bzw. LSR/ROR in 
Assembler).
Zum Setzen des linken Bit des linkesten Port käme nach dem :2 noch ein 
+128 (Bit7 setzen) dazu, um die Reihe aufzufüllen.

So kannst Du Dir verschiedene Leuchtmuster konstruieren, Die Du 'frei 
Schnauze' im Programm aufrufen kannst.

Diese Bitschiebereien kannst Du dann auch 'nur 1x' ausführen und so eben 
nur um eine Stelle verschieben.

Da an Deinem ATmega noch nen paar Pinne frei sind, kannst Du ja noch 
weitere Sensoren/Taster/whatever anbauen und ins Programm integrieren.

Ändere aber immer nur EINE Kleinigkeit.
Wenn dann ein Problem auftritt, hast Du nur EINEN Punkt, wo Du ansetzen 
musst.

Weiterhin viel Spaß mit den Lauflichtern :)

MfG

PS:
https://vid.me/UxLv
(von 20.8°C auf 20.9°C, DS18B20)

: Bearbeitet durch User
von Hubert G. (hubertg)


Lesenswert?

Der Mega8 ist für max. 16MHZ mit Quarz spezifiziert. Da kein Quarz 
vorhanden ist, läuft der interne Oszillator default mit 1MHz.
Wie kommst du auf #define F_CPU 20000000UL
Das AVCC und AGND mit versorgt werden sollen und ein 100n Kondensator 
zwischen VCC und GND und AVCC und AGND gehört sei nur am Rande erwähnt.

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.