Hallo, ich habe hier einen ATmega 8 und möchte das der mit dem "Calibrated Internal RC Oscillator" auf 8 Mhz leuft. Programmieren tu ich das ganze mit dem STK500. Laufen soll das auf einer selbsgbauten Testplatine mit LEDs Das hat auch schon geklappt aber nur in nem ganz einfachem Programmtext ohne Interuppts. Hier ist der Anfang von dem Programmtext aber er kommt anscheinend nicht einmal bis "sbi PortD, 7" denn es leuchtet keine LED. .include: "m8def.inc" .def adresseL = r1 .def adresseH = r2 .def dmxcountL = r19 .def dmxcountH = r20 .def temp = r16 .def dmx_status = r17 .def dmx_byte = r18 .equ fck = 8000000 ; Quarzfrequenz des AVR .equ fbd = 250000 ; Baudrate UART .equ bddv = (fck/ (16*fbd))-1 ; Wert für Baudraten-Teiler .org 0x000 rjmp init ;reset vector address reti ;External Interrupt0 Vector Address reti ;External Interrupt1 Vector Address reti ;Input Capture1 Interrupt Vector Address reti ;Output Compare1A Interrupt Vector Address reti ;Output Compare1B Interrupt Vector Address reti ;Overflow1 Interrupt Vector Address reti ;Overflow0 Interrupt Vector Address reti ;SPI Interrupt Vector Address rjmp get_byte ;UART Receive Complete Interrupt Vector Address reti ;UART Data Register Empty Interrupt Vector Address reti ;UART Transmit Complete Interrupt Vector Address reti ;Analog Comparator Interrupt Vector Address reti ;External Interrupt2 Vector Address reti ;Output Compare0 Interrupt Vector Address reti ;EEPROM Interrupt Vector Address reti ;SPM complete Interrupt Vector Address init: cli ;Interupts verbieten cbi CKSEL0, 0 ; cbi CKSEL1, 0 ; cbi CKSEL2, 1 ; cbi CKSEL3, 0 ; 8 Mhz ;STACKPOINTER ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse out SPL, temp ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse out SPH, temp ;PortC ldi temp, 0xff ;Port PC0 als ausgang definieren out DDRC, temp ; ;PortD ldi temp, 0x00 ;Port PD0 als Eingang definieren out DDRD, temp ; sbi PortD, 7 ;Signalisiere: Eigeschaltet
Hallo, ldi temp, 0x00 ;Port PD0 als Eingang definieren out DDRD, temp ; sbi PortD, 7 was soll auch leuchten, wenn PORTD Eingang ist? Gruß aus Berlin Michael
cbi CKSEL0, 0 ??? Stelle die Frequenz mal lieber über den Programmieradapter ein. Ansonsten schaltest du mit ldi temp, 0x00 ;Port PD0 als Eingang definieren out DDRD, temp ; sbi PortD, 7 ;Signalisiere: Eigeschaltet lediglich den internen PullUp an. Ob der ausreicht eine LED zu treiben? cu
Öhm, also in nem anderen Projekt mit dem mega8 hat das so geklappt: ; Ampel steuerung mit ATMega 8 .include "m8def.inc" cbi CKSEL0, 0 cbi CKSEL1, 0 cbi CKSEL2, 1 cbi CKSEL3, 0 ; 8Mhz !?!? .def temp = r16 .def uZahl = r17 .def mZahl = r18 .def oZahl = r19 ldi temp, Low(RAMEND) out SPL, temp ldi temp, high(RAMEND) out SPH, temp ;Stack Pointer Intialisieren ldi temp, 0xff out DDRB, temp ;Port B ist ausgang Main: ldi temp, 0b001001 ;Rot - Rot out PortB, temp ldi oZahl, 25 rcall delay ldi temp, 0b001011 ;Rot - Rot Gelb out PortB, temp ldi oZahl, 25 rcall delay ldi temp, 0b001100 ;Rot - Grün out PortB, temp ldi oZahl, 200 rcall delay ...usw.... Reicht es Also wenn ich mit dem AVR assembler zum STK connecte und im kartenreiter "Fuses" das einstelle, wie ich möchte? kann mich jemand mal einfach ganz simpel aufklären, was man genau machen muss, damit der m8 auf 8Mhz mit dem Internem Osc. leuft? Vielen Dank!
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.