-         
+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Uart-Sendeproblem

  1. #1
    eXe
    Gast

    Uart-Sendeproblem

    Hallo,

    habe einen µC (AVR AT90S8535) und möchte damit Daten an meinen PC über die Serielle senden.
    Habe mir also erstmal ein ganz einfaches Programm geschrieben, in dem ich ein Byte andauernd sende. Allerdings kommt am PC nicht das an, was ich eigentlich sende.

    Hier der Code:
    Code:
    .INCLUDE "D:\Programme\AVR Studio\Appnotes\8535def.inc"
    .DEF	temp	= R16
    .DEF	data	= R17
    	
    .EQU	clock	= 8000000
    .EQU	baud	= 2400
    .EQU	ubrrval	= clock/(baud*16)-1
    
    reset:	
    	;Stackpointer initialisieren
    	ldi temp, LOW(RAMEND)
    	out SPL, temp
    	ldi temp, HIGH(RAMEND)
    	out SPH, temp
    	
    	;LED konfiguration
    	ldi temp, 0x04
    	out DDRA, temp	
    	ldi temp, 0x00
    	out PORTA, temp
    	
    	;Baudrate einstellen
    	ldi temp, ubrrval
    	out UBRR, temp
    	
    	;Uart RX und RXInt aktivieren
    	sbi UCR, TXEN
    	ldi data, 0x1C
    	
    loop:	
    	sbis USR, UDRE	;überspringe wenn bereit
    	rjmp loop
    	
    	out UDR, data
    	rjmp loop
    Und ein paar meiner Ergebnisse, wobei oft zwei verschiedene Bytes in unterschiedlichen Reihenfolgen empfangen werden:

    Register im Programm -> Empfangen am PC
    0F -> C8 oder D8
    0E -> 88 oder 98
    0D -> 48 oder 58
    0C -> 08 oder 18

    1F -> E4 oder F4
    1E -> 44
    1D -> A4 oder B4
    1C -> 84

    Kann auch noch weitere Ergebnisse ermitteln, wenn es helfen würde.

    Hat vielleicht jemand eine Idee? Könnte das an der Hardware, Software oder an der Konfiguration liegen?

    Danke im Voraus,
    eXe

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    29
    Beiträge
    674
    ich geh jetzt mal davon aus, dass du die Schaltung richtig aufgebaut hast, mit MAX232 oder ähnlich
    welchen Quartz oder Quartzoszillator verwendest du am µC und hast du diesen per Fusebits aktiviert?
    hast du am PC dieselbe Baudrate angegeben?

  3. #3
    eXe
    Gast
    Die Baudrate ist richtig eingestellt.
    Soweit ich weiß, ist ein 8MHz Quartz drauf, genaueres kann ich noch nicht sagen, da ich das Ding nicht selbst zusammengebaut habe. Kannst du mir denn mal sagen, wie ich das mit den Fusebits aktiviere bzw. welches ich ein-/ausstellen muss. Habe im Datenblatt irgendwie nichts gefunden.

    Gruß,
    eXe

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    29
    Beiträge
    674
    da benutzt du am besten die Forensuche, da findest du sicher was, in einem der letzten Threads darüber hat Frank das ganze sehr schön erklärt(und mit Bildern verdeutlicht)

  5. #5
    eXe
    Gast

    Danke!

    Erstmal danke für die Antworten. Habe es jetzt hinbekommen.
    Es lag an dem Quartz (war ein guter Tipp), das war nämlich ein 7,3728MHz und kein 8MHz. Nachdem ich den Konstrukteur gefragt hatte wusste ich dann, wo dieser zu finden war und habe es dann gesehen.

  6. #6
    eXe
    Gast
    Habe noch etwas zu ergänzen:

    Der AVR AT90S8535 läuft immer mit der Frequenz, die per Quartz reingeht. Da lässt sich also nichts mit Fusebits rumstellen.

    Gruß,
    eXe

+ Antworten

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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