Hi, Ich habe ein kleines Problem. Ich suche einen Befehl für Bascom um ein 8 Bit muster auf 8 pins zu verteilen und auszugeben(siehe anhang) Ich steh da auf dem Schauch. Kann mir da einer weiter helfen. Ich verlange keine kompletten codes, sondern nur einen Tipp / Denkanstoß. :) mfg
:
Verschoben durch User
1 | DDRA=&B11111111 'Port A alle Mann sind Ausgang |
2 | DIM Horst as Byte 'Auszugebendes Byte |
3 | DIM Zaehler as Byte 'Variable für Zaehler |
4 | Do |
5 | For Zaehler = 255 to 0 'Runterzählen |
6 | Horst = Zaehler 'zum Testen die Variable "Horst" mit "Zaehler" füllen |
7 | Porta = Horst 'und den Wert gleich ausch am Port A ausgeben |
8 | Next Zaehler |
9 | |
10 | Loop |
11 | |
12 | Print "MfG Paul" |
13 | |
14 | End |
Ich hoffe, daß ich Deinen Willen richtig verstanden habe.
:
Bearbeitet durch User
Das mit dem Zähler ist eine gute Idee. Das werde ich ausprobieren. Da die effektivität des Codes in meinem Fall keine Rolle spielt, habe ich da trotzdem noch ein anliegen. Die Byte variable z.b. 00001011 kommt ja schon genau so im m32 an. Der m32 hat ja nur die Aufgabe diese Byte variable aus einem Speicher auszulesen und in seinem CASE zu verlagern wo dann Dim "Zaehler/CASE" as Byte festgelegt wird. Ist das nicht irgendwie alles doppelt gemoppelt? Ansonsten vielen dank erstmal für die schnellen antworten.
Michael schrub: >Der >m32 hat ja nur die Aufgabe diese Byte variable aus einem Speicher >auszulesen und in seinem CASE zu verlagern wo dann Dim "Zaehler/CASE" as >Byte festgelegt wird. Ägypten, Bahnhof, 8-er Inbus??? Das habe wahrscheinlich nicht nur ich nicht verstanden, sonst hätte schon jemand eine vernünftige Antwort gegeben. MfG Paul
Ich denke, er hat gar nicht begriffen, was das wesentliche in Pauls Beispiel war. Der Zähler ist dort ja nur eine Zutat, damit sich im Testprogramm irgendwas tut. Mit der eigentlichen Ausgabe hat er ja überhaupt nichts zu tun. Die beschränkt sich auf
1 | Porta = Horst 'und den Wert gleich ausch am Port A ausgeben |
wo ganz einfach der Inhalt der Variablen 'Horst' auf dem Port ausgegeben
wird. Der Rest des Programms ist ja nur schmückendes Beiwerk, damit
'Horst' unterschiedliche Werte annimmt.
Da die eigentliche Ausgabe somit trivial ist, denke ich der Knackpunkt
in seinem Nichtverständnis liegt hier
> ie Byte variable z.b. 00001011 kommt ja schon genau so im m32 an.
Wetten, das da wieder mal irgendwas anderes dahinter steckt?
Vielleicht eine String-Übertragung mittels UART (aber das ist dann schon
wilde Spekulation).
Karl Heinz schrieb: > Vielleicht eine String-Übertragung mittels UART (aber das ist dann schon > wilde Spekulation). Hi, Übermittelt wird das ganze mit nem i2c Protokoll, wo der m32 die Bytevariable aus einer externen Speicheradresse in sich hinein saugt, und an seinen 8 Pins verteilt. Der m32 soll in diesem i2c transfer in grunde genommen nur als "vermittler" dienen, da ja der D/A Wandler das ja nicht kann, eine adresse anzuwählen muss eben der atmega her.
Ich bin dafür nun endlich den Bascom nerds ein eigenes Unterforen zu spendieren ,dann brauch man da gleich erst gar nicht mehr reinschauen.
Michael schrieb: > in sich hinein saugt, > und an seinen 8 Pins verteilt. Ich weiß ja nicht, wie er die Variable "in sich hinein sagugt", aber das "verteilen" an seine 8 Pins geht einfach mit
1 | Porta=$98 |
2 | oder |
3 | Porta=&b10011000 |
Die beiden Zeilen sind gleichwertig und geben die Zahl aus deinem Bild im ersten Beitrag wieder.
@honk dafür genügte es hier den Threadtitel zu lesen. Ansonsten ist das Missbrauch eines Atmega32 zum Kröteneimer aka Datenschaufel. ts ts ts
Mal doch mal ne Skizze, damit wir verstehen was Du da meinst??? Übermittelt wird das ganze mit nem i2c Protokoll, wo der m32 die Bytevariable aus einer externen Speicheradresse in sich hinein saugt, und an seinen 8 Pins verteilt. Bis hier ok Der m32 soll in diesem i2c transfer in grunde genommen nur als "vermittler" dienen, da ja der D/A Wandler das ja nicht kann, Ab hier Bahnhof !!! eine adresse anzuwählen muss eben der atmega her.
Winfried J. schrieb: > Ansonsten ist das Missbrauch eines Atmega32 zum Kröteneimer aka > Datenschaufel. Der muss ja viele andere sachen auch noch machen, so ist es ja nicht... :) hf schrieb: > Ich weiß ja nicht, wie er die Variable "in sich hinein sagugt" Na im Externen Speicher ist bsp. die Byte variable 11101101 hinterlegt und kann ausgelesen werden. Der Atmega kontaktiert diesen adressspeicher und nimmt dieses gesammte eine Byte, so wie es ist, auf.
Michael schrieb: > Der Atmega kontaktiert diesen adressspeicher > und nimmt dieses gesammte eine Byte, so wie es ist, auf. Ja, und wo ist jetzt das Problem? Du willst einen Befehl, um die 8 Bits dieses Bytes an deine Pins vom Port A auszugeben. Ich schrieb ja schon: Entweder
1 | Porta=$98 |
oder
1 | Porta=&b10011000 |
Damit liegt das Byte an den Pins vom Port A an. Das hatte ich auch schon ganz oben im 2. Post geschrieben.
Den Post hab ich garnicht gesehen :D aber danke für die vielen tipps. Ich werde dann weiter Doktor´n
Michael schrieb: > Den Post hab ich garnicht gesehen :D > aber danke für die vielen tipps. Ich werde dann weiter Doktor´n Paul hatte auch schon den gleichen Tipp gegeben. Nur daß er die Variable eben nicht von irgendwo "gesaugt" hat, sondern einen Zähler von 255 bis 0 benutzt hat, um verschiedene Bitmuster zu erzeugen, die er dann mit der Variablen "Horst" an den Port A ausgegeben hat. Da hast du in diesem Thread schon reichlich viele Tipps übersehen ;-)
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.