Wie kann ich einen Fensterkomparator mittels AVR realisieren? Er sollte innerhalb 3 Spannungsbereiche und zusätzlicher Lichtschranke jeweils eine andere Aktion mittels SPI-Bus durchführen. Hab mir das mit UND-Funktionen überlegt.Nur wie gebe ich die Spannungsbereiche für die Fenster ein?Ideen Ratschläge??? ich bin für alles offen und leider Anfänger, lese mich aber grad ein.
Zu messende Spannung am AD-Wandler anlegen (u.U. über Spannungsteiler). AD-Wandler einlesen. AD-Wert mit entsprechenden Grenzwerten vergleichen Nachgucken, ob Lichtschranke auch irgendwas gemacht hat. Daten per SPI ausgeben. sozusagen: Pippifax
>>Nur wie gebe ich die Spannungsbereiche für die Fenster ein? Über Konstanten, die Du im AVR-Flash oder AVR-EEPROM ablegst oder über eine Anwender-Schnittstelle, wie zum Beispiel ein Display und ein paar Tasten oder einen Drehencoder.
Stichwort: Pippifax mal langsam autofahren musste man auch erst lernen und es war schwer jetzt kanns jeder und ist jetzt pippifax.ich muss es noch lernen...das programmieren... hilft mir nicht weiter wenn ich die Befehle dazu nicht kenne,das prinzip aber schon ich muss zwischen den fenstern jeden gemessenen spannungswert eine bitfolge zuweisen. die frage ist wie kann ich die grenzwerte der fenster definieren?(befehle) mit der lichtschranke/Reed-Relais habe ich mich missverständlich ausgedrückt.. der AVR soll die spannung messen und gleichzeitig die lichtschranke/Reed-Relais auswerten, das ganze mit einer UND-Verknüpfung abhängig vom Spannungswert an die SPI-schnittstelle hoffe ich habs jetzt nicht geschafft alle komplett zu verwirren @ Travel Rec. wie kann ich diese konstanten definieren?Mögliche Schnittstellen fallen aus;soll automatisch funktionieren ohne manuelle eingriffe @ crazy horse hilft das weiter?
Ist das wirklich so schwer, daß man sich das nicht mit dem gesunden Menschenverstand überlegen kann? Z.B. so: Wenn der ADU einen Wert < 100 liefert, dann liegt er im Fenster 0 Wenn der ADU einen Wert < 200 liefert, dann liegt er im Fenster 1 Wenn der ADU einen Wert < 300 liefert, dann liegt er im Fenster 2 usw. usf. -- eben so, wie man das auch machen würde, wenn man zu Fuß irgendwelche Größen in Größenklassen einsortieren will.
in Assembler: cpi ADWERT, Konstante ;ADWert 8Bit vom AD-Wandler, Konstante 0-255 brcs Sprungmarke ... oder: cpi ADWERTL, low(Konstante) ;ADWertL untere 8 Bit vom AD-Wandler cpc ADWERTH, high(Konstante) ;ADWertH obere 8 (2) Bit vom AD-Wandler brcs Sprungmarke ... Schau Dir mal die Befehlsübersicht des Assemblers im AVR-Studio und einiger der vielen Beispielcodes in der Codesammlung und der AppNotes von ATMEL an.
Wieso denn jetzt auch noch in Assembler??? Meinst du nicht, daß Thomas zuerst mal mit einer höheren Programmiersprache anfangen sollte?
Auf keinen Fall. Ich selbst habe einst mit ASM begonnen und bin dabei geblieben. Bislang habe ich alle meine Projekte damit bewältigen können und das sind inzwischen etliche! Aber das soll der Thomas mal selbst entscheiden und es war ja nur ein Tip, wie man es machen kann.
Nun ja, ich programmiere selbst seit Jahrzehnten in ASM, aber das einem Anfänger zum Einstig zu empfehlen, ist ungefähr so sinnvoll, wie einem Kind das Schwimmen beizubringen, indem man es einfach ins Wasser wirft...
Das siehst Du so. Die Struktur der einzelnen ASM-Befehle zu verstehen ist ziemlich einfach, vor allem, wenn man mit 5 Befehlen anfängt und, nachdem die erste LED dann blinkt, sich langsam steigern kann. Außerdem braucht man außer den Datenblättern und AppNotes keine weitere Fachlektüre. Der ideale Wochenendspaß.
Uhu Uhuhu wrote: > ..., ist ungefähr so sinnvoll, wie einem > Kind das Schwimmen beizubringen, indem man es einfach ins Wasser > wirft... ...oder um bei Thomas' Autofahr-Vergleich zu bleiben: wie einem das Autofahren beizubringen, indem man ihm die Einzelteile des Autos vor die Nase legt. Nach dem Zusammenschrauben weiß er zwar, wie das Auto funktioniert (und kann es notgedrungen auch fahren, schließlich musste er oft genug zwischendrin ausprobieren, was schon funktioniert), aber es ist dann wohl einige Zeit ins Land gegangen. Um die Frage aber für Thomas passend zu beantworten, müsste man wohl auch seine Umgebung (Programmiersprache, Debugmöglichkeiten, ...) kennen.
>Um die Frage aber für Thomas passend zu beantworten, müsste man >wohl auch seine Umgebung (Programmiersprache, Debugmöglichkeiten, >...) kennen. Die Vorkenntnisse im Umgang mit programmierbaren Bausteinen mal nicht zu vergessen.
Hi @Jürgen: Dein Vergleich hinkt etwas. Im Gegensatz zum Autofahren MUSST du zum Programmieren deinen wissen, was jedes Register und jedes Bit bewirkt. Das hat nichts mit der Programmiersprache zu tun. Wenn ich die Fragen hier im Forum betrachte komme ich aber zu dem Schluss, daß C-Anfänger mehr mit der Spache, ASM-Anfänger mehr mit der Umsetzung Probleme haben. MfG Spess
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.