- fchao-Sinus-Wechselrichter AliExpress         
Seite 29 von 53 ErsteErste ... 19272829303139 ... LetzteLetzte
Ergebnis 281 bis 290 von 524

Thema: Tutorial für alle Assembler-Anfänger _

  1. #281
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ok, also wir nehmen als Prescaler 512 *einfach mal so festleg* *g*
    Den Timer laden wir wie folgt vor (bei 3,68 MHz)
    c': 3686400 / 512 / 261,63 = 27,5 = 27 --> 256 - 27
    a': 3686400 / 512 / 440 = = 16,3 --> 256 - 16
    c'': 3686400 / 512 / 523,25 = 13,7 --> 256 - 14

    Müsste soweit richtig sein.

    In Assembler sieht das dann erstmal so aus:
    Code:
    .equ time0_1 = 256-27			;Timer für c'
    .equ time0_2 = 256-16			;Timer für a'
    .equ time0_3 = 256-14			;Timer für c''
    [edit]
    Michi: Ich hab das hier: AVR Studio 4.11 (build 401) (41 MB, updated 01/05)

  2. #282
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Alles wo AVR Studio 4.11 dransteht, also das zweite und dritte von oben!
    AVR Studio 4.11 (build 401)
    und wenn Du möchtest
    AVR Studio 4.11 Service Pack 3

  3. #283
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    hi,
    danke ich seh gerade hier gibt's auch ein gutes Tutorial!
    Gruß Michi

  4. #284
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Wieso brauchen wir eigentlich nur die Werte für die 3 Töne? Berechnen
    wir die anderen irgendwie? Aber hab auch grad festgestellt, dass die Töne nciht alle denselben Abstand haben.

  5. #285
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.02.2005
    Ort
    Freiburg
    Alter
    36
    Beiträge
    602
    Ähh, ich will ja echt nicht stören, aber so viel wie ihr postet wird euer " Tutorial für alle Assembler-Anfänger" doch etwas zu unübersichtlich und geht nach hinten los.

    Ich glaub nicht das sich da ein Anfänger durchquälen möchte...

    Hat jemand Lust das alles zusammen zu tragen und eine strukturierte Einführung in Assembler zu machen? *niemand anguck*

    Gruß,
    Mehto
    -

  6. #286
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hallo Thomas!
    Wir wollen erstmal klein anfangen, da reichen 3 Töne erstmal! ;o)
    c': 3686400 / 512 / 261,63 = 27,5 = 27 --> 256 - 27
    a': 3686400 / 512 / 440 = = 16,3 --> 256 - 16
    c'': 3686400 / 512 / 523,25 = 13,7 --> 256 - 14
    Ich meine mich dunkel erinnern zu können, dass man ab 5 nach dem Komma aufrundet! *lol*
    Also:
    c' : 28
    a' : 16
    c'' : 14
    Sehr gut, ich habe jetzt nicht nachgerechnet! *lol*

    .equ time0_1 = 256-27 ;Timer für c'
    .equ time0_2 = 256-16 ;Timer für a'
    .equ time0_3 = 256-14 ;Timer für c''
    Nee, wir wollen jetzt die Töne nicht als Konstante im Code ablegen, das wird zu kompliziert! ;o)

    Du erstellst jetzt ein neues Programm, mit Standarddefinitionen, wie Stack usw. plus einem Timer, z.B. dem Timer0 oder 2!
    Dann setzt Du ganz unten folgendes an den Code:
    Code:
    tonleiter1:
    .db 28 , 16 , 14 , 0
    Die Null am Ende ist nur Füllmaterial, da wir ja nur drei Töne derzeit haben! ;o)

    Und dann zeige mal Deinen bisherigen Code!

  7. #287
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Man könnte ja hinterher die "weniger wichtigen" Beiträge löschen, das dient dann auch der Übersicht. Oder das wichtigste zusammentragen, wär auch ne Möglichkeit
    Aber erstmal müssen wir unser Tutorial zu Ende machen.

    Gruß
    Thomas

  8. #288
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    Hallo,
    ich hab jetzt das AVRStudio und such noch wie ich das Programm einstellen muss um ne hex zu erstellen! Gibt es kein gescheites Tutorial?
    Gruß Michi

  9. #289
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Hallo Mehto!
    Ich werde das später mal machen! *freiwillig meld*

  10. #290
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Hi Michi, einfach das Programm, was du geschrieben hast, kompilieren, dann ist automatisch eine *.hex Datei in deinem Ordner.
    Kompilieren kannst du mit F7.

    @Florian:
    So, erstmal gut soweit:
    Code:
    .include "m8def.inc"
    
    .def tmp = r16               	;Mein Universallregister
    .def lpm_reg = r0				;Mein lpm-Register
    
    .equ time0 = 256-90				;Damit wird der Timer0 vorgeladen
    .equ daten_laenge = 6			;Länge des Strings
    
    .org 0x000
       	rjmp reset					;Interruptvektor "reset:"
    
    reset:
       	;Stack einrichten
       	ldi tmp, HIGH(RAMEND)      	;HIGH-Byte der obersten RAM-Adresse
       	out SPH, tmp
       	ldi tmp, LOW(RAMEND)      	;Low-Byte der obersten RAM-Adresse
       	out SPL, tmp
    
    	;Timer Register werden belegt, hier Timer 0
    	ldi tmp, (1<<CS02)				;Prescaler ist 1024
    	out TCCR0, tmp					;Register TCCR0 ist für den Prescaller zuständig
    	ldi tmp, time0					;Hier wird der Timer vorgeladen
    	out TCNT0, tmp
    	ldi tmp, (1<<TOIE0)				;Hier werden Interrupts nach Timer0 Überlauf eingeschaltet
    	out TIMSK, tmp					;Register TIMSK ist dafür zuständig
    
    	;Z-Register mit daten1 füllen
       	ldi ZH, HIGH(tonleiter1 * 2)
       	ldi ZL, LOW(tonleiter1 * 2)
    
       	sei                    		;Interrupts zulassen
    
    main:
    	lpm							;Daten laden
       	mov tmp, lpm_reg           ;in temp verschieben
       	adiw ZL, 1                 	;Z um eins erhöhen
       	ldi tmp, LOW  ((tonleiter1 * 2) + daten_laenge)	;vergleiche LOW-Byte
       	cp ZL, tmp
       	ldi tmp, HIGH ((tonleiter1 * 2) + daten_laenge) ;vergleiche HIGH-Byte
       	cpc ZH, tmp
       	breq ende                   ;springe zu ende, wenn letztes Byte ausgelesen
       	rjmp main					;nochmal
    
    ende:							;Endschleife
    	rjmp ende
    
    tonleiter1:
    	.db 28, 16, 14, 0			;Werte zum Vorladen des Timers für die Töne
    								;c', a' und c''
    Allerdings muss hier noch die daten_laenge angepasst werden, oder? Also jetzt sind das ja 4 Bytes und nicht mehr 6, oder?

    Gruß
    Thomas

Seite 29 von 53 ErsteErste ... 19272829303139 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen