www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Takt testen (Led soll blinken)


Autor: Johannes Permoser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

kann mir mal jemand schnell ein programm schreiben, das bei einem
internen takt von 1mhz (atmega8) so im sekunden abstand eine led
blinken lässt und bei höheren takten entsprechend schneller?
möchte testen, ob ich einen quarz richtig angeschlossen hab.

ist nicht so, dass ich kein assembler lernen möchte, nur wollte ich
zuerst sichergehn, dass wenigstens die hardware in ordnung und richtig
angeschlossen ist.

mfg,
johannes

Autor: Conlost (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;------------------------------------------------------------
; timer1.asm
;------------------------------------------------------------
.include "m16def.inc"
.device ATmega16
.def temp = r16
.def leds = r17
.equ start = 65536 - 7812   ; 2 hoch 16 minus 7812
.equ highValue = high(start)
.equ lowValue = low(start)
.org $0000

; ***** INTERRUPT VECTORS *********************************
rjmp reset     ; Reset Handler
;.org INT0addr   ;= 0x0002  ; External Interrupt Request 0
;.org INT1addr   ;= 0x0004  ; External Interrupt Request 1
;.org OC2addr    ;= 0x0006  ; Timer/Counter2 Compare Match
;.org OVF2add    ;= 0x0008  ; Timer/Counter2 Overflow
;.org ICP1addr   ;= 0x000a  ; Timer/Counter1 Capture Event
;.org OC1Aaddr   ;= 0x000c  ; Timer/Counter1 Compare Match A
;.org OC1Baddr   ;= 0x000e  ; Timer/Counter1 Compare Match B
.org OVF1addr   ;= 0x0010  ; Timer/Counter1 Overflow
rjmp timer1
;.org OVF0addr   ;= 0x0012  ; Timer/Counter0 Overflow
;.org SPIaddr    ;= 0x0014  ; Serial Transfer Complete
;.org URXCaddr   ;= 0x0016  ; USART, Rx Complete
;.org UDREaddr   ;= 0x0018  ; USART Data Register Empty
;.org UTXCaddr   ;= 0x001a  ; USART, Tx Complete
;.org ADCCaddr   ;= 0x001c  ; ADC Conversion Complete
;.org ERDYaddr   ;= 0x001e  ; EEPROM Ready
;.org ACIaddr    ;= 0x0020  ; Analog Comparator
;.org TWIaddr    ;= 0x0022  ; 2-wire Serial Interface
;.org INT2addr   ;= 0x0024  ; External Interrupt Request 2
;.org OC0addr    ;= 0x0026  ; Timer/Counter0 Compare Match
;.org SPMRaddr   ;= 0x0028  ; Store Program Memory Ready

reset:

ldi temp,low(RAMEND)    ;Initialize stackpointer for parts with SW stack
out SPL,temp
ldi temp,high(RAMEND)     ;Commented out since 1200 does not have SRAM
out SPH,temp

ldi temp, 0xFF
out DDRB, temp     ; PORTB configured for output
ldi leds, 0xFF
out PORTB, leds   ; LEDs ausschalten
ldi temp, 1<<TOIE1   ; 1000 0000
out TIMSK, temp   ; Timer 1 interrupt ein
          ; Startwert des Timers einstellen:
ldi temp, highValue
out TCNT1H, temp
ldi temp, lowValue
out TCNT1L, temp
ldi temp, 0b00000101
out TCCR1B, temp   ; Timer 1 starten mit Vorteiler 1024
sei         ; interrupts generell aktivieren

main:
loop:
nop
nop
rjmp loop
          ;--------------------------------------------------
timer1:
com leds
out PORTB, leds
          ; Startwert des Timers neu einstellen:
ldi temp, highValue
out TCNT1H, temp
ldi temp, lowValue
out TCNT1L, temp
reti

Autor: Johannes Permoser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke vielmals. habs sogar geschafft die geschafft die geschwindigkeit
zu erhöhen.

für wieviel mhz ist das programm denn ausgelegt udn wie lange soll dann
die led leuchten?

Autor: Conlost (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Programm ist für 8Mhz und 1 Sekunde Blinkinterval.

Taktfrequenz/Vorteiler/T1-Wert

8 000.000 /1024/7812 = 1

Es grüsst,
Arno

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann man die taktgeschwindigkeit ändern??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.