Config ATEMU - Prozessor hängt sich auf

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    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!

    • Config ATEMU - Prozessor hängt sich auf

      Hallo Forengemeinde,


      hab mal nach einer etwas längeren Zeit mal wieder mit Bascom beschäftigt und hab mich daher wieder hier beim Forum angemeldet a_475_f10f3094 (das alte gibts ja nicht mehr).

      Zu meinem heutigen Problem:
      Ich möchte eine PS/2 Tastatur simulieren die den befehl FTP sendet und mit enter bestätigt, habe mir dazu extra die LIB von MCS Seite gekauft...soweit alles I.O. allerdings sendet mein Atmega den Befehl erst gar nicht, da er bei der "Config Atemu ..." stecken bleibt. Weder mit INT0 noch mit INT1 komme ich weiter. Habe auch die Stacks mal Testweise hochgesetzt, da ich die Vermutung hatte, das sich der CPU evtl deswegen aufgehangen hat...ich hoffe ihr könnt mir helfen und evtl weiß jemand rat der das selbe Problem hatte. Benutze noch die Version 2.0.7.6 .

      Lasse mir die Printausgaben geben wo der ATMega derzeit im Programm ist und bis Abschnitt "2" in der Konsole läuft das Programm, "3" wird schon gar nicht mehr geschickt.

      Gruß Kai

      BASCOM-Quellcode

      1. '$regfile = "attiny45.dat" ' specify the used micro
      2. $regfile = "m16def.dat" ' specify the used micro
      3. $crystal = 8000000 ' used crystal frequency
      4. $baud = 19200 ' use baud rate
      5. $hwstack = 100 ' default use 32 for the hardware stack
      6. $swstack = 100 ' default use 10 for the SW stack
      7. $framesize = 100 ' default use 40 for the frame space
      8. '$lib "mcsbyteint.lbx" ' use optional lib since we use only bytes
      9. Print "1"
      10. V7 Alias Portb.4 : Ddrb.4 = 1 : Portb.4 = 1 'LED zur überwachung der Aktivität
      11. S1 Alias Pind.5 : Ddrd.5 = 0 : Portd.5 = 1 'Taste [S] (Eingang)
      12. 'configure PS2 AT pins
      13. Enable Interrupts ' you need to turn on interrupts yourself since an INT is used
      14. Print "2"
      15. 'Config Atemu = Int0 , Data = PinB.2 , Clock = PinB.1
      16. Config Atemu = Int1 , Data = Pind.3 , Clock = PinD.4
      17. ' ^------------------------ used interrupt
      18. ' ^----------- pin connected to DATA
      19. ' ^-- pin connected to clock
      20. 'Note that the DATA must be connected to the used interrupt pin
      21. Print "3"
      22. Waitms 500 ' 13-15 Sek im fertigen Anwendungsfall
      23. 'rcall _AT_KBD_INIT
      24. Sendscankbd Mark
      25. Do
      26. V7 = not V7
      27. waitms 800
      28. Loop
      29. '-----------------------------------------------------------------------------
      30. Mark: ' send mark
      31. Data 12 , &H2B , &HF0 , &H2B , &H2C , &HF0 , &H2C , &H4D , &HF0 , &H4D , &H5A , &HF0 , &H5A
      32. ' ^ send 12 bytes
      33. ' f t p enter
      Alles anzeigen
    • Hast du deine lib in das richtige Verzeichnis von bascom kopiert? Beim compilieren gibt es keine Fehlermeldung? Evtl. ist die Anzeige der Fehlermeldung im editor ausgehakelt?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Als Beispiel schau mal hier usb-KB rein,USB ist mit einem externen USB-PS2 Wandler umgesetzt, vom Programm her also alles wie du es brauchst + SD Karte.

      Was mir noch ausser der alten Bascom version auffällt:
      $lib "at_emulator.lib" Finde ich nicht bei dir im Programm.
      Dann: Pullup auf den Leitungen? Hinweis kommt ja immer schön wenn man die Hilfe pop ups beim Bascom Start an hat.

      Und..ohne angeschlossenen Host ( PC ) bleibt das Programm beim init hängen. Der PCS-USB converter gilt auch als Host, da funktioniert aber auch nicht jeder.


      Tobias

      p.s.
      Noch eine Bitte: Programme ausmisten bevor es hier eingestellt wird. Nicht nur Michael ist auf den auskommentierten Tiny reingefallen. "Geputzt" liest es sich für den der helfen will angenehmer und fehlerfreier und machmal sind sogar die Fehler nach dem aufräumen einfach so weg. Sauber kommentiert ist dann die Steigerung und noch angenehmer a_38_b45e201d

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Schraubbaer ()

    • Schraubbaer schrieb:

      $lib "at_emulator.lib" Finde ich nicht bei dir im Programm.
      Das wird in der Hilfe zu config Atemu auch nicht ins Programm geschrieben
      avrhelp.mcselec.com/config_atemu.htm
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ich habs drin, hatte damals auch wahnsinnig gekämpft bis das PS2 gelaufen ist. Habs dann irgendwann rein genommen, wahrscheinlich genau weils nicht lief. Ist schon zulange her..... weiss es nicht mehr. Schadet aber wohl auch auf keinen fall.
      Die Hilfe ist gut, hat aber machmal noch so ihre Fehler...Stackwerte sind z.b. auch nicht in allen Samples drin.

      Tobias
    • So, ich danke euch erstmal für eure Tipps...

      Ich habe mal die besagte at_emulator.lib ins porgramm hinein genommen jedoch hat sich nichts geändert ...die Lib wird geladen aber er bleibt trotzdem immernoch an der stelle "Config Atemu ..." hängen...

      Mit dem Update auf Bascom 2.08. muss ich mal schauen, das ich das nächsten Monat mache...hab vorerst mal das Programm auf 2.0.7.8 geupdatet jedoch ohne erfolg.

      Ich habe auch mal das Programm von Schraubbaer auseinander genommen und alles heraus gelöscht was nicht mit dem PS/2 zu tun hat und habe nur meinen Prozessortyp angepasst:

      Quellcode

      1. $regfile = "m16def.dat" 'Der ATMEGA16 wird genutzt
      2. $crystal = 8000000 'Es werden die internen 8MHz genutzt
      3. $hwstack = 150
      4. $swstack = 150
      5. $framesize = 150
      6. Enable Interrupts
      7. $lib "at_emulator.lib"
      8. Config Atemu = Int1 , Data = Pind.3 , Clock = Pind.7 'PS2 Tastatur sim config
      9. Sendscankbd Taste_d
      10. Taste_d:
      11. Data 3 , &H23 , &HF0 , &H23
      Alles anzeigen
      Das bleibt im Grunde übrig...
      Aber selbst das funktioniert nicht Im Grunde ist es nichts anderes wie in meinem Code, nur ist hier auch die Serielle Schnittstelle nicht mehr vorhanden, aber auch das funktioniert nicht.



      Gruß Kai
    • Crazy_Prof_93 schrieb:

      So, ich danke euch erstmal für eure Tipps...

      Ich habe mal die besagte at_emulator.lib ins porgramm hinein genommen jedoch hat sich nichts geändert ...die Lib wird geladen aber er bleibt trotzdem immernoch an der stelle "Config Atemu ..." hängen...

      Mit dem Update auf Bascom 2.08. muss ich mal schauen, das ich das nächsten Monat mache...hab vorerst mal das Programm auf 2.0.7.8 geupdatet jedoch ohne erfolg.

      Ich habe auch mal das Programm von Schraubbaer auseinander genommen und alles heraus gelöscht was nicht mit dem PS/2 zu tun hat und habe nur meinen Prozessortyp angepasst:

      Quellcode

      1. $regfile = "m16def.dat" 'Der ATMEGA16 wird genutzt
      2. $crystal = 8000000 'Es werden die internen 8MHz genutzt
      3. $hwstack = 150
      4. $swstack = 150
      5. $framesize = 150
      6. Enable Interrupts
      7. $lib "at_emulator.lib"
      8. Config Atemu = Int1 , Data = Pind.3 , Clock = Pind.7 'PS2 Tastatur sim config
      9. Sendscankbd Taste_d
      10. Taste_d:
      11. Data 3 , &H23 , &HF0 , &H23
      Alles anzeigen
      Das bleibt im Grunde übrig...
      Aber selbst das funktioniert nicht Im Grunde ist es nichts anderes wie in meinem Code, nur ist hier auch die Serielle Schnittstelle nicht mehr vorhanden, aber auch das funktioniert nicht.



      Gruß Kai
      Das kann so auch nicht gehen. Deine paar code-Zeilen sind in nullkommanix abgearbeitet, dann rennt der AVR in die data-Zeilen, die er auch als code interpretiert, macht vielleicht was völlig abwegiges und rennt ziellos weiter.
      Was fehlt, wäre eine Schleife, sowas wie do..loop und ein end vor den datas.
      Etwa so

      BASCOM-Quellcode

      1. $regfile = "m16def.dat" 'Der ATMEGA16 wird genutzt
      2. $crystal = 8000000 'Es werden die internen 8MHz genutzt
      3. $hwstack = 150
      4. $swstack = 150
      5. $framesize = 150
      6. Enable Interrupts
      7. $lib "at_emulator.lib"
      8. Config Atemu = Int1 , Data = Pind.3 , Clock = Pind.7 'PS2 Tastatur sim config
      9. do
      10. Sendscankbd Taste_d
      11. wait 1
      12. loop
      13. end
      14. Taste_d:
      15. Data 3 , &H23 , &HF0 , &H23
      Alles anzeigen
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ok ja, dem stimme ich zu...mein fehler...

      Ich hab gerade mal die at_emulator.lib ein paar mal neu kompiliert und jetzt funktioniert es offenbar, zumindest kommt er in die Do Loop schleife... allerdings macht er mir jetzt Probleme mit dem Wait-Befehl...in dem Fall ist es egal ob wait, waitms, oder waitus... ich peil es einfach nicht mehr, hatte damit noch nie Probleme...

      BASCOM-Quellcode

      1. $regfile = "m16def.dat"
      2. $crystal = 8000000 ' Frequenz
      3. $baud = 19200 ' Baudrate
      4. $hwstack = 40
      5. $swstack = 16
      6. $framesize = 32
      7. $lib "mcsbyteint.lbx"
      8. Print "1"
      9. Enable Interrupts
      10. $lib "at_emulator.lib"
      11. Print "2"
      12. V7 Alias Portb.4 : Ddrb.4 = 1 : Portb.4 = 0 'LED zur überwachung der Aktivität
      13. Config Atemu = Int1 , Data = Pind.3 , Clock = PinD.5
      14. Print "3"
      15. 'Waitms 500 ' 13-15 Sek im fertigen Anwendungsfall
      16. Print "4"
      17. Sendscankbd Mark
      18. Print "5"
      19. Do
      20. V7 = not V7
      21. 'waitms 800
      22. Loop
      23. '-----------------------------------------------------------------------------
      24. Mark: ' send mark
      25. Data 12 , &H2B , &HF0 , &H2B , &H2C , &HF0 , &H2C , &H4D , &HF0 , &H4D , &H5A , &HF0 , &H5A
      26. ' ^ send 12 bytes
      27. ' f t p enter
      Alles anzeigen
    • Ne wenigstens läufts malirgendwie mit dem PS2

      Hast es nicht geschrieben, ist vor deinem Data block nun noch ein "END" ?

      Und wie schon geschrieben, das PS2 an sich ist etwas eigen. Wie hast du es an den PC angeschlossen? Schaltung des ganzen?

      Wichtig sind die 2,2k Pullups und PS2 ist kein Hotplug, d.h. das ding muss laufen wenn der PC gestartet wird und normalerweise läuft der AVR erst weiter wenn das PS2 am PC und auf ihm richtig initialisiert wurde.
      Zwischendurch mal abziehen oder reset am AVR ist problematisch.
      Auch deswegen bin ich auf USB-PS2 Adapter umgestiegen, wenn man da den richtigen hat läufts zu 99,99% immer, oft auch ohne PC, nur der Adapter muss da sein. Tippen kann man ohne PC dann aber auch nicht, da hängt sich dann der AVR wieder auf. Sieht man auch an meinem programm, zuerst mach ich alle inits zuallerletzt kurz vorm Tippen erst das PS2. Ohne SD Karte würde das PS2 eh keine sinn machen.

      Belkin F5U119-E1 Adapter liefen problemlos, einer von 5 China-Unbekannt Dingern auch (da weiss man nie was man bekommt).

      Tobias
    • Hi

      hab jetzt noch ein END hinter die Do Loop gepackt.
      Ne ich hab das teil jetzt nur über den Atmega am laufen, hab es noch nicht am PC getestet.

      Mit USB ist das bei mir etwas problematisch...ich will das teil in unserer Firma einsetzen und die PCs die wir dort in unsere Anlagen bauen haben nur PS/2 und unterstützen keine USB-Tastatur... und das einzige für was wir die Tastatur benötigen ist die Eingabe von dem Befehl FTP um den FTP-Server auf der Anlage zu starten um das Hauptprogramm für die Anlage hoch zu laden.

      Deswegen wollte ich das Programm auf dem Attiny am laufen haben, da er wunderbar von der Größe her in die bei Reichelt bestellten 6-Pol-Rundstecker für die PS/2 Buchse passt.

      Auch bin ich auf den Wait-Befehl angewiesen, da der PC unserer Anlage einen Moment braucht bis ich meinen Befehl absetzen kann...sind etwa 13 sek. (zur not tuts auch der Timer1 mit einer etwa 1 sek taktung und das bis 13 hochgezählt...nur frage ich mich eben warum mein Wait-Befehl gerade herumspackt...
    • Also hast du die schaltung momentan an keinem PC bzw wandler?
      Könnte die probleme mit wait erklären, wie gesagt PS2 lässt sich doof testen. Wenn du interrupts nach dem tippen ausmachst könnte das programm weiterlaufen...ich denke das PS2 fängt sich nen int ein.
      Ich kann dein programm grad nicht testen, meine tippmaschine liegt im Büro im Schrank, da bin ich die nächste woche nicht.
      Wobei Bascom auch ne PS2 Tastatur einlesen kann, bau dir doch mal mit dem 16er nen Host und nimm den Tiny als Tastaturersatz.

      Tobias
    • Hast glück,hab mich an meine allererste Platine erinnert die danach auch als allererste SD card testplatine missbraucht wurde.
      Also bei mir läuft das geraffel auf nem Mega8.
      Aber zuerst die frage, woran siehst du das es nicht läuft?
      Die led blinkt nicht, oder? Kann sie ja auch nicht:

      Do
      V7 = not V7
      'waitms 800
      Loop

      die blinkt so schnell, das siehst du ohne Oszilloskop nicht.

      Mach ich dies hier:

      Do
      V7 = not V7
      print "6"
      Sendscankbd Mark
      waitms 800
      Loop

      rattern bei mir die 6en durch das Terminalfenster und wenn ich dann das PS2 auch noch anschliesse tippt er mir auch schön immer FTP. Hab aber keine lust gehabt jetzt den Laptop mit "Echtem PS2" rauszukramen und das wieder an einem PS2-usb wandler betrieben. Da es aber auch ohne angeschlossenes PS2 funktioniert macht das ja wohl nix

      Tobias

      Quellcode

      1. $regfile = "m8def.dat"
      2. $crystal = 8000000
      3. $baud = 19200 ' Baudrate
      4. $hwstack = 40
      5. $swstack = 16
      6. $framesize = 32
      7. $lib "mcsbyteint.lbx"
      8. Print "1"
      9. Enable Interrupts
      10. $lib "at_emulator.lib"
      11. Print "2"
      12. V7 Alias Portb.4 : Ddrb.4 = 1 : Portb.4 = 0 'LED zur überwachung der Aktivität
      13. Config Atemu = Int1 , Data = Pind.3 , Clock = PinD.7
      14. Print "3"
      15. 'Waitms 500 ' 13-15 Sek im fertigen Anwendungsfall
      16. Print "4"
      17. Sendscankbd Mark
      18. Print "5"
      19. Do
      20. V7 = not V7
      21. print "6"
      22. Sendscankbd Mark
      23. waitms 800
      24. Loop
      25. '-----------------------------------------------------------------------------
      26. end
      27. Mark: ' send mark
      28. Data 12 , &H2B , &HF0 , &H2B , &H2C , &HF0 , &H2C , &H4D , &HF0 , &H4D , &H5A , &HF0 , &H5A
      29. ' ^ send 12 bytes
      30. ' f t p enter
      Alles anzeigen