Probleme mit Bascom AVR unter WIN 10

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

    • Probleme mit Bascom AVR unter WIN 10

      Moin ihr Lieben,

      ich programmiere nur sehr selten und habe meine letzten Programme mit der dazugehörigen Hardware zwischen 2014 und 2016 erstellt. Nun muss ich wieder einmal ran und etwas im Programm verändern und habe in einem neuen PC unter WIN !0 die aktuelle Demoversion geladen, was bei mir immer ausreichte. Dazu habe ich Den USB Stick von AVR Smart Light. Leider läuft auf einmal kein Programm mehr nach dem Übertragen. Auch keine Programme, die ich schon zig mal verwendet habe und übertragen habe . Hat jemand einen Tipp? Ich habe das Gefühl, das etwas nicht korrekt kompeliert wird.
    • Ich werde gleich alles neu installieren und in einem Extraordner der nicht unter Win liegt.

      Es ist aber merkwürdig, denn es funktioniert ja alles, auch das Übertragen der Daten in den Chip. Nur macht er dann überhaupt nichts. Ich kann ihn auch auslesen und beim Vergleich zeigt er keine Fehler an.

      Ich werde es jetzt mit einer Neiinstallation versuchen.

      Vielen Dank vorab.

      Germer von AMPWERK
    • Ich bin in einem Extraordner mit Adminrechten gestartet.

      Ich bekomme keine Fehlermeldungen. Programme, die ich schon zig fach gebrannt habe, laufen auf einmal nicht mehr. Kann es an dem USB Treiber für den Stick liegen?

      Stehe hier wirklich auf dem Schlauch.

      Gruß Germer und Danke vorab.
    • ---------------------------------------------------------------
      ' Firmware Ampwerk MIDI-Channel-Controller V1.3 -20 * 4 Display-
      ' (c) Germer de Raad 2014 3 Channel
      ' ---------------------------------------------------------------
      $regfile = "m32def.dat"
      $crystal = 8000000
      $hwstack = 40
      $swstack = 16
      $framesize = 32
      $baud = 31250

      ' ---------------------------------------------------------------
      ' Variablen und Konstanten
      ' ---------------------------------------------------------------

      Relais1 Alias Portc.1 'Relais Namenvergabe
      Relais2 Alias Portc.2
      Relais3 Alias Portd.6
      Relais4 Alias Portd.5
      Relais5 Alias Portd.4
      Relais6 Alias Portd.3
      Relais7 Alias Portd.2

      Plus Alias Pina.0 ' Schalter Namenvergabe
      Minus Alias Pina.1
      A Alias Pina.2
      S Alias Pina.3
      B Alias Pina.4
      C Alias Pina.5
      M Alias Pina.6
      F Alias Pina.7



      Dim Ac As String * 5 ' Variable für Ampkanal auf LCD
      Dim Mute As String * 4 ' Variable für Mute auf LCD
      Dim Fx As String * 3 ' Variable für FX on Off auf LCD
      Dim Sh As String * 3 ' Variable für S-H on Off auf LCD
      Dim Mi As String * 2 ' Variable für Midikanal auf LCD
      Dim Ch As Byte
      Dim Kb As Byte ' Eingabe für Midikanal
      Dim Mc As Byte ' Fertiges Kanalbyte
      Dim X As Bit ' 1. Byte
      Dim B1 As Bit ' 2. Byte und folgende
      Dim B2 As Bit
      Dim B3 As Bit
      Dim B4 As Bit
      Dim B5 As Bit
      Dim B6 As Bit
      Dim B7 As Bit
      Dim B8 As Bit
      Dim B9 As Bit
      Dim B10 As Bit
      Dim B11 As Bit
      Dim B12 As Bit
      Dim B13 As Bit
      Dim B14 As Bit
      Dim B15 As Bit
      Dim B16 As Bit
      Dim B17 As Bit
      Dim B18 As Bit
      Dim Y As Bit ' 3. Byte
      Dim Rxbyte As Byte
      Dim I As Integer

      ' ---------------------------------------------------------------
      ' Anlauf nach Power On
      ' ---------------------------------------------------------------

      Init:

      ' Port-Definitionen
      ' -----------------
      Ddrc.1 = 1 'Relaisausgänge definieren
      Ddrc.2 = 1
      Ddrd.6 = 1
      Ddrd.5 = 1
      Ddrd.4 = 1
      Ddrd.3 = 1
      Ddrd.2 = 1
      Ddrd.1 = 1
      Porta.0 = 1 'Tastereingänge definieren
      Porta.1 = 1
      Porta.2 = 1
      Porta.3 = 1
      Porta.4 = 1
      Porta.5 = 1
      Porta.6 = 1
      Porta.7 = 1
      Portc.7 = 1

      ' Anlauf-Variablen
      ' ----------------
      I = 0
      Ch = 1 ' Bei Start MIDI.Ch. 1
      X = 0
      Y = 0

      ' Display initialisieren
      ' ----------------------
      Config Lcd = 20 * 4 ' Display 8 x 2 initialisieren
      Config Lcdpin = Pin , _
      Db4 = Portc.3 , _
      Db5 = Portc.6 , _
      Db6 = Portc.4 , _
      Db7 = Portc.5 , _
      Rs = Portc.0 , _
      E = Portd.7
      Cursor Off

      Cls
      Locate 1 , 1 : Lcd "AMPWERK TRIO 100" 'Feste Textanzeigen
      Locate 4 , 1 : Lcd "MIDI Channel " 'Feste Textanzeigen
      Locate 2 , 1 : Lcd "Amp Channel " 'Feste Textanzeigen
      Locate 3 , 1 : Lcd "Mode=" 'Feste Textanzeigen
      Locate 3 , 10 : Lcd "FX= " 'Feste Textanzeigen

      Gosub Proga1 'Starteinstellung
      Gosub Progz2
      Gosub Progz3


      ' UART initialisieren
      ' -------------------
      On Urxc Intmidireceive ' Empfangsinterupt initialisieren
      Enable Urxc

      ' Globale Interrupt-Freigabe
      ' --------------------------
      Enable Interrupts
      ' ---------------------------------------------------------------
      ' Main-Program
      ' ---------------------------------------------------------------
      Do

      Waitms 125 'Bremse für Schleife
      If Plus = 0 Then Ch = Ch + 1 'Midikanalwahl Plus_taster
      If Ch > 16 Then Ch = 1 'Wenn >16 dann Kanal 1
      If Minus = 0 Then Ch = Ch - 1 'Midikanalwahl Minus_taster
      If Ch < 1 Then Ch = 16 'Wenn < 1 dann Kanal 16
      Select Case Ch ' LCD anzeige Auswahl

      Case 1 : Mi = "01"
      Case 2 : Mi = "02"
      Case 3 : Mi = "03"
      Case 4 : Mi = "04"
      Case 5 : Mi = "05"
      Case 6 : Mi = "06"
      Case 7 : Mi = "07"
      Case 8 : Mi = "08"
      Case 9 : Mi = "09"
      Case 10 : Mi = "10"
      Case 11 : Mi = "11"
      Case 12 : Mi = "12"
      Case 13 : Mi = "13"
      Case 14 : Mi = "14"
      Case 15 : Mi = "15"
      Case 16 : Mi = "16"
      End Select
      Kb = Ch - 1 'Midikanal mit 1.Byte
      Mc = &HB0 + Kb
      Locate 4 , 14 : Lcd Mi ' Midikanal auf LCD zeigen


      If A = 0 Then Gosub Proga1 ' Taster für Amp-Kanal A
      If B = 0 Then Gosub Proga2
      If C = 0 Then Gosub Proga3
      If A = 0 And B = 0 Then Gosub Proga5
      If A = 0 And C = 0 Then Gosub Proga6
      If B = 0 And C = 0 Then Gosub Proga8
      If A = 0 And B = 0 And C = 0 Then Gosub Proga11
      If M = 0 Then Gosub Progz1
      If F = 0 Then Gosub Progz2
      If S = 0 Then Gosub Progz3

      Locate 3 , 17 : Lcd Mute 'LCD-Anzeige Mute
      Locate 3 , 13 : Lcd Fx ' LCD-Anzeige FX
      Locate 3 , 6 : Lcd Sh ' LCD-Anzeige FX
      Locate 2 , 14 : Lcd Ac ' LCD Anzeige Ampkanal
      Loop
      Return

      ' ---------------------------------------------------------------
      ' UART-Receive (MIDI-IN)
      ' ---------------------------------------------------------------

      Intmidireceive:
      If I = 1 Then
      Rxbyte = Udr

      If Rxbyte = Mc Then Gosub Kanal ' 1. Byte mit Midi-ch vergleichen

      If Rxbyte = &H28 Then Gosub A1 ' 2. Byte für CC vergleichen
      If Rxbyte = &H29 Then Gosub A2 ' ------------ II-------------
      If Rxbyte = &H2A Then Gosub A3
      If Rxbyte = &H2C Then Gosub A5
      If Rxbyte = &H2D Then Gosub A6
      If Rxbyte = &H2F Then Gosub A8
      If Rxbyte = &H32 Then Gosub A11
      If Rxbyte = &H37 Then Gosub Z1
      If Rxbyte = &H38 Then Gosub Z2
      If Rxbyte = &H39 Then Gosub Z3

      If Rxbyte = &H7F Then Gosub Onoff ' 3.Byte ist ein/aus bei 127(7F)

      I = 0
      Else
      Incr I
      End If

      Return

      Kanal: ' Nach Bytevergleich in Bit umwandeln
      X = 1

      Return

      A1:
      B1 = 1

      Return

      A2:
      B2 = 1

      Return

      A3:
      B3 = 1

      Return

      A5:
      B5 = 1

      Return

      A6:
      B6 = 1

      Return

      A8:
      B8 = 1

      Return

      A11:
      B11 = 1

      Return

      Z1:
      B16 = 1

      Return

      Z2:
      B17 = 1

      Return

      Z3:
      B18 = 1

      Return

      Onoff:
      Y = 1
      If X = 1 And B1 = 1 And Y = 1 Then Gosub Proga1 'Wenn alle Bytes ok dann Prog1
      If X = 1 And B2 = 1 And Y = 1 Then Gosub Proga2
      If X = 1 And B3 = 1 And Y = 1 Then Gosub Proga3
      If X = 1 And B5 = 1 And Y = 1 Then Gosub Proga5
      If X = 1 And B6 = 1 And Y = 1 Then Gosub Proga6
      If X = 1 And B8 = 1 And Y = 1 Then Gosub Proga8
      If X = 1 And B11 = 1 And Y = 1 Then Gosub Proga11
      If X = 1 And B16 = 1 And Y = 1 Then Gosub Progz1
      If X = 1 And B17 = 1 And Y = 1 Then Gosub Progz2
      If X = 1 And B18 = 1 And Y = 1 Then Gosub Progz3
      X = 0
      B1 = 0
      B2 = 0
      B3 = 0
      B5 = 0
      B6 = 0
      B8 = 0
      B11 = 0
      B16 = 0
      B17 = 0
      B18 = 0
      Y = 0
      Return

      Proga1:
      Relais1 = 1 'Programm für Ampkanal A
      Relais2 = 0
      Relais3 = 0
      Relais4 = 0
      Ac = "A "
      Return

      Proga2:
      Relais1 = 0 'Programm für Ampkanal B
      Relais2 = 1
      Relais3 = 0
      Relais4 = 0
      Ac = "B "
      Return

      Proga3:
      Relais1 = 0 'Programm für Ampkanal C
      Relais2 = 0
      Relais3 = 1
      Relais4 = 0
      Ac = "C "
      Return

      Proga5:
      Relais1 = 1 'Programm für Ampkanal A+B
      Relais2 = 1
      Relais3 = 0
      Relais4 = 0
      Ac = "A+B "
      Return

      Proga6:
      Relais1 = 1 'Programm für Ampkanal A+C
      Relais2 = 0
      Relais3 = 1
      Relais4 = 0
      Ac = "A+C "
      Return

      Proga8:
      Relais1 = 0 'Programm für Ampkanal B+C
      Relais2 = 1
      Relais3 = 1
      Relais4 = 0
      Ac = "B+C "
      Return

      Proga11:
      Relais1 = 1 'Programm für Ampkanal A+B+C
      Relais2 = 1
      Relais3 = 1
      Relais4 = 0
      Ac = "A+B+C"
      Return

      Progz1:
      Toggle Relais5 'Programm für Zusatzfunktion ein/aus
      Select Case Relais5
      Case 1 : Mute = "Mute"
      Case 0 : Mute = " "
      End Select
      Return

      Progz2:
      Toggle Relais6 'Programm für Zusatzfunktion ein/aus
      Select Case Relais6
      Case 1 : Fx = " on"
      Case 0 : Fx = "off"
      End Select
      Return

      Progz3:
      Toggle Relais7 'Programm für Zusatzfunktion ein/aus
      Select Case Relais7
      Case 1 : Sh = "SLO"
      Case 0 : Sh = "HOT"
      End Select
      Return
    • Ich habe soeben den HEX File von diesem Programm mit dem AVR - Programm übertragen und das alte Programm läuft ohne Probleme. Wenn ich nun mit Bascom nur die kleinste Änderung daran vornehme und dann kompiliere, bekomme ich nur Mist und nix geht mehr.
    • Ich habe nichts verändert, sondern nach 4 Jahren alles auf Win 10 umgestellt. Nun geht nichts mehr. Den HEX-file habe ich aus einer alten Datei direkt mit dem AVR Brenner übertragen. Wenn ich nun diesen BAS File, der zu diesem HEX-File gehört in BASCOM verändere und Kompiliere, ist er Schrott. Es passiert dann wirres Zeug auf dem Display und an den Ausgängen. Es genügt schon die Original-Datei in Bascom aufzurufen und zu kompilieren. Schon läuft sie nicht mehr. Was kann man an der Ausgabe so verändern, dass so etwas passiert?

      The post was edited 1 time, last by AMPWERK ().

    • Hallo AMPWERK,
      hab den Sketch eben mal auf meinem Smartphone angeschaut..
      Nach der do-loop Schleife sollte besser eine end Anweisung statt des return stehen.
      Zum einen finde ich keine sub - Anweisung, welche den Rücksprung einleiten sollte.
      Falls in einem der vielen Unterprogramme etwas schieflaufen sollte, würde end ein sauberes Programmende ermöglichen. Fehlerbeabeitungs-Programmteile sind ja nicht vorhanden.
      Werde morgen mal am Desktop WIN10 rein schauen.
      Gruß Rudi
      Immer Glück haben ist fast wie können..
    • AMPWERK wrote:

      wirres Zeug auf dem Display
      Die Fuses kontrolliert ? Stimmt der Takt? /Quarz?
      Größere Stacks schaden auch nicht. Sie füllen sich bedenklich.
      Die bascom-avr.xml schon gelöscht?
      Gibt es das Orginal Bascom noch das sie erstellt hat?
      Würde das (im neuen PC)einen funktionierenden Code auswerfen?
      Hat es die gleiche m32def.dat?
      Eine andere Version könnte den Code anders "sehen" so das er plötzlich nicht mehr geht.
      Auch wenn mir im ersten Lauf nichts problematisches auf fiehl so wäre das 'End' sicher besser.
      Oder (Platz satt) ein
      LCD "Hilfe abgestürzt"
      Wait 10
      goto 0

      Das init: (Zeile 70) könnte zu "Mißverständnissen" führen. Besser weglassen.
      Ein
      waitms 100 ' nur für den Fall das der Avr schneller wach ist als das LCD
      initLCD
      waitms 100 'Eine "Angstzeit" damit es in Ruhe das init verarbeiten kann
      cls
      ist meißt überflüssig, vermeidet aber unnötige Fehlersuche falls das Lcd doch mal "durchdreht"
    • Fusebit, Takt und Quartz sind ok. Über Details des Programmes können wir uns sehr gerne später austauschen, da Programmierung nicht gerade meine Spezialität ist. Wo finde ich die Bascom-avr.xml? Das alte Basom habe ich noch und werde heute Abend es einmal laden. Ich denke aber es liegt an der 64bit Version. Die alte lief ja auf 32bit. Ob es die gleiche m32def.dat hat ????? Keine Ahnung. Ich kann heute abend mal beide HEX-Code vergleichen und schauen, ob da etwas auffällig ist. Vielen Dank für die vielen Ratschläge. Das hilft sicher in die richtige Richtung.
    • AMPWERK wrote:

      Wo finde ich die Bascom-avr.xml?
      in C:\Users\"Username"\AppData\Roaming\MCS Electronics\
      Verschiedene Bascom Versionen werden auf die selbe bascom-avr.xml zugreifen. Das geht möglicherweise schief. Sie sichern und löschen bevor die andere Version gestartet wird.

      AMPWERK wrote:

      einfach mal ja angeklickt
      Keine Ahnung a_56_df238249 , ich hab immer nein geklickt. Vielleicht meldet sich jemand der es richtig weiß.

      The post was edited 1 time, last by Pluto25 ().