www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Studio atmega162 include file fehlerhaft??


Autor: TS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade das UART beispiel für meinen atmaga162 umzubastel 
und irgendwie scheint URXaddr im "m162def.inc" nict vorhanden zus 
sein...

Jedenfalls bekomme ich folgende fehler
F:\#Daten\gps\gps_0\gps_0.asm(21): error: Use of undefined or forward 
referenced symbol 'URXCaddr' in .org

F:\#Daten\gps\gps_0\gps_0.asm(22): error: Overlap in .cseg: addr=0x0 
conflicts with 0x0:0x1

alles was ich gemacht hab is das .include "m8def.inc" in .include 
"m162def.inc" umgewandelt...

Hat jemand ne ahnung was ich falsch mache? Langsam bin ich nämlich am 
verzweifeln :-(

hier nochmal mein code


.include "m162def.inc"

.def temp = R16

.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

.org 0x00
        rjmp main

.org URXCaddr                                   ; Interruptvektor für 
UART-Empfang
        rjmp int_rxc

; Hauptprogramm

main:

    ; Stackpointer initialisieren

    ldi     temp, LOW(RAMEND)
    out     SPL, temp
    ldi     temp, HIGH(RAMEND)
    out     SPH, temp

    ; Port D = Ausgang

    ldi     temp, 0xFF
    out     DDRD, 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, RXCIE                    ; Interrupt bei Empfang
    sbi     UCSRB, RXEN                     ; RX (Empfang) aktivieren

    sei                                     ; Interrupts global 
aktivieren

loop:
    rjmp loop                               ; Endlosschleife

; Interruptroutine: wird ausgeführt sobald ein Byte über das UART 
empfangen wurde

int_rxc:
    push    temp                            ; temp auf dem Stack sichern
    in      temp, UDR                       ; empfangenes Byte lesen,
                                            ; dadurch wird auch der 
Interrupt gelöscht
    out     PORTD, temp                     ; Daten ausgeben
    pop     temp                            ; temp wiederherstellen
    reti                                    ; Interrupt beenden



Also alles haarklein wie im bsp...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wie kommst du darauf, das der Interrupt 'URXCaddr' heisst?

MfG Spess

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Nur als Tipp: Der ATMega162 hat 2 UARTs.

MfG Spess

Autor: TS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein bissel denken sollte man natürlich auch und dran denken,d ass der 
atmega 2 usart SChnittstellen hat >.<

Autor: TS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da war jemand schneller XD vielen dank auf jeden fall für die schnelle 
antwort... er schreibt jetzt brav is EEPROM allerdings wie ich glaube 
nur schrott ^^

der Uart0 hängt jetzt an nem skytraq Venus5 GPS modul und empfängt 
fleißig daten über den Tx allerdings nix sinnvolles wie mir scheint.

Ich hab im forum schon was gelesen von wegen man muss was mit den 
fusebits machen damit er auch schön mit der eingestellten frq arbeitet 
das werd ich mir gleich ma zu gemüte führen :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.