Variable+Wertebereich = Problem

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 27 9 2024  21:54:07      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Variable+Wertebereich = Problem

    







BID = 510456

Kleinspannung

Urgestein



Beiträge: 13354
Wohnort: Tal der Ahnungslosen
 

  


Hallo µc-Experten!

Euer Programmier-Dau hat mal wieder ein Problem.
Folgender Sachverhalt:
Der AD-Wandler des Mega 8 liest mir 2 Temp.-Sensoren aus,und speichert den Wert(8-Bit) in zwei Variablen.Damit wird dann die PWM für ein paar Lüfter gesteuert.Funktioniert soweit auch.ICh möchte aber eine "Treppe" damit die Sache nicht auf kleinste Änderungen reagiert.
Also :
AD-Wert von A-B = PWM-Wert X
AD-Wert von B-C = PWM-Wert Y
usw.
Hoffe mich halbwegs verständlich ausgedrückt zu haben...

Ich habe das Problem mit einer Menge If > Then Anweisungen gelöst,aber das ist umständtlich,und nicht so das wahre.Funktioniert aber auch so schlecht und recht...
Und nun die (wahrscheinlich blöde) Frage:
Wie macht man das richtig,einen Wertebereich so zu organisieren,das an bestimmten Punkten bestimmte Ausgaben/Reaktionen erfolgen können?
Bzw. wo könnte ich das mal Blondinensicher erklärt nachlesen?

Und falls sich einer erbarmt,dann noch ein Hinweis:
a)ich bin auf dem Gebiet geistig minderbemittelt
b) kann nur etwas Bascom

Danke für das lesen bis hierher!






_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)

BID = 510458

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

 

  

Kommt drauf an, gibt viele Möglichkeiten:

Du hast 256 versch. Kombinationsmöglichkeiten. Wieviele "Treppenstuffen" sollen denn vorhanden sein?

Wenn jeweils nur beim übernächsten Wert geschaltet werden soll, oder beim vierten, achten, etc. oder allgemein beim Vielfachen von 2^n, dann teilst du durch n (n mal alle Bits nach rechts schieben) und gibts das ganze auf ein Select-Case-Konstrukt:

dim i as byte

i = ADC

i = i / 4

select case i
case 0: ...
case 1: ....

end select


Du kannst auch, wenn genügend SRAM vorhanden ist und die Treppe nicht linear ist, ein Array mit Anzahl Indizes wie möglichen ADC-Werten anlegen, zu Anfang dann manuell das Array füllen und dann sagen:

dim i as byte

i=ADC

PWM = tab[i]
EditIn Basic greift man auf Arrays mit normalen Klammern zu, das hier war C. Es müsste heißen: PWM = tab(i)


Etwas effizienter ginge das weniger abstrakt direkt im Flashrom mit Tabellen, also quasi das gleiche wie mit Arrays, nur SRAM-schonender. Nur wie das in Bascom geht - keine Ahnung.

Edit:
Ha! Ich bin sowas von Blondine... Meine Haare sind fast so lang, dass sie zum Bauchnabel reichen .
Also sieh dich vor, wie du über Blondinen spricht



_________________


[ Diese Nachricht wurde geändert von: DonComi am 24 Mär 2008 23:16 ]

[ Diese Nachricht wurde geändert von: DonComi am 24 Mär 2008 23:18 ]

BID = 510462

Kleinspannung

Urgestein



Beiträge: 13354
Wohnort: Tal der Ahnungslosen


Zitat :
DonComi hat am 24 Mär 2008 23:14 geschrieben :

Wieviele "Treppenstufen" sollen denn vorhanden sein?

Na so 4 oder 5 reichen völlig

Zitat :

gibts das ganze auf ein Select-Case-Konstrukt:

Wenn du das grad so sagst...
Davon habe ich schon mal was gelesen (glaube in Zusammenhang mit einem elektron."Würfel").
Mal sehen,ob ich das hinbekomme

Zitat :

Nur wie das in Bascom geht - keine Ahnung.

Ja,ich weiß...
Sollte mich gefälligst befleißigen,Assembler zu lernen.
Nur das geht in meine Birne nicht rein,Bascom versteh ich wenigstens soweit,das da wenigstens manchmal was brauchbares rauskommt

Zitat :

Ha! Ich bin sowas von Blondine...

Jo,ich auch.
Auch wenn von meiner "blonden Mähne" jetzt auf meine alten Tage nicht mehr viel von über geblieben ist...

_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)

BID = 510465

Jornbyte

Moderator



Beiträge: 7143

