ich wollte zuerst sowas hier vorschlagen
Bild hier
aber da du die taktfrequenz angezeigt haben willst, kannst du den atmega als signalgenerator verwenden. der kennt dann auch die frequenz und kann diese auf einem LCD anzeigen.
hier ein bespiel fürs AVR Studio:
die warteschleifen musst du natürlich anpassen, hier schaltet er für 1 mio. takte (bei 1MHz 1Sekunde) den port auf HIGH, dann 1 mio. takte auf low.Code:.NOLIST ; List-Output unterdrücken .INCLUDE <m8def.inc> ; das gibt es für jeden Controllertyp .LIST ; List-Output wieder aufdrehen .CSEG ; was nun folgt, gehört in den FLASH-Speicher ;------------------------------------------------------ ; Start Adresse 0000 ;------------------------------------------------------ RESET: rjmp INIT ; springen nach "INIT" ;------------------------------------------------------ ; ISR VECTORS ;------------------------------------------------------ ; ..... hier kommen dann die Sprungadressen für die Interrupts rein ; dazu kommen wir noch .ORG INT_VECTORS_SIZE ; dadurch haben wir für die Vektoren Platz gelassen INIT: ;------------------------------------------------------ ; INITIALIZE ;------------------------------------------------------ ldi r24,high(RAMEND) ;Stack Pointer setzen out SPH,r24 ; "RAMEND" ist in m8def.inc (s.o.) festgelegt ldi r24,low(RAMEND) ; out SPL,r24 ; ;------------------------------------------------------ ; eigene Initialisierungen ;------------------------------------------------------ LDI R24, 255 ; der wert "255" = FF ins allgemeine Register R24 OUT DDRB, R24 ; das kommt ins Controll-register f. PortC ; dadurch ist das Port auf OUTPUT gestellt ;------------------------------------------------------ ; HAUPTSCHLEIFE ;------------------------------------------------------ Hauptschleife: LDI R24, 255 OUT PORTB, R24 ; ============================= ; delay loop generator ; 1000000 cycles: ; ----------------------------- ; delaying 999999 cycles: ldi R17, $09 WGLOOP0: ldi R18, $BC WGLOOP1: ldi R19, $C4 WGLOOP2: dec R19 brne WGLOOP2 dec R18 brne WGLOOP1 dec R17 brne WGLOOP0 ; ----------------------------- ; delaying 1 cycle: nop ; ============================= LDI R24, 0 OUT PORTB, R24 ; ============================= ; delay loop generator ; 1000000 cycles: ; ----------------------------- ; delaying 999999 cycles: ldi R17, $09 WGLOOP3: ldi R18, $BC WGLOOP4: ldi R19, $C4 WGLOOP5: dec R19 brne WGLOOP5 dec R18 brne WGLOOP4 dec R17 brne WGLOOP3 ; ----------------------------- ; delaying 1 cycle: nop ; ============================= rjmp Hauptschleife ; immer wiederholen ;------------------------------------------------------ ; ENDE ;------------------------------------------------------ Ende: rjmp Ende
bitte nicht über den code schimpfen, das war mein erstes asm proggie, zusammengestöpselt aus beispiel-code..
gruesse, die katz






Zitieren

Lesezeichen