- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 7 von 7

Thema: Serielle Schnittstelle

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200

    Serielle Schnittstelle

    Hallo Leute,

    Ich versuche seit heut Morgen eine Verbindung zwischen meinem PC und meinem RNMega8 via serieller Schnittstelle aufzubauen, leider bisher ohne Erfolg.

    Mein Quarz schwingt mit 7,2738MHz. An meinem Programmierkabel sind die Pins 2 und 3 mit RX und TX verbunden, Die Masseleitung geht an das Gehäuse des 9poligen Steckers.

    Die Einstellung meiner Fusebits habe ich mittels Ponyprog ausgelesen und in den Anhang gepackt.

    Am Hyperterminal sind 9600baud eingestellt, Flussteuerung: keine, der Rest wie voreingestellt.

    Folgendes Programm verwende ich:
    Code:
     .NOLIST                    	
     .INCLUDE <m8def.inc>       	
     .def temp = R16				
     .def zeichen = R17
     
     ;------------------------------------------------------
     ;    Peripherie initialisieren
     ;------------------------------------------------------
    .equ F_CPU = 4000000                            ; 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                      	
     .CSEG                      	
     ;------------------------------------------------------
     ;     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
    
     ;------------------------------------------------------
     ;   Datenbereich
     ;------------------------------------------------------
    Daten:
               .db 0x00, 0x00
               .db 0x00, 0x00
    
    
     ;------------------------------------------------------
     ;   ENDE
     ;------------------------------------------------------
     Ende:  
            rjmp Ende
    Meine Frage wäre nun, ob das Programmierkabel richtig ist, der Quarz geeignet ist und die richtige Baudrate verwendet wird. Vielleicht kann ja auch jemand mal das Programm testen.

    Was mir aufgefallen ist, dass beim resetten meines Boards, komische Zeichen an das Terminalprogramm übermittelt werden.

    Danke schon mal für euer Kopfzerbrechen..
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fusebits_830.jpg  

Berechtigungen

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

Solar Speicher und Akkus Tests