Das ASM-Angebot hatte ich dir schon mal gemacht....

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 510466

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Wenns wirklich nur 4 oder 5 sind, dann ist es doch einfach, solange die Differenz von einem zum nächsten Punkt gleich ist. hier dann einfach durch (256/5) teilen und so runden, dass immer eine gleiche Verteilung aller Werte vorhanden ist.
NUR: die Daten werden doch nicht schon linear sein?
Da bringt dann rechnen nicht viel - da muss dann wirklich ne Tabelle rein.


Die Tabelle liegt irgendwo im ROM. Das erste Element (Basic b) hat den Wert für ADC=0, denn der ADC-Wert wird auf b addiert und der Wert aus der Tabelle geholt.
Schwups - ist die Treppe fertig...

Edit:
Schau mal nach, ob man Dateien später zu den Objekt-Dateien vom Bascom-Compiler linken lassen kann. Dann zeig ich dir das mit den Tabellen. Noch toller wäre es, wenn man die Objektdateien vom Basiccompiler mit gcc verarbeiten könnte. Ich könnte dir dann die Teile, die du nicht mit Basic machen kannst, programmieren, dazulinken und das Hexfile schicken .

Edit2: oder lern Assembler .

_________________


[ Diese Nachricht wurde geändert von: DonComi am 24 Mär 2008 23:42 ]

[ Diese Nachricht wurde geändert von: DonComi am 24 Mär 2008 23:43 ]

BID = 510732

selfman

Schreibmaschine



Beiträge: 1681
Wohnort: Seekirchen a. W.


Zitat :
Etwas effizienter ginge das weniger abstrakt direkt im Flashrom mit Tabellen, also quasi das gleiche wie mit Arrays, nur SRAM-schonender. Nur wie das in Bascom geht - keine Ahnung

Im original BASIC hießen die Befehle:

READ und DATA

Mit DATA gefolgt von einem Bezeichner und einer sinnlosen Wursch von Werten, die nur durch den Speicherplatz begrenzten Anzahl wurde, wurde das Array angelegt.

Und READ hat mit jedem Durchlauf einen Wert ausgelesen, angefangen beim ersten usw. Irgenwelche Befehle um auf ein nummernmäßig bezeichnetes Element zuzugreifen gab es glaub ich auch.

Ob es was vergleichbares bein BASCOM auch gibt,

Schöne Grüße Selfman

_________________
Traue keinem Ding, das du nicht selber vermurkst hast.

BID = 510787

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein


Zitat :
selfman hat am 25 Mär 2008 22:05 geschrieben :

Im original BASIC hießen die Befehle:

C64 oder Apple II ?

[ Diese Nachricht wurde geändert von: hajos118 am 26 Mär 2008  7:43 ]

BID = 510808

selfman

Schreibmaschine



Beiträge: 1681
Wohnort: Seekirchen a. W.


Zitat :
C64 oder Apple II ?

Muß ich jetzt nicht verstehen, oder?

Basic ist grundsätzlich eine Hochsprache und somit sind die Befehle unabhängig von der Hardware.

Das jeder Basicinterpreter damals eine etwas eigenständige Interpretation über den Umfang der Sprache und die Funktion der Befehle hatte, steht auf einem anderen Blatt.
Das war aber nicht im eigenlichen Sinn der Sache, sondern vielmehr eine Versuch seitens der Hersteller in die Sprache auf einfach Art und Weise ein paar Vorteile seiner Maschine zu implementieren.

Letztendlich war es aber eine Inkonsequenz im Sinne der Sache!

Ach übrigens: TI99-4A

Schöne Grüße Selfman

_________________
Traue keinem Ding, das du nicht selber vermurkst hast.

BID = 510880

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

Na ja, das waren die beiden Vertreter, die praktisch einen BAsic-Interpreter als Benutzeroberfläche hatten.
Beide hatten so ihre Eigenarten.
btw.: Der "DATA" - Befehl benötigt keinen Bezeichner sondern nur eine Liste mit Werten - Mittels dem "READ" Befehl wird dann jeweils ein Wert aus der Liste der entsprechenden Variable zugewiesen. (Dann fehlt noch "RESTORE" - Damit wird der DATA Befehl == Zeiger auf den nächsten Wert wieder zurückgesetzt)
... Ach ist das lang' her ....


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 16 Beiträge im Durchschnitt pro Tag       heute wurden bisher 13 Beiträge verfasst
© x sparkkelsputz        Besucher : 182085092   Heute : 5724    Gestern : 5794    Online : 632        27.9.2024    21:54
5 Besucher in den letzten 60 Sekunden        alle 12.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0516669750214