-         

Ergebnis 1 bis 3 von 3

Thema: Problem mit VM-Lab und Softwareterminal

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200

    Problem mit VM-Lab und Softwareterminal

    Anzeige

    Hallo,

    experimentiere gerade mit VM-Lab und versuche vom virtuellen Microcontroller Daten an das eingebaute Softwareterminal zu schicken.
    Eigentlich sollte das Programm funktionieren... ?

    folgendes steht im Projektfile:
    Code:
    .MICRO "ATmega8"
    .PROGRAM "uart.asm"
    .TARGET "uart.hex"
    
    .TRACE              ; Activate micro trace
    
    ; Following lines are optional; if not included
    ; exactly these values are taken by default
    ; ------------------------------------------------------------
    .POWER VDD=5 VSS=0  ; Power nodes
    .CLOCK 7273800      ; Micro clock
    .STORE 250m         ; Trace (micro+signals) storage time
    
    ; Micro nodes: RESET, AREF, PB0-PB7, PC0-PC6, PD0-PD7, ACO, TIM1OVF, ADC6, ADC7
    ; Define here the hardware around the micro
    ; ------------------------------------------------------------
    
    X1 TTY(9600) TXC RXC ;TX PD1  RX PD0
    Der Assemblercode sieht wie folgt aus:
    Code:
    .include "C:\PROGRA~1\VMLAB\include\m8def.inc"
    
     .def temp = R16				; für Interrupt
     .def zeichen = R17
     .equ VARIABLE = 0 		;
    
    
     ;------------------------------------------------------
     ;    Peripherie initialisieren
     ;------------------------------------------------------
    .equ F_CPU = 7273800                            ; Systemtakt in Hz
    .equ BAUD  = 9600                               ; Baudrate
    
    ; Berechnungen
    .equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
    .equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
    .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille
    
    .if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
      .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
    .endif
    
    
    
     .LIST                      	; List-Output wieder aufdrehen
     .CSEG                      	; was nun folgt, gehört in den FLASH-Speicher
    
    
     ;------------------------------------------------------
     ;     Start Adresse 0000 /Interruptvektoren
     ;------------------------------------------------------
     .org 0x000
    	rjmp Init			; Interruptvektoren überspringen
    
     ;------------------------------------------------------
     ;     INITIALIZE
     ;------------------------------------------------------
    INIT:
    ;Stack Pointer setzen
      ldi temp,high(RAMEND)
      out SPH,temp
      ldi temp,low(RAMEND)
      out SPL,temp
    
    ; Baudrate einstellen
      ldi     temp, HIGH(UBRR_VAL)
      out     UBRRH, temp
      ldi     temp, LOW(UBRR_VAL)
      out     UBRRL, temp
    
    ; Frame-Format: 8 Bit
      ldi     temp, (1<<URSEL)|(3<<UCSZ0)
      out     UCSRC, temp
      sbi     UCSRB,TXEN                  ; TX aktivieren
    
     ;------------------------------------------------------
     ;   HAUPTSCHLEIFE
     ;------------------------------------------------------
    Hauptschleife:					
    	
    	ldi     zeichen, 'T'
        rcall   serout
        ldi     zeichen, 'e'
        rcall   serout
        ldi     zeichen, 's'
        rcall   serout
        ldi     zeichen, 't'
        rcall   serout
        ldi     zeichen, '!'
        rcall   serout
        ldi     zeichen, 10
        rcall   serout
        ldi     zeichen, 13
        rcall   serout
    
    
    rjmp Hauptschleife
    
    
     ;------------------------------------------------------
     ;   Subroutinen / ISRs
     ;------------------------------------------------------
    serout:
        sbis    UCSRA,UDRE                  ; Warten bis UDR für das nächste
                                            ; Byte bereit ist
        rjmp    serout
        out     UDR, zeichen
        ret
    
     ;------------------------------------------------------
     ;   ENDE
     ;------------------------------------------------------
     Ende:
            rjmp Ende
    Weiß jemand rat, ich nämlich nicht mehr

  2. #2
    Hallo,
    die Zeile für das Terminal lautet:

    x1 TTY (9600) PD0 PD1

    dann klapp's auch mit dem Terminal.


    Manfred

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200
    wow, erster Post und gleich ein volltreffer =D>
    danke \/

Berechtigungen

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