Search Results
Search results 1-20 of 296.
This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
-
Start Timer0
PostProbiere mal den Timer Overflow während der Abfrage abzuschalten: Disable Ovf0 If Takt > Altertakt Then 'dieses hat nicht funktioniert Altertakt = Takt Enable Ovf0 Waitms Taktpause Else Enable Ovf0 Stoerung = 1 : Exit While End If Wenn es dann funktioniert liegt das Problem daran, dass der Interrupt die Word Variable Takt inkrementiert, während ein Teil der Abfrage Takt > Altertakt gelaufen ist. Die kann nicht in einem atomaren Befehl erfolgen, sodass ein Interrupt irgendwo dazwischen kommen kan…
-
Start Timer0
PostHallo Walter99 ich würde dir empfehlen so etwas If Tasterrot = 0 Then Freigabe = 0 : Automatikstart = 0 : : Ledrot = 1 : Ledweiss = 0 : Stoerung = 4 : Exit While : End If nicht zu machen. Du denkst wahrscheinlich, dass alle Zuweisungen nur dann ausgeführt werden, wenn Tasterrot=0 ist. Der Compiler macht daraus aber If Tasterrot = 0 Then Freigabe = 0 'hier ist die Bedingung zu Ende Automatikstart = 0 Ledrot = 1 Ledweiss = 0 Stoerung = 4 Exit While End If Ich würde ganz auf diese Mehrfachzuweisung…
-
Hallo andisan und willkommen im Forum, wie stellst du bei dem geposteten Programm fest, dass es nicht läuft? Für mich sieht das korrekt aus und ja, der 328P kann den Compare0A . Die Bascom Hilfe unterscheidet nicht immer zwischen den älteren Typen (z.B. Mega8, der das nicht kann) und den neueren, wie dem Mega328P.
-
Re-Engeneering?
Franz - - Themen am Rande
PostHallo Hans, im Programmierfenster kannst du über den blauen Pfeil (blauer Kreis) den Chip Inhalt in den Buffer ziehen. bascomforum.de/index.php?attac…dc466c2e1b81141c574a3c983 Wenn du dann die Bytes bis zu den abschließenden FF's abzählst, kennst du die Größe der damals geschriebenen .bin Datei. Nun suchst du auf dem PC im Dateiexplorer nach allen .bin Dateien von Bascom (falls nicht vorhanden musst du sie erst compilieren).. Wenn du compilieren musst, entscheidet allerdings die Bascom Version ü…
-
Hallo Ulrich, in dem Moment, wo du das Label Version_mode anspringst, ist der UART Interrupt schon aktiviert. Da auch die globalen Ints schon aktiv sind, wird beim Empfang eines Zeichens die ISR Open_log_Uart angesprungen. Dort wird der UDR ausgelesen. Damit ist das Zeichen nicht mehr im UDR, wenn du es in der Sub Version_mode lesen willst. Ändere doch dort mal die Zeile Buf(uart_cnt) = Udr in Buf(uart_cnt) = B_udr ab. Denn in der Variable B_udr ist das Zeichen ja schon drin.
-
Hallo, du bekommst wahrscheinlich wenig Hinweise, weil die Daten so nur schwer zu analysieren sind. Könntest du die Daten nicht mal über ein Terminal (hterm oder Hyper Terminal) einlesen? Die Baudrate scheint ja 19200 zu sein. Bei hterm würde ich auch noch ein Newline nach 1ms einstellen, dann sind die einzelnen Pakete immer schön in einer Zeile. Dann würde man bestimmt besser erkennen, ob sich da etwas wiederholt und wo die wichtigen Bytes sind.
-
Hallo michl, dein Sender schickt wegen des ; hinter dem Print zwar kein CR/LF, aber Print wandelt den Wert in ASCII um. Aus einer 1 wird also der dezimale Wert 49, aus 2 50 und aus 161 werden die drei Zeichen 49 54 49. Am einfachsten kannst du deine Kommunikation zum Laufen bringen, indem du anstelle von Print einfach Printbin benutzt. Eine 1 bleibt dann eine 1 und die 161 wird als ein Zeichen mit dem dezimalen Wert 161 übertragen. Dabei wird nichts umgewandelt und kannst auch das ; weglassen.
-
Hallo, dies ist ja nur das Empfangsprogramm, das Sendeprogramm wäre auch interessant. Wenn du wie üblich einfach print benutzt, wird nach der Zahl auch noch eine CR und LF gesendet. Die haben die Codes 10 und 13, führen also zum Case else. Mach doch einfach noch einen Case für 10 und 13 dazu, ohne einen Port zu schalten. Und setze das Wait 1 lieber in die If Ucsra.rxc = 1 Abfrage, sonst wird wohl immer das CR oder LF gefunden. Du musst die Ausgänge auch als Output konfigurieren, damit sie richti…
-
Rechnen in Bascom
PostHallo ceperiga, bei deiner Multiplikation mit Pi in Zeile 30 nimmst du wieder die Gesamtfläche (rolle), du müsstest aber den Kern abziehen, also einfach Ergebnis=Ergebnis*Pi da du vorher in Ergebnis die reine Materialfläche hattest.
-
Hallo Mitch, dies hier ist ja deswegen so umfänglich, weil ich alles reingepackt habe. Also Portx.y als Ausgang definieren, Portx.y setzen und toggeln, und dann noch Pinx einlesen. Direkt Portx.y im Aufruf angeben, kann meiner Meinung nach im Moment aus zwei Gründen nicht funktionieren: 1. Bit-Werte sind als Parameter nicht erlaubt, könnte MCS aber wahrscheinlich mit etwas Aufwand ändern. Dies ist ja grundsätzlich interessant. 2. Damit Portx.y in der Sub oder Funktion richtig verwendet werden ka…
-
Meiner Meinung nach könnte das auch ein Bug sein. Ich kann das Verhalten hier mit einem ATTiny13A nachvollziehen. Mit kleinen Änderungen geht es aber. 1. Wenn du auch im Fall der falschen Adresse eine Ausgabe über Print machst, funktioniert dein Programm. 2. Wenn du nicht CR-LF sondern nur CR (Input wartet nur auf CR) schickst, funktioniert dein Programm auch. Es scheint so zu sein, dass das unnötige LF weiterhin auf Verarbeitung wartet und durch ein Print gelöscht wird. Das im Assembler Listing…
-
Hallo Dieter, schau mal in der Datei ST7735_functions.inc in die Sub LCD_init. Dort müsste sowas ähnliches stehen: Call Lcd_write_command(&H36) 'memory access control Call Lcd_write_data(&Ha0) 'R-G-B Black tab Ändere die Bits mal entsprechend des DB V2.1 Seite 110, also MX und MY negieren: bascomforum.de/index.php?attac…dc466c2e1b81141c574a3c983