Hallo zusammen, ich programmiere schon sehr lange in freebasic, jedoch hab ich zu Bascom ein paar Fragen. Programmiert wir ein Atmega 8 Mikrocontroller. Der genaue Typ ist atmega8a-pu. Ich hab einen Code zur Ansteuerung des rfm12 Moduls gefunden, hab den auch schon auf meine Bedürfnisse angepasst, jedoch erscheinen mir zwei Sachen anderst im Gegensatz zu freebasic. Diesen Teil meine ich nur: dim data_in(10) as byte dim text as string * 10 For N = 1 To 10 Wait_rfm12 D = &HB800 + Data_in(n) : Gosub Wert Next N der liest doch 10 Bytes in das array data_in ein. wenn ich jetzt diese Daten in einen String packen will, dann sieht es doch so aus oder? text = "" For N = 1 To 10 text = text + data_in(n) Next N Ist echt wichtig, da die Daten im String dann über die serielle Schnittstelle zum PC übertragen werden. Die nächste Frage wäre das Deklarieren des amtega8. So steht es im Code: $regfile = "m8def.dat" $hwstack = 32 $swstack = 10 $framesize = 40 Passt das so? Wäre echt nett, wenn mir jemand umgehend helfen könnte, da ich mit den Lötarbeiten heute noch fertig werde. Meine Programme sind außer auf die oben beschriebenen Probleme fertig geschrieben. Cu Andy
Dein Programm ist nicht vollständig, deshalb kann man das so pauschal nicht beantworten. Du kannst es einfach mit dem eingebauten Simulator testen. Da kannst Du das Wait_rfm überspringen und immer einen festen Wert pro Schleifendurchlauf addieren, und dabei zusehen, wie sich Dein String zusammenbaut und ob es so ist, wie Du es Dir vorstellst. Oder frag präziser: welche Zeile im Quelltext versthest Du nicht?
danach steht im array da er immer ein Byte gespeichert hat: data_in(1) = "A" data_in(2) = "N" data_in(3) = "D" data_in(4) = "R" data_in(5) = "E" data_in(6) = "A" data_in(7) = "S" data_in(8) = "." data_in(9) = "." data_in(10) = "." text = "" For N = 1 To 10 text = text + data_in(n) Next N sieht dann der string text so aus? text = "ANDREAS..."
Du hast den µC samt BASCOM am PC vor dir. Was hindert dich daran, es einfach mal auszuprobieren wenn du dir schon nicht die Mühe machen willst, das mit der BASCOM Doku abzuklären (die zugegebenermassen in den Details ein wenig lückenhaft ist) Du kennst den Input, du hast eine Hypothese was deiner Vorstellung nach passieren müsste. Du hast eine Vorhersage wie das Ergebnis (wenn deine Hypothese richtig ist) aussehen müsste. Jetzt ist es an der Zeit, deine Hypothese einem Test zu unterziehen. Sieht das Ergebnis so aus, wie du denkst das es müsste, oder tut es das nicht? Welche Tests könntest du noch machen um mehr Vertrauen in deine Hypothese zu bekommen? Denn seien wir mal ehrlich: ein einziger Tests sagt jetzt nicht sooo wahnsinnig viel aus. Aber wenn du bei 10 unterschiedlichen Tests jedesmal das Endergebnis korrekt vorhersagen kannst, dann könnte man schon sagen: den Teil dürftest du verstanden haben.
data_in ist doch ein Byte und kein String. data_in(1) = "A" ist dann doch falsch. richtig wäre z.b. data_in(1) = 43 oder so und dann passt text = text + data_in(n) auch nicht mehr. du musst das byte in den entsprechenden string wandeln (ASCI).....
For N = 1 To 10 Wait_rfm12 D = &HB800 + Data_in(n) : Gosub Wert Next N Da wird nix ins array geschrieben, sondern der Inhalt des Arrays soll wohl zu einer Konstanten dazu addiert werden und einer Variable (D) zugewiesen werden, danach wird eine Subroutine angesprungen (Wert), das ganze dann 10 mal mit aufsteigendem N. For N = 1 To 10 text = text + data_in(n) Next N Du hast eine Zeichenkette (String) und addierst ein Byte dazu?? Oder willst Du n Zeichen anhängen? Ist aber Käse das so zu machen, kostet Rechenzeit unnötig ... wobei, zum Anfangen ists OK. chr() ist dein Suchbegriff in der Bascom Help
dim data_in(11) as byte dim text as string *10 at data_in overlay data_in(1) = "A" data_in(2) = "N" data_in(3) = "D" data_in(4) = "R" data_in(5) = "E" data_in(6) = "A" data_in(7) = "S" data_in(8) = "." data_in(9) = "." data_in(10) = "." data_in(10) = 0 jetzt sieht text so aus: text = "ANDREAS..."
Hi, Mensch...klar..chr ().... Umgekehrt wäre es ja asc()... Also den Bascom Code habe ich jetzt zum Glück fertig. Getestet hab ich es mit freebasic und dann in Bascom mit Abänderungen übernommen. Ich hab mir nun folgenden Adapter gelötet: http://www.opendcc.de/elektronik/opendcc/avr_ponyprog_adapter_sch.jpg Klar...die 1 kohm Widerstände erniedrigen die Spannung u. die Z-Diode sorgt dafür, daß aus -12 v = 0 Volt werden "logische 0" und aus +12 V = 4,7 V werden "logische 1". Es steht noch dabei, das man beim Proggen des Atmega folgende Einstellung bei ponyprog machen muß: http://www.opendcc.de/elektronik/opendcc/ponyprog_einstellung2.jpg So...dann müßte ich doch nur noch sck,reset,miso,mosi mit dem atmega8 verbinden und den atmega8 an die versorgungsspannung anschließen oder? Zur Spannungsversorgung: Ist Pin 1 "rotes Kabel" von USB. GND leite ich auf Pin 4 "schwares Kabel" von USB. So...und noch ein 100 n Kondensator dazwischen für die Spannungsversorgung vom Atmega... Dürfte das reichen?
data_in(1) = "A" doch, kann gehen, Bascom übersetzt so einzelne Zeichen je nach Funktion in Bytes, man kann z.B. nen Bytewert bei if-then verwenden if data_in(1) = "A" then ... macht Bascom, auch wenn einem die Haare zu Berge stehen.
besser gefragt....passt es so dann? für was ist der reset pin notwendig? zum signalisieren des flashen u. neustarten nachdem flashen?
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.