Forum: Mikrocontroller und Digitale Elektronik AVR - CKsel - Calibrated Internal RC Oscillator


von Lukas -. (lukas)


Lesenswert?

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

von Michael U. (Gast)


Lesenswert?

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

von Marco S (Gast)


Lesenswert?

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

von Lukas -. (lukas)


Lesenswert?

Ö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
Noch kein Account? Hier anmelden.