-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Atmega2560

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.05.2005
    Ort
    NRW
    Beiträge
    39

    Atmega2560

    Anzeige

    Hallo,
    seit längerem programmiere ich den ATMEGA8 in Assembler mit dem Atmel Studio 6.2 ohne Probleme.

    Nach einem Rechnerwechsel habe ich das Atmel-Studio neu aufgespielt.
    Das ATMEGA8-Programm bekomme ich auch mit dem neuen Rechner lauffähig bearbeitet

    Jetzt habe ich mit einem ATMEGA 2560 ein ähnliches Programm geschrieben und bekomme
    immer viele Fehlermeldungen, z.B.:

    Operrand 1 out of range 0xbc.
    bezogen auf die Zeile
    out twcr, r16


    ich benutze die entsprechende include-Anweisung .include m2560def.inc


    Dann hatte ich früher nach dem Assemblieren in den Output-Files eine LST-Datei, jetzt nicht mehr angezeigt wird.
    Ich hab bisher noch nicht gefunden, wo man das einstellen kann.

    Kann mir hier jemand zu diesen 2 Problemen weiterhelfen?

    Vielen Dank schon mal für eure Hilfe.

    Gruß Gucky.
    Wissen ist Macht, nichts Wissen macht nichts !

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.649
    Blog-Einträge
    133
    Zitat Zitat von Gucky Beitrag anzeigen
    Operrand 1 out of range 0xbc.
    bezogen auf die Zeile
    out twcr, r16
    OUT läßt nur Adressen bis 63 (0x3F) zu. TWCR Register sitzt im ATmega2560 aber auf Adresse 188 (0xBC). Da muß man dann STS benutzen. Also sts TWCR,r16. Ich werkele immer noch mit Bascom rum. Der Assembler dort ersetzt das OUT bei zu hohen Adressen automatisch durch STS.

    Wie und wo man im Studio 6 die LST Datei bekommt weiß ich leider nicht Ich benutze den externen Disassembler/Reassembler ReAVR und öffne damit die .hex Datei.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.05.2005
    Ort
    NRW
    Beiträge
    39
    Hallo Searcher,
    erstmal recht herzlichen Dank für deine Info.
    Mit der STS bzw. LDS - Anweisung bekomme ich jetzt keine Fehlermeldung mehr,
    muß mich aber noch etwas mit dem Programm selber befassen, weil der 2560 doch noch einige Ports u.s.w. mehr hat
    und man die Programme nicht 1:1 übernehmen kann.

    Ein Problem habe ich noch mit dem Port K.
    Hier bekomme ich bei den Anweisungen "out portk, R16" und "sts portk, r16" die Fehlermeldung "Invalid register"
    ich habe an meiner Anwendung an diesem Port LED's dran und das ganze über die Arduino-Softwar programmieren können.
    Es muss also irgendwie gehen. Optional könnte ich das ganze auch umlöten, möchte ich aber nur ungerne.
    Irgendwie stehe ich im Moment auf dem Schlauch.

    Wenn mir da jemand helfen kann, würde ich mich sehr freuen.

    Gruß Gucky
    Geändert von Gucky (14.06.2020 um 14:21 Uhr) Grund: Tipfehler beseitigt
    Wissen ist Macht, nichts Wissen macht nichts !

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.649
    Blog-Einträge
    133
    Zitat Zitat von Gucky Beitrag anzeigen
    Ein Problem habe ich noch mit dem Port K.
    Hier bekomme ich bei den Anweisungen "out portk, R16" und "sts portk, r16" die Fehlermeldung "Invalid register"
    Hallo,

    für "Invalid register" gibt es eigentlich keinen Grund. Immer noch die m2560def.inc in Verwendung?
    Groß Kleinschreibung sensitiv irgendwo eingestellt?
    Versuchsweise statt PORTK die Adresse des Registers angeben: 0x108 bzw. dezimal 264

    Ansonsten mal das komplette Programm posten.

    Gruß
    Searcher
    Geändert von Searcher (15.06.2020 um 07:31 Uhr) Grund: Registeradresse berichtigt
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Searcher Beitrag anzeigen
    Immer noch die m2560def.inc in Verwendung?
    Mal in den File reinschauen, was da zu Port K so steht.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    24.05.2005
    Ort
    NRW
    Beiträge
    39
    ich glaube, der Lösung auf der Spur zu sein, kann ich jetzt aber auf die schnelle nicht beschreiben.
    Werde wohl erst Ende der Woche wieder dran kommen und poste dann hier das Ergebnis.

    Gruß
    Gucky
    Wissen ist Macht, nichts Wissen macht nichts !

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Gucky Beitrag anzeigen
    ich glaube, der Lösung auf der Spur zu sein, kann ich jetzt aber auf die schnelle nicht beschreiben.
    Damits nicht so lange dauert, hier ein Auszug aus der Include-Datei. Hab ich mit Googles Hilfe gefunden, da ich keine AVRs benutze:

    Code:
    .equ	TCCR5C	= 0x122	; MEMORY MAPPED
    .equ	TCCR5B	= 0x121	; MEMORY MAPPED
    .equ	TCCR5A	= 0x120	; MEMORY MAPPED
    .equ	PORTL	= 0x10b	; MEMORY MAPPED
    .equ	DDRL	= 0x10a	; MEMORY MAPPED
    .equ	PINL	= 0x109	; MEMORY MAPPED
    .equ	PORTK	= 0x108	; MEMORY MAPPED
    .equ	DDRK	= 0x107	; MEMORY MAPPED
    .equ	PINK	= 0x106	; MEMORY MAPPED
    .equ	PORTJ	= 0x105	; MEMORY MAPPED
    und

    Code:
    ; ***** PORTK ************************
    ; PORTK - PORT K Data Register
    .equ	PORTK0	= 0	; PORT K Data Register bit 0
    .equ	PK0	= 0	; For compatibility
    .equ	PORTK1	= 1	; PORT K Data Register bit 1
    .equ	PK1	= 1	; For compatibility
    .equ	PORTK2	= 2	; PORT K Data Register bit 2
    .equ	PK2	= 2	; For compatibility
    .equ	PORTK3	= 3	; PORT K Data Register bit 3
    .equ	PK3	= 3	; For compatibility
    .equ	PORTK4	= 4	; PORT K Data Register bit 4
    .equ	PK4	= 4	; For compatibility
    .equ	PORTK5	= 5	; PORT K Data Register bit 5
    .equ	PK5	= 5	; For compatibility
    .equ	PORTK6	= 6	; PORT K Data Register bit 6
    .equ	PK6	= 6	; For compatibility
    .equ	PORTK7	= 7	; PORT K Data Register bit 7
    .equ	PK7	= 7	; For compatibility
    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.649
    Blog-Einträge
    133
    Zitat Zitat von Klebwax Beitrag anzeigen
    Code:
    .equ    PORTK    = 0x108    ; MEMORY MAPPED
    Stimmt. Oben hatte ich fälschlich die Adresse vom PINJ Register angegeben. Ist jetzt berichtigt.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    24.05.2005
    Ort
    NRW
    Beiträge
    39
    Danke für eure Bemühungen. Ich habe die Lösung für den Assembler gefunden.
    Alles, was über die Adresse 3f adressiert wird, geht nur über eine indirekte Adressierung z.B. über das Register Z.

    Beispiel:

    ;Datenrichtungsregister definieren
    ldi r16, 0x01 ;r16 mit 01 laden
    ldi zh, high(ddrk) ;High-Adresse von ddrk nach zh
    ldi zl, low(ddrk) ;Low-Adresse von ddrk nach zl
    st z, r16 ;Das Datenrichtungsregister k (ddrk) Bit 0 wird aus Ausgang, Bit 1...7 auf Eingang gesetzt

    ;Ausgang einschalten
    ldi r16, 0x01 ;r16 mit 01 laden
    ldi zh, high(portk) ;High-Adresse von portk nach zh
    ldi zl, low(ddrk) ;Low-Adresse von portk nach zl
    st z, r16 ;Das Port k Bit 0 wird eingeschaltet

    Gruß Gucky
    Wissen ist Macht, nichts Wissen macht nichts !

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.649
    Blog-Einträge
    133
    Zitat Zitat von Gucky Beitrag anzeigen
    Alles, was über die Adresse 3f adressiert wird, geht nur über eine indirekte Adressierung z.B. über das Register Z.
    Hallo Gucky,
    das bezweifle ich. Mit AVR Studio 4.19 geht es auch mit STS über Adresse 3f.

    Wie kommst Du darauf, daß es nur über indirekte Adressierug läuft?


    List File erzeugen kann man beim Studio 4.19 über Menü "Projekt" -> "Assembler Options" einstellen.
    In Studio 6 scheint es anders zu sein. Vielleicht hilft Dir das weiter:
    https://www.avrfreaks.net/forum/how-...ting-list-file

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. PWM auf dem ATMEGA2560
    Von Mithrandir im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 08.03.2014, 22:12
  2. Atmega2560 : PWM beeinflusst ADC
    Von sportfreak im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 21.01.2010, 17:59
  3. Grundschaltung ATMega2560
    Von Jaecko im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 27.08.2008, 07:08
  4. ATMEGA2560 Beispielprogramm
    Von mattschach im Forum C - Programmierung (GCC u.a.)
    Antworten: 17
    Letzter Beitrag: 06.01.2008, 15:58
  5. atMega2560 in Bascom
    Von ceekay im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 17.08.2005, 21:08

Berechtigungen

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