Hallo, ich würde gerne einen String, der aus 8 Zeichen besteht ( 01010101 ) über die Serielle an meinen AVR schicken. das ist ja auch kein problem. jetzt soll genau dieser String am PortB ausgeben werden. PORTB = &B01010101 Nur wie kann ich mithilfe von Bascom den Empfangenen String auslesen und auf PortB wiedergeben ? mfg Kay
sorry, muss noch dazusagen, das sich der String natürlich auch ändert. also nicht immer 01010101 ! ciao Kay
ähm...ein string ist eine zeichenkette. das was du meinst sind wohl bytes. du schreibst das empfange byte in eine variable (als byte deklariert) und setzt den port dann auf diese variable (portb = variable)
hallo anfänger, ich habe ein Terminalprogramm. mit dem sende ich "01010101" an den AVR. das sind doch aber 8 Byte oder ? muss ich dann jedes Byte einzeln deklarieren ? mfg Kay
Hallo Kay, du darfst nicht den String "01010101" senden, sondern nur e i n Zeichen/Byte wie z.B. U! Zur Erklärung: &B01010101 = Dezimal 85 = Ascii-Zeichen U &B01000001 = Dezimal 65 = Ascii-Zeichen A usw. Also sendest du einfach z.B. ein "U" über die serielle Schnittstelle. In BASCOM: DDRB = &B11111111 ' PortB alles Ausgänge Do PORTB = Waitkey() ' warten auf ein Zeichen/Byte auf ' der Schnittstelle und ' nach Eingang dem PortB zuweisen Loop Grüße ATmega8Tester
Hi, du kannst es auch anders machen. Mit dem Befehl Inputbin kannste direkt Byte's pruefen. Mfg Dirk
Hallo @Dirk es gibt ja wie bekannt verschiedene Wege nach Rom... :-) @Alle Ich für meinen Teil habe mir angewöhnt in BASCOM die zu realisierende Aufgabenstellung durchaus mit zwei, drei Ansätzen zu untersuchen. Der Unterschied in den vom Compilat (bin-Daten) belegten Ressourcen im Flash kann nicht unerheblich sein. In unserem Beispiel wohl eher zu vernachlässigen: PORTB = Waitkey() 14 Byte weniger wie Inputbin PORTB auch hier wohl eher zu vernachlässigen: LCD Chr(65);Chr(66);Chr(67);Chr(67);Chr(68);Chr(69) 10 Byte weniger wie LCD "ABCDEF" PS: Funktionen wie Waitkey, Input, Print verwende ich eigentlich nur für Testzwecke, da sie eine BASCOM-Software-Emulation der USART darstellen und sehr viel Ressourcen benötigen. Ich verwende lieber die AVR-Register und Interrupts der USART direkt in BASCOM und kann somit eine gepufferte interruptgesteuerte Übertragung mit weitaus weniger Ressourcen realisieren. Gruß ATmega8Tester
Hallo Dirk, wie kann ich das mit InputBin lösen ? die Bascom Hilfe dazu versteh ich net. danke Kay
DDRB = &B11111111 ' PortB alles Ausgänge Do Inputbin PORTB ' warten auf ein Zeichen/Byte auf ' der Schnittstelle und ' nach Eingang dem PortB zuweisen Loop
Hi, es ist aber sinnvoll noch ein Ringbuffer fuer den Empfang zunutzen und nicht direkt den interrupt des UART's. Config Serialbuffer ..... Mfg Dirk
hi, es gibt also keine relativ einfache möglichkeit, einen "String" z.b. 01010101 über die serielle zu schicken und mir dann so am Portx auszugeben ? dann werde ich halt rumprobieren müssen. danke für eure antworten gruß Kay
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.