Search Results

Search results 1-20 of 1,000. There are more results available, please enhance your search parameters.

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Übersetzen nach BASCOM

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Anstatt das Programm nochmal in Bascom zu schreiben, könnte man auch einfach das Programm in Arduino compilieren und dann die HEX exportieren (das geht übers Menü). Damit hat man das HEX-File Jetzt in Bascom eine Bas-Datei anlegen (Preudo-Programm) mit dem Zielcontroller (Tiny) und der Loop. Das dann compilieren (in Bascom). Jetzt Manuell programmieren anwählen und im Fenster die Hex, die in Arduino compiliert wurde, in den Buffer laden und dann flashen. Ich hab noch,al geschaut. Die Exportfunkt…

  • Double Variablen nutzen

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Funtionen casten den Rüchgabewert nicht auf die zugewiesene Variable. Heißt, wenn eine Funktion als Rückgabewert ein Byte definiert hat, wird auch nur ein Byte in die zuweisung geschrieben. BASCOM Source Code (13 lines) Wenn man das im Simulator durchsteppt, erkennt man das, wenn man die Locals Variablen anschaut. Umgekehrt, wenn man eine Function mit Integer als Rückgabewert hat und weist die einem Byte zu, dann werden 2 Byte geschrieben. Kann man am eingeblendeten SRAM sehen. Beschrieben wird …

  • Impulszählung

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Ach ja. Man könnte auch einen Controller nehmen, der diese 100 Pins hat. Der macht die Abfragen der Sensoren. Der ist dann bia SPI mit einem 2. Controller verbunder, der mit Netzbausteun hantiert und bei Bedarf den großen Controller um die Zählerdaten bittet. Dann braucht es die hanze serielle I2c-Bus Expanderei nicht. Das sollte deutlich schneller sein.

  • Impulszählung

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Er wollte ja die 16-Bit Portexpander nehmen. Davon lassen sich bis zu 8 adressieren. Mit 7 Stück käme man auch ins Ziel und könnte die 100 Eingänge abdecken. Ich habe das auch mal gerechnen. Wenn man die Portexpander pollen will braucht es einiges an Zeit. In den Zwischenzeiten die Netzwerksache zu erledigen halte ich auch für vermutlich nicht möglich. Man könnte aber als Vorschlag 2 Controller nehmen. Der eine Pollt diese Eingänge und sammelt die Zähldaten. Der 2. Bedient den NET-Baustein und f…

  • Das Problem war nicht das Signal selbst zu erzeugen, sondern die hohe Frequenz. Incr.Geber mit 3000 Pulse / Ump bei 6000 Ump am Motor. Das sind dann 300 kHz Ausgabe-Frequenz. Deine ISR muss also 4x so oft aufgerufen werden. Welche Frequenz erreichst du denn. Weiterhin ist mir aufgefallen, dass du Register vor der leeren Do:Loop belegst und keine Register rettest in der ISR. Das ist für deinen Code OK. Wenn in der Hauptschleife aber mehr laufen soll als nichts, dann klappts mit deinem Code nicht …

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Quote from Pac-Man: “Dim R_8 As Long : Dim R_9 As Long : Dim Ra As Long ” Eigentlich meinte ich ein Long für alle Register-Bytes (RAMPZ, r8 und rp) und nicht für jedes Register ein Long. Oder ein Word für r9 und r9 als Adresse. Quote from Pac-Man: “R8 und R9 werden ja scheinbar nicht gelöscht. I ” Das hatte ich ja bereits in einem früheren Post geschrieben. Quote from Pac-Man: “Ich habe RAMPZ nicht selbst gesetzt. ” Ja du nicht. Sondern das macht der Restore im Bootloader. Wie du siehst gehört d…

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Mit 2 Byte (16 Bit) kann man genau 2^16 Adressen ansteuern. Das sind die gerundeten 64k. Genau sind es 65536. RAMPZ ist nun das 3. Adressbyte und bildet die Adressbit 16 bis 23 von der Adresse. Und ja kann man r8 und r9 ausgeben. Kannst ja in eine Variable (am besten Word) einlesen. r8 = LowByte, r9 = HighByte. Das kannst du dann per Print Hex(wert) ausgeben. Und wenn du schon dabei bist, dann mach das doch auch gleich mit RAMPZ. Ein Long nehmen und dort die 3 Register ablegen. Overlay Offset 0 …

  • Quote from Lindi13: “If Ischarwaiting() = 1 Then Strom2 = inkey() ' Auch versucht mit: Strom2 = Waitkey() End If ” Inkey() liest nur ein Byte ein. Du sendest aber ein Word (2 Byte). Verwende statdessen den InputBin-Befehl. Du sendest binär (PrintBin), also solltest du auch binär empfangen (InputBin).

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Ich habe das mit einem Mega 168 getestet und funktionierte prima! Da du den Mega1284 hast, habe ich das mal im Simulator eingestellt und probiert. Da sind mir 2 Fehler aufgefallen im Bootloader: 1. Im Deklarationsteil waren 2 Controller ausgewählt. Siehe Zeile 34, 35 und 80. 2. In der Unter-Routine Do_spm (Zeile 382 und 383) fehlen die Ausrufezeichen. Hier nochmal der korrigierte Bootloader für M1284: bascomforum.de/index.php?attac…d4b9ffcd17d3054018016e08b Zum Anwendungsprogramm: Dein Hinweis, …

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Bei Post #21 sehe ich aber einen Mega 1284. Bei FC00 läuft da noch nix über. Im übrigen habe ich es mit meinen Grundkenntnissen geschafft, den Sampelcode "Bootloader.bas" mit meinen Daten (Version und einen String) zu erweitern und die Adresse auf diese Datazeilen per Restore vor dem Verlassen des Bootloaders für das Anwendungsprogramm zu hinterlassen. Im Bootloader wurde am Ende des Codes 2 Datazeilen mit Daten fürs Hauptprogramm abgelegt. Das ganze mit einem Label versehen, damit der Compiler …

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Quote from Pac-Man: “Das verstehe ich jetzt nicht, sorry. ” Ich auch nicht. Das ist typische Pluto Sprache

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Wieso versuchst du es nicht mal nach dem Vorschlag von mir? Im Bootloader die Adresse des Labels mittels Restor lesen vor dem Verlassen des Bootloaders. Im Hauptprogramm brauchst du dann nur noch Read myString machen. Die Adressen-Berechnung kannst du dem Compiler überlassen. Zudem suchst du am Anfang deines Bootloaders. Dein "Irengwas" steht aber am Ende!

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Das Codeschnipsel ist nicht kompilierbar! Und was der CPeak macht ist quasi wie der Read-Befehl Nur eben bezogen auf einzelne Flash-Adresse und kann nur Byte lesen. Mit CPeek einen String zu lesen ist komplexer, weil der nicht der Reihe nach abgelegt wird. Wie ist der komplette Bootloader-Code?

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Zeig doch mal den Bootloader-Code her, den du verwendest.

  • Ich hab die Ursache gefunden, warum das im Simulator nicht ging. BASCOM Source Code (34 lines) Es lag nicht am Controller. Es müssen 2 Dinge passen, sonst geht's nicht. 1. Es muss nach der Controller-Konfiguration irgendwann zwingend ein Goto <Bootloaderadresse> kommen. Davor sind Basic-Anweisung möglich (wenn Stack entsprechend gesetzt ist). Siehe Zeile 17! 2. Die Direktive $BOOT muss direkt vor dem Code stehen, der dann an die Bootloader-Adresse soll. $BOOT bei den anderen Direktiven ($RegFile…

  • Wegen einem Thema hier bezüglich Bootloader habe ich bissel mit Bootloader herumgespielt. Oder besser gesagt wollte ich. Ich wollte die Direktive $BOOT ausprobieren und habe folgenden Code geschrieben. BASCOM Source Code (27 lines) Natürlich ist das keinj funktionierenden Bootloader, aber darum gehts erst mal nicht. Auch könnte ich die Direktive $LOADER verwenden, das wollte ich aber auch erst mal nicht. Es müsste ja laut Bascom-Hilfe auch mit $Boot gehen. (Hidden Content) Mit AVR-Studio debug c…

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Ich habe eben mal ein Test im Simulator gemacht. Wenn man ein Anwender-Programm startet (Einzelschritt), bis man am 1. Befehl ankommt, bleiben die Register r7 bis r23 unverändert. D.h die Initialisierung (Stack, RAM auf 0 setzen etc.) verändert diese Register erst mal nicht. Das kann man sich zu Nutze machen. Im Bootloader kannst du also auf das Pushen der Register r8, r9 verzichten. Musst also nur den Restore <Labelname> ausführen. Das setzt die Register r8 und r9. Dann mit Goto _Reset den Boot…

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Quote from Pac-Man: “Geht das nicht einfacher? ” Kommt drauf an, was du unter einfacher verstehst. Du kannst die Datazeile natürlich auch am Anfang des Bootloaders als erstes einfügen und mit einem !RJMP das Label samt Data's überspringen. Die Adresse des Labels kannst du dann im Simulator 1x ermitteln und dir mal merken. Wenn du dann mit dem Programm auf diese Flashadresse zugreifen willst, musst du diese mit LPM abfragen und deine 2 Byte als Integer zusammen setzen. Alternativ zu LPM sollte au…

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Da könntest du recht haben. Das Ram wird ja im Bootloader schon gelöscht.

  • Bootloader Version

    Mitch64 - - Hauptforum BASCOM-AVR

    Post

    Falls du doch keine Lösung hast, hab ich einen Vorschlag. Im Bootloader legst du am Ende des Codes eine Datazeile an, der du ein Label voranstellst. BASCOM Source Code (3 lines) In der Hauptschleife wird ja irgendwie festgestellt, dass der Bootloader beendet werden soll. Da müsste also an diversen Stellen "Goto _Reset" angegeben sein. Der Trick ist nun, dass du von dem Ausführen von "Goto _Reset" die Adresse des Labels ermittelst und auf dem HWStack ablegst. BASCOM Source Code (5 lines) Damit üb…