Hallo! Habe soeben von Reichelt µC geliefert bekommen und wollte sofort mit AVR Studio loslegen. Leider funktioniert es nicht. Hier mal der obere teil des Code. Hat jemand eine Idee????? Daaaaanke! .include "m168def.inc" .cseg .org 0 ;----------------------------------------------------------------------- -------- ; Reset and Interrupt vector ;VNr. Beschreibung ;----------------------------------------------------------------------- -------- .org 0x000 rjmp main .org INT0addr ; External Interrupt0 Vector Address reti .org INT1addr ; External Interrupt1 Vector Address reti .org OC2addr ; Output Compare2 Interrupt Vector Address reti .org OVF2addr ; Overflow2 Interrupt Vector Address reti .org ICP1addr ; Input Capture1 Interrupt Vector Address reti .org OC1Aaddr ; Output Compare1A Interrupt Vector Address rjmp TIMER .org OC1Baddr ; Output Compare1B Interrupt Vector Address reti .org OVF1addr ; Overflow1 Interrupt Vector Address reti .org OVF0addr ; Overflow0 Interrupt Vector Address reti .org SPIaddr ; SPI Interrupt Vector Address reti .org URXCaddr ; USART Receive Complete Interrupt Vector Address reti .org UDREaddr ; USART Data Reg. Empty Interr. Vector Address reti .org UTXCaddr ; USART Transmit Complete Interrupt Vector Address reti .org ADCCaddr ; ADC Interrupt Vector Address reti .org ERDYaddr ; EEPROM Interrupt Vector Address reti .org ACIaddr ; Analog Comparator Interrupt Vector Address reti .org TWIaddr ; Irq. vector address for Two-Wire Interface reti .org INT_VECTORS_SIZE .equ XTAL = 3686400;H ;----------------------------------------------------------------------- -------- ; Start, Power ON, Reset ;----------------------------------------------------------------------- -------- main: ldi r16, LOW(RAMEND) ; Stackpointer initialisieren out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 ldi r16, high( 7200 - 1 ) out OCR1AH, r16 ldi r16, low( 7200 - 1 ) out OCR1AL, r16 ldi r16, ( 1 << WGM12 ) | ( 1 << CS12 ) out TCCR1B, r16 ldi r16, 1 << OCIE1A ; OCIE1A: Interrupt bei Timer Compare out TIMSK, r16 sei
Ich schrieb: > Leider funktioniert es nicht. Bevor sich jetzt denkt "warum schreibt die Pfeife ned mehr, was soll man mit so einer "Fehlerbeschreibung" anfangen?!!?": Fehlerbeschreibungen mit Inhalt gibts nur Dienstags bei wolkenlosem Himmel...
Ja, tut mir leid. 4 Errors beim versuch zu assemblieren I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(15): Including file 'C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\m168def.inc' I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(85): error: Operand 1 out of range: 0x89 I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(87): error: Operand 1 out of range: 0x88 I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(89): error: Operand 1 out of range: 0x81 I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(92): error: Undefined symbol: TIMSK I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(331): No EEPROM data, deleting I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.eep
Na da steht doch schon genauesten drin, wo das Problem ist... Welche Zeile bereitet dir denn Schwierigkeiten?
Hi http://www.atmel.com/dyn/resources/prod_documents/doc2553.pdf Gilt sinngemäß auch für ATMega8->ATMega168 MfG Spess
Tut mir wirklich leid, ich brings aus eigenem Wissen nicht hin. Kann mir das jemand "umbauen"???
Hab jetzt selbst probiert: ;+---------------------------------------------------------------------- -------- .include "m168def.inc" .cseg .org 0 ;----------------------------------------------------------------------- -------- ; Reset and Interrupt vector ;VNr. Beschreibung ;----------------------------------------------------------------------- -------- .org 0x000 rjmp main ;.org INT0addr ; External Interrupt0 Vector Address reti ;.org INT1addr ; External Interrupt1 Vector Address reti ;.org OC2addr ; Output Compare2 Interrupt Vector Address reti ;.org OVF2addr ; Overflow2 Interrupt Vector Address reti ;.org ICP1addr ; Input Capture1 Interrupt Vector Address reti reti reti reti reti reti ;.org OC1Aaddr ; Output Compare1A Interrupt Vector Address rjmp TIMER ;.org OC1Baddr ; Output Compare1B Interrupt Vector Address reti ;.org OVF1addr ; Overflow1 Interrupt Vector Address reti ;.org OVF0addr ; Overflow0 Interrupt Vector Address reti ;.org SPIaddr ; SPI Interrupt Vector Address reti ;.org URXCaddr ; USART Receive Complete Interrupt Vector Address reti ;.org UDREaddr ; USART Data Reg. Empty Interr. Vector Address reti ;.org UTXCaddr ; USART Transmit Complete Interrupt Vector Address reti ;.org ADCCaddr ; ADC Interrupt Vector Address reti ;.org ERDYaddr ; EEPROM Interrupt Vector Address reti ;.org ACIaddr ; Analog Comparator Interrupt Vector Address reti ;.org TWIaddr ; Irq. vector address for Two-Wire Interface reti reti reti reti .org INT_VECTORS_SIZE .equ XTAL = 3686400;H ;----------------------------------------------------------------------- -------- ; Start, Power ON, Reset ;----------------------------------------------------------------------- -------- main: ldi r16, LOW(RAMEND) ; Stackpointer initialisieren out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 ldi r16, high( 7200 - 1 ) out OCR1AH, r16 ldi r16, low( 7200 - 1 ) out OCR1AL, r16 ldi r16, ( 1 << WGM12 ) | ( 1 << CS12 ) out TCCR1B, r16 ldi r16, 1 << OCIE1A ; OCIE1A: Interrupt bei Timer Compare out TIMSK0, r16 sei das kommt dabei raus: I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(15): Including file 'C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\m168def.inc' I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(79): error: Operand 1 out of range: 0x89 I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(81): error: Operand 1 out of range: 0x88 I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(83): error: Operand 1 out of range: 0x81 I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(86): error: Operand 1 out of range: 0x6e I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.asm(325): No EEPROM data, deleting I:\Elektro\AVR Studio Projekte\Laufzeitueberwachung_Futterautomat_07.eep
Hi Also zu Mitschreiben: >error: Operand 1 out of range: 0x89 bezieht sich auf > out OCR1AH, r16 OCR1AH liegt aber beim ATMega168 in einem Adressbereich, der mit 'out' nicht mehr erreichbar ist. Deshalb muss auf OCR1AH zum Schreiben mit 'sts' zugegriffen werden. -> sts OCR1AH,r16 >Undefined symbol: TIMSK Der ATMega168 hat kein TIMSK-Register. Hier hat jeder Timer ein eigenes TIMSK-Register.Also wird für Timer1 aus TIMSK TIMSK1. Außerdem stimmt deine Interruptvektortabelle nicht. Der ATMega168 hat mehr Interrupts. Findest du aber alles in der oben verlinkten AppNote. MfG Spess
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.