• 19.04.2024, 09:56
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

ATmega64 und AVRstudio4 Problem

Mittwoch, 30. Januar 2013, 17:47

Hallo!

Ich habe ein kleines Problemchen.
Ich arbeite zur Zeit an einem Schulprojekt, für die 12te Klasse eines technischen Gymnasiums. Programmiert werden soll ein kleines TicTacToe-Spiel aus LEDs und einigen Tastern.
Benutzt wird der ATmega64l.
Nun sitze ich im Moment am Quellcode dafür, und habe das bisher geschriebene schon mal compiled um nach Fehlern zu suchen.
Dabei zeigt er mir an, es seien einige Register im ATmega nicht vorhanden, obwohl sie es eigentlich sein müssten.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
.NOLIST.INCLUDE     ;Include aus der Liste ausgeschlossen.LIST
.org 0x000				;Bei 0x0000 Interrupttabelle beginnen
rjmp RESET				;Reset-Routine (Extern)rjmp INT_0_HANDLER		;INT 0 (Extern)reti					;INT 1 (Extern)reti                    ;INT 2 (Extern)reti					;INT 3 (Extern)reti					;INT 4 (Extern)reti					;INT 5 (Extern)reti					;INT 6 (Extern)reti					;INT 7 (Extern)reti					;TIMER2 COMPreti					;TIMER2 OVFreti					;TIMER1 CAPTreti					;TIMER1 COMPAreti					;TIMER1 COMPBreti					;TIMER1 OVFreti					;TIMER0 COMPreti					;TIMER0 OVFreti					;SPI, STCreti					;USART0, RXreti					;USART0, UDREreti					;USART0, TXreti					;ADCreti					;EE READYreti					;ANALOG COMPreti					;TIMER1 COMPCreti					;TIMER3 CAPTreti					;TIMER3 COMPAreti					;TIMER3 COMPBreti					;TIMER3 COMPCreti					;TIMER3 OVFreti					;USART1, RXreti					;USART1, UDREreti					;USART1, TXreti					;TWIreti					;SPM READY
RESET:ldi r16, high(RAMEND)	;Stack-out SPH, r16			;-ldi r16, low(RAMEND)	;-out SPL, r16			;Pointer
;Eingänge konfigurieren
ldi r16, 0b00000000		;out DDRA, r16			;Eingänge in "..."out PORTA, r16			;Eingänge ausschalten
ldi r16, 0b00000000		;out DDRB, r16			;Eingänge in "..."out PORTB, r16			;Eingänge ausschalten
ldi r16, 0b00000000		;out DDRC, r16			;Eingänge in "..."out PORTC, r16			;Eingänge ausschalten
;Ausgänge konfigurieren
ldi r16, 0b11111111		;out DDRD, r16			;Ausgänge in "..."ldi r16, 0b00000000		;out PORTD, r16			;Ausgänge ausschalten
ldi r16, 0b11111111		;out DDRE, r16			;Ausgänge in "..."ldi r16, 0b00000000		;out PORTE, r16			;Ausgänge ausschalten
ldi r16, 0b11111111		;out DDRF, r16			;Ausgänge in "..."ldi r16, 0b00000000		;out PORTF, r16			;Ausgänge ausschalten
;Interrupts einschalten
ldi r16, (1<<isc01) |="" (1<<isc11)="" ;int0="" und="" int1="" auf="" fallende="" flanke="" konfigurierenout="" mcucr,="" r16="" ;="" ldi="" r16,="" (1<<int0)="" (1<<int1)="" aktivierenout="" gicr,="" ;
sei									;Freigeben

HAUPT:;--------------------------------------------------
ldi r16, PINA0						;Prüfschleife--BRNE r16, 1							;--------------	rjmp GLEICHS1					;Schalter 1----UNGLEICHS1:							;--------------	rjmp WEITERS1					;--------------GLEICHS1:							;--------------ldi r16, 0b00000001					;--------------ldi r17, 1							;--------------out PINF3, r17						;PINF3 RDY-LED-rjmp RDY							;--------------WEITERS1:							;--------------
;--------------------------------------------------
ldi r16, PINA1						;Prüfschleife--BRNE r16, 1							;--------------	rjmp GLEICHS2					;Schalter 2----UNGLEICHS2:							;--------------	rjmp WEITERS2					;--------------GLEICHS2:							;--------------ldi r16, 0b00000100					;--------------ldi r17, 1							;--------------out PINF3, r17						;PINF3 RDY-LED-rjmp RDY							;--------------WEITERS2:							;--------------
;--------------------------------------------------
ldi r16, PINA2						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS3					;Schalter 3UNGLEICHS3:							;	rjmp WEITERS3					;GLEICHS3:							;ldi r16, 0b00010000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDrjmp RDY							;WEITERS3:							;
;--------------------------------------------------
ldi r16, PINA3						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS4					;Schalter 4UNGLEICHS4:							;	rjmp WEITERS4					;GLEICHS4:							;ldi r16, 0b01000000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDrjmp RDY							;WEITERS4:							;
;--------------------------------------------------
ldi r16, PINA4						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS5					;Schalter 5UNGLEICHS5:							;	rjmp WEITERS5					;GLEICHS5:							;ldi r16, 0b00000001					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2							;Routinenartrjmp RDY							;WEITERS5:							;
;--------------------------------------------------
ldi r16, PINA5						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS6					;Schalter 6UNGLEICHS6:							;	rjmp WEITERS6					;GLEICHS6:							;ldi r16, 0b00000100					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2rjmp RDY							;WEITERS6:							;
;--------------------------------------------------
ldi r16, PINA6						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS7					;Schalter 7UNGLEICHS7:							;	rjmp WEITERS7					;GLEICHS7:							;ldi r16, 0b00010000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2rjmp RDY							;WEITERS7:							;
;--------------------------------------------------
ldi r16, PINA7						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS8					;Schalter 8UNGLEICHS8:							;	rjmp WEITERS8					;GLEICHS8:							;ldi r16, 0b01000000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2rjmp RDY							;WEITERS8:							;
;--------------------------------------------------
ldi r16, PINB0						;PrüfschleifeBRNE r16,1							;	rjmp GLEICHS9					;Schalter 9UNGLEICHS9:							;	rjmp WEITERS9					;GLEICHS9:							;ldi r16, 0b00000001					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 3rjmp RDY							;WEITERS9:							;
;--------------------------------------------------
ldi r16, PINB1						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS10					;Schalter 10UNGLEICHS10:						;	rjmp WEITERS10					;GLEICHS10:							;ldi r16, 0b00000011					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDrjmp RDY							;WEITERS10:							;
;--------------------------------------------------
ldi r16, PINB2						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS11					;Schalter 11UNGLEICHS11:						;	rjmp WEITERS11					;GLEICHS11:							;ldi r16, 0b00001100					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDrjmp RDY							;WEITERS11:							;
;--------------------------------------------------
ldi r16, PINB3						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS12					;Schalter 12UNGLEICHS12:						;	rjmp WEITERS12					;GLEICHS12:							;ldi r16, 0b00110000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDrjmp RDY							;WEITERS12:							;
;--------------------------------------------------
ldi r16, PINB4						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS13					;Schalter 13UNGLEICHS13:						;	rjmp WEITERS13					;GLEICHS13:							;ldi r16, 0b11000000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDrjmp RDY							;WEITERS13:							;
;--------------------------------------------------
ldi r16, PINB5						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS14					;Schalter 14UNGLEICHS14:						;	rjmp WEITERS14					;GLEICHS14:							;ldi r16, 0b00000011					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2							;rjmp RDY							;WEITERS14:							;
;--------------------------------------------------
ldi r16, PINB6						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS15					;Schalter 15UNGLEICHS15:						;	rjmp WEITERS15					;GLEICHS15:							;ldi r16, 0b00001100					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2							;rjmp RDY							;WEITERS15:							;
;--------------------------------------------------
ldi r16, PINB7						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS16					;Schalter 16UNGLEICHS16:						;	rjmp WEITERS16					;GLEICHS16:							;ldi r16, 0b00110000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2							;WEITERS16:							;
;--------------------------------------------------
ldi r16, PINC0						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS17					;Schalter 17UNGLEICHS17:						;	rjmp WEITERS17					;GLEICHS17:							;ldi r16, 0b11000000					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 2							;WEITERS17:							;
;--------------------------------------------------
ldi r16, PINC1						;PrüfschleifeBRNE r16, 1							;	rjmp GLEICHS18					;Schalter 18UNGLEICHS18:						;	rjmp WEITERS18					;GLEICHS18:							;ldi r16, 0b00000011					;ldi r17, 1							;out PINF3, r17						;PINF3 RDY-LEDldi r17, 3							;WEITERS18:							;
;--------------------------------------------------rjmp HAUPT
RDY:rjmp RDY
<isc01) |="" (1<<isc11)="" ;int0="" und="" int1="" auf="" fallende="" flanke="" konfigurierenout="" mcucr,="" r16="" ;="" ldi="" r16,="" (1<<int0)="" (1<<int1)="" aktivierenout="" gicr,="" ;

Mittwoch, 30. Januar 2013, 17:47

Hier die Errormeldungen:
"
AVRASM: AVR macro assembler 2.1.30 (build 592 Nov 7 2008 12:38:17)

Copyright (C) 1995-2008 ATMEL Corporation

H:\DreiGewinnt\DreiGewinnt.asm(2): Including file 'C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc'
H:\DreiGewinnt\DreiGewinnt.asm(8): error: Undefined symbol: INT_0_HANDLER
H:\DreiGewinnt\DreiGewinnt.asm(52): error: Undefined symbol: DDRA
H:\DreiGewinnt\DreiGewinnt.asm(53): error: Undefined symbol: PORTA
H:\DreiGewinnt\DreiGewinnt.asm(71): error: Undefined symbol: DDRE
H:\DreiGewinnt\DreiGewinnt.asm(73): error: Undefined symbol: PORTE
H:\DreiGewinnt\DreiGewinnt.asm(76): error: Undefined symbol: DDRF
H:\DreiGewinnt\DreiGewinnt.asm(78): error: Undefined symbol: PORTF
H:\DreiGewinnt\DreiGewinnt.asm(94): error: Undefined symbol: PINA0
H:\DreiGewinnt\DreiGewinnt.asm(95): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(102): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(108): error: Undefined symbol: PINA1
H:\DreiGewinnt\DreiGewinnt.asm(109): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(116): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(122): error: Undefined symbol: PINA2
H:\DreiGewinnt\DreiGewinnt.asm(123): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(130): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(136): error: Undefined symbol: PINA3
H:\DreiGewinnt\DreiGewinnt.asm(137): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(144): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(150): error: Undefined symbol: PINA4
H:\DreiGewinnt\DreiGewinnt.asm(151): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(158): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(165): error: Undefined symbol: PINA5
H:\DreiGewinnt\DreiGewinnt.asm(166): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(173): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(180): error: Undefined symbol: PINA6
H:\DreiGewinnt\DreiGewinnt.asm(181): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(188): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(195): error: Undefined symbol: PINA7
H:\DreiGewinnt\DreiGewinnt.asm(196): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(203): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(211): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(218): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(226): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(233): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(240): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(247): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(254): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(261): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(268): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(275): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(282): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(289): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(297): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(304): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(312): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(319): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(326): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(333): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(340): error: Wrong number of operands
H:\DreiGewinnt\DreiGewinnt.asm(347): error: Undefined symbol: PINF3
H:\DreiGewinnt\DreiGewinnt.asm(357): No EEPROM data, deleting H:\DreiGewinnt\DreiGewinnt.eep

Assembly failed, 51 errors, 0 warnings
"

Woran liegts, jemand ne Ahnung ?
Denn DDRA ist laut Datenblatt vorhanden, genau wie alle anderen, als Error bezeichneten Register.
(Entschuldigung wegen dem unformatiertem Quelltext, aber ich bekomme s nicht hin ihn hier im Browser zu formatieren.)
Vielen Dank :))

Mittwoch, 30. Januar 2013, 20:48

Unter C würde ich sagen, da fehlt dir ein Include. Aber bei Assembler, keinen Plan.

Donnerstag, 31. Januar 2013, 14:50

Das sollte recht einfach sein, da ist schlicht das falshe definitionsfile für den Prozessor geladen.

Quellcode

1
H:\DreiGewinnt\DreiGewinnt.asm(2): Including file 'C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8def.inc'


Hört sich danach als ob das Demo für einen Mega8 gemacht wurde. Du muss das richtige File für deinen Prozessor einbinden.

Donnerstag, 31. Januar 2013, 16:34

Das wars! Danke :)