- LiFePO4 Speicher Test         
Seite 35 von 53 ErsteErste ... 25333435363745 ... LetzteLetzte
Ergebnis 341 bis 350 von 524

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

  1. #341
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Anzeige

    Powerstation Test
    @Tekeli,
    Ich hab Dich !!!!
    schau
    BREQ exit ; Ein ja bedeutet, dass wir am Ende sind -> Ende
    Du meintest sicher ende , oder?

    Der Asuro läuft Amok guck, wo Du ihn hingeschickt hast, nachdem er 0 gefunden hat

  2. #342
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    an Euch beide,

    Wenn alle Töne durch sind, sollte Der Timer 0 abgeschaltet werden, sonst spielt er den letzten ton ja weiter, wie das geht, kriegt Ihr sicher selber raus.

  3. #343
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    So, da bin ich wieder, musste erstmal mein Gehirn durchlüften, habe den ganzen Tag in der Bude rumgehockt! ;o) *couchpotato*
    Ich lese mir jetzt die beiden Codes durch bzw. versuche es sie durchzulesen!

  4. #344
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Wie ist jetzt eigentlich der Stand?
    Tekeli's Programm funktioniert jetzt, oder?
    Was ist mit Thomas Programm?

  5. #345
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Ja den ganzen Tag in der Bude, das ist hart,
    ich hatte als alternative am Feuerwehrfest in unserem Dorf teilzunehmen, dann
    wäre ich jetzt aber paar Euros ärmer, und der Kopf wäre auch nicht mehr so ganz klar

  6. #346
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Wie ist jetzt eigentlich der Stand?
    Der Stand ist jetzt so, daß Tekeli seinen Asuro wohl ziemlich abstürzen liess,
    aber so wie es aussieht ist es eine Kleingkeit.

    Und Thomas sollte sein Programm etwas aufräumen denke ich,

  7. #347
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Der Stand ist jetzt so, daß Tekeli seinen Asuro wohl ziemlich abstürzen liess, aber so wie es aussieht ist es eine Kleingkeit.
    Oh, das ist nicht gut!
    Wie tief ist er denn gefallen? *kleiner dummer scherz*

    Und Thomas sollte sein Programm etwas aufräumen denke ich,
    Das denke ich auch, denn ich steige da nicht mehr durch! *lol*

    Siehst Du die Programme eigentlich nur so durch, oder lässt Du sie im Simulator durchlaufen?

  8. #348
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    So, da bin ich wieder, ich werd jetzt mal die Punkte von Sebastian durchgehen.

  9. #349
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Florian, ich bin eine arme Sau.
    Wie Du weißt habe ich nur Linux auf meiner Kiste UND AVRStudio will sich nicht dazu
    überreden lassen unter Linux zu funktionieren.
    Selbst mit wine, dem Windows Übersetzer sag ich mal nicht.
    Und für Linux gibt es keine brauchbaren Simulatoren.
    Ich hab hier avr_simulator, das Programm hat aber jedemenge Bugs, der Author hat wohl kein Bock mehr drauf, er antwortet auf keine Posts auf sourceforge, naja und ich
    bin nicht gut genug um es selber zu verbessern.
    Es gibt da noch den gdb, aber den kann ich auch nicht dazu überreden, mit .hex Dateien
    zu arbeiten, habe mal ein Thread auf www.mikrocontroller.net geöffnet, aber selbst da
    weißt keiner einen Rat, und das soll schon was heißen....

    Also Zeile für Zeile durchlesen, und schauen was passiert.
    Aber ich klage nicht, es geht auch ohne.

  10. #350
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Ich weiß nimmer weiter. Hab nun erstmal Punke verbessert (wenn man das so nennen darf), die du mir gesagt hast:
    Code:
    ;Programm
    ;CDurTonleiter rauf und runter spielen
    .include "m8def.inc"
    
    .def tmp = r16               	;Mein Universallregister
    .def zaehlerSek = r17			;Mein Zählregister
    .def tonwert = r19				;aktueller Wert für den Ton
    .def lpm_reg = r0				;Mein lpm-Register
    
    .equ Summer = PB2				;Summer an B.2
    .equ time0 = 256-255			;Timer0 für die Tonleiter
    .equ time2 = 256-90				;Damit wird der Timer2 vorgeladen, für die Sekunde
    .equ daten_laenge = 3			;Anzahl der Werte
    
    .org 0x000
       	rjmp reset					;Interruptvektor "reset:"
    
    .org OVF2addr
    	rjmp pruefSek				;Interruptvektor "pruefSek:"
    
    .org OVF0addr
    	rjmp timerSummer			;Interruptvektor "timerSummer:"
    
    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 für Ton werden belegt, hier Timer 0
    	ldi tmp, (1<<CS02)			;Prescaler ist 512
    	out TCCR0, tmp				;Register TCCR0 ist für den Prescaller zuständig
    	ldi tmp, time0				;Hier wird der Timer vorgeladen
    	out TCNT0, tmp
    
    	;Timer Register für Sekunde werden belegt, hier Timer 2
    	ldi tmp, (1<<CS22) | (1<<CS21) | (1<<CS20) ;Prescaler ist 1024
    	out TCCR2, tmp					;Register TCRR2 ist für den Prescaller zuständig
    
    
    	ldi tmp, (1<<TOIE0) | (1<<TOIE2);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)
    
    	ldi zaehlerSek, 0b00000000	;ZählerSek auf 0 setzen	
    	
    	sbi DDRB, Summer				;B.2 als Ausgang
    	sbi PORTB, Summer				;B.2 auf HIGH stellen	
    
       	sei                    		;Interrupts zulassen
    
    ;Die Hauptschleife
    main:
    	cpi zaehlerSek, 0b00010100	;wenn ZählerSek != 40 ist
    	brne main					;dann immer wieder zu "main:" springen
    
    ;Wenn eine Sekunde um ist, dann springe hier rein
    ;und setze zaehlerSek wieder zurück auf 0 und
    ;lade den nächsten Ton
    pruefTonleiter:
    	clr zaehlerSek				;Zähler auf 0 setzen
    	rjmp ladeTon				;nächsten Ton laden
    	rjmp main					;sonst wieder zurück zu "main:"
    
    ;Wird aufgerufen, wenn Timer2 überläuft (Timer für Sekunde)
    ;Hier wird das Zählregister für den Timer um 1 erhöht und der
    ;Timer neu geladen
    pruefSek:
    	push tmp					;tmp sichern
    	in tmp, SREG				;SREG sichern
    	push tmp
    		inc zaehlerSek			;ZählerSek um 1 erhöhen
    		ldi tmp, time2			;Hier wird der Timer vorgeladen
    		out TCNT2, tmp
    	pop tmp						;SREG wiederholen
    	out SREG, tmp
    	pop tmp						;tmp wiederholen
    	reti						;wieder dahin, wo du hergekommen bist
    
    ;Wenn 1 Sekunde vorbei ist und es noch einen Ton gibt,
    ;der noch nicht geladen ist dann springe hier hin und
    ;lade den nächsten Wert von der Datenbank "tonleiter"
    ladeton:
    	lpm						;Daten von tonleiter1: holen
    	mov tonwert, lpm_reg	;erstes Byte in tmp verschieben
    	adiw ZL,1				;Z um 1 erhöhen, nächstes Byte
    	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 endeTon			;springe zu "endeTon:", wenn letztes Byte ausgelesen
    	rjmp main				;wieder zurück zur "main:"
    
    ;Wenn alle Töne geladen sind, dann wird das Register "zaehlerTon"
    ;auf 255 gesetzt
    endeTon:
    	cpi zaehlerSek, 0b00010100	;wenn ZählerSek = 40 ist
    	breq TonAus					;springe zu Tonaus
    	rjmp main					;wieder zurück zu "main:"
    
    TonAus:
    	sbiw ZL,1					;Z um 1 erniedrigen
    	ldi tmp, 0					;Timer mit  0 laden, damit er nicht mehr abspielt
    	out TCNT0, tmp
    	rjmp main					;wieder zurück zu "main:"
    
    ;Wird aufgerufen, wenn Timer0 überläuft (Timer für Ton)
    ;Hier wird geprüft, ob an B.2 HIGH oder LOW anliegt
    ;und dementsprechend umgesetzt
    timerSummer:
    	push tmp					;tmp sichern
    	in tmp, SREG				;SREG sichern
    	push tmp
    		sbis PINB, Summer			;überspringe, wenn B.2 = 1 ist
    		rjmp timerSummer1			;wenn B.2 = 0 ist, dann spring zu "umschalten1:"
    		cbi PORTB, Summer			;wenn B.2 = 1 ist, dann B.2 auf 0 setzen
    		rjmp timerSummer2			;zu "timerSummer2:" springen
    
    timerSummer1:
    	sbi PORTB, Summer			;wenn B.2 = 0 ist, dann auf 1 setzen
    
    ;Hier wird Timer0 mit dem aktuellen Tonwert vorgeladen
    timerSummer2:
    	out TCNT0, tonwert			;Timer dementsprechen vorladen
    	rjmp timerSummer4			;zu "timerSummer4:" springen
    
    timerSummer4:
    	pop tmp						;SREG wiederholen
    	out SREG, tmp
    	pop tmp						;tmp wiederholen
    	reti
    
    
    ;Das sind die Werte, womit der Timer0 (Tonleiter-Timer) vorgeladen wird
    tonleiter1:
    	.db 256-117, 256-16, 256-2, 0	;Werte zum Vorladen des Timers für die Töne
    									;c', a' und c''
    Es kommt nichts gescheites bei raus. Er spielt irgendwie die Töne ab, aber immer noch nicht im 1 Sekundenabstand. Außerdem ist da noch ein Ton drinne, der da nicht reinsoll.

Seite 35 von 53 ErsteErste ... 25333435363745 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests