-
        

Ergebnis 1 bis 8 von 8

Thema: Serieleranschluss komisch!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.06.2007
    Alter
    31
    Beiträge
    10

    Serieleranschluss komisch!

    Anzeige

    Hallo zusammen,

    ich habe einen AVR mit einen MAX3232 verbunden und kann dem nun Daten hin schicken und welche von ihm empfangen.
    Der LPT-Port hängt ebenfalls an 2 Ports des AVRs.
    Je nach beschalten und schicken der richtigen Buchstaben, soll er einen bestimmten Port schalten!

    Nun zu meinem Problem:
    Am anfang soll der Controller immer ein 'a' dem PC schicken, damit er weiß, das ein Controller an ihm hängt (hab ich im Programm halt so festgelegt!).
    Natürlich soll der Controller danach ein "Carriage Return" hinterher senden.
    Aber leider macht der das ganz am anfang nicht!
    Gleichzeitig werden die beiden Ports des LPT's mit abgefragt!

    Schicke ich ihm dann einen anderen Buchstaben oder schalte den LPT Port, springt er aus der Schleife raus....wenn der eingegebene Buchstabens "falsch" ist, springt er zurück in die Anfnagsschleife.
    Ab jetzt sendet er aber das Carriage Return!
    Mich würde mal interessieren warum das so ist!
    Den Quelltext sende ich euch mit....ich hoffe ihr könnt mich aufklären und mir einen Ratschlag geben.


    Vielen Dank
    Roberto
    Angehängte Dateien Angehängte Dateien

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.10.2007
    Beiträge
    68
    Hallo Robertino,

    was mir aufgefallen ist, die serout Routine beendest Du mittels reti, d.h. Return from Interrupt.

    Diese Routine ist aber keine Interrupt-Routine. Ersetze einmal das reti durch ret. Dies könnte das Verhalten erklären.

    Code:
    serout:
           sbis USR,UDRE                         ; warten bis Sender frei ist
           rjmp serout
           out UDR, temp                         ; sende Daten
    
           reti                                  ; <- ret statt reti

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.06.2007
    Alter
    31
    Beiträge
    10
    Hallo gummi_ente,

    ich habe nun das reti durch das ret ersetzt, aber leider muss ich jetzt sagen, dass der garnichts mehr sendet....
    Und wenn ich dann wieder mit dem LPT-Port dran gehen, danach schickt er wieder das 'a' ohne Carriage Return.

    Hättest du noch eine andere Idee?!

    Vielen Dank
    Robertino

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Hallo,

    an welcher Stelle in Deinem Programm wird der Stackpointer eingestellt ?

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    12.06.2007
    Alter
    31
    Beiträge
    10
    hm... leider muss ich sagen das ich so ziemlich ein Neuling auf dem Gebiet bin
    Was ist ein Stackpointer?

    Ist das der RAM-Bereich?
    ldi temp, LOW(RAMEND)
    OUT SPL, temp

    Hab einen AT90S2313....der hat doch keinen RAM, oder doch?!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    12.06.2007
    Alter
    31
    Beiträge
    10
    So, es ist vollbracht!

    Vielen Dank mit dem Tip des RAM's!
    Habs einfachmal gemacht und das Ding läuft nun.
    Herzlichsten Dank für eure Hilfe!

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    der hat doch keinen RAM, oder doch?!
    laut http://www.avrfreaks.net/index.php?m...s&func=viewDev hat er 128 Byte SRAM

    Gruß Sebastian

    P.S. Aha! Gut, ich freue mich, daß es daran gelegen hat, und ich Helfen konnte
    Software is like s e x: its better when its free.
    Linus Torvald

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •