- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 21 von 53 ErsteErste ... 11192021222331 ... LetzteLetzte
Ergebnis 201 bis 210 von 524

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

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

    Praxistest und DIY Projekte
    Na dann mal von mir Glückwunsch

  2. #202
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Herzlichen Glückwunsch ihr beiden!
    Ihr seit nun nicht mehr nur Anfänger, sondern schon fortgeschrittene Anfänger! *lol*
    Nein, ihr könnt euch jetzt glaube ich mit ein bischen mehr Routine und Übung schon fast Fortgeschrittene schimpfen! ;o)

    Macht weiter so!
    Es macht echt Spaß mit dem Assembler zu programmieren!
    Sagen wir doch schon lange, aber irgendwie denken viele, dass nur "Hochsprachen" Spass machen können! ;o)

  3. #203
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Irgendwie nerven die Töne meine Freundin
    Das kannst Du laut sagen, ich habe vor kurzem einen Timer für meine Frau gebaut,
    naja Du weißt schon, für Kuchen zu Backen z.B 0-90 Minuten, man könnte natürlich
    bei Real irgendwas Fertiges kaufen für 4,99 , aber nein, ich muß basteln.
    Da habe ich auch so ein Piezo verwendet, wenn die Zeit um war und habe Ihn auf
    etwa 4kHz eingestellt.
    O weh ich durfte mir war anhören, muße auch tiefer gehen, so bei 800 Hz war sie zufrieden.

    Ich glaube Frauen können solche Töne nicht vertragen, so wie Katzen, naja manchmal benehmen sie sich auch so


    Ich freue mich ein lächeln auf Deinem Gesicht zu sehen!

    Und warum vergleichen wir gerade im Interrupt vom summer?
    Ganz einfach, hier wird der Timer neugeladen, also hier bestimmst Du welche Frequenz Du hast, und wenn Du sie verändern willst, mußt Du auch genau dort eingreifen!

  4. #204
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Wie ich sehe haben wir noch einen Glücklichen hier (o man warum muß ich immer so langsam Tippen)
    @Tekeli,
    ging das nicht gegen VCC ? hmmm, na egal, aber die LED kannst Du trotzdem benutzen, oder?
    Der Piezo müßte ziemlich hochohmig sein, so daß er da nicht stört (Theorie)

    Mach mal ein Foto und sende das den Asuro Freunden auf "Roboter Bausätze" vielleicht finden sie das auch interessant...

  5. #205
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    @Sebastian: Mein Freundin meint, dass Männer die Frequenz nicht stört, weil sie schlecht hören, so wie die meisten Fliegen, manchmal sind sie auch ebenso lästig

    Ich glaub, die will Krieg *Totenlied auffer Gitarre spiel *gg*

    So, hier nun der fertige Quellcode ohne LED, so wies "verlangt" war
    Code:
    .include "m8def.inc"
    
    .equ time0_1 = 256-20			;Damit wird der Timer0 vorgeladen
    .equ time0_2 = 256-30
    .equ time2 = 256-90				;Damit wird der Timer2 vorgeladen
    .equ Summer = PB2				;Summer an B.2
    .def tmp = r16					;Mein Universallregister
    .def statusreg = r17			;Mein Statusregister
    .def zaehlerSek = r18
    .def statusSummer = r19			;Mein Status-Summer-Register
    
    .org 0x000
    	rjmp reset					;Interruptvektor "reset:"
    
    .org OVF2addr
    	rjmp timerSek
    
    .org OVF0addr
    	rjmp timerSummer			;Interruptvektor für Timer0 Überlauf, hier springt
    								;das Programm hin, wenn der Timer überläuft
    
    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
    
    	sbi DDRB, Summer				;B.2 als Ausgang
    	sbi PORTB, Summer				;B.2 auf HIGH stellen
    	ldi statusSummer, 0b00000000	;statusSummer auf 0 setzen
    	ldi zaehlerSek, 0b00000000		;Zähler auf 0 setzen
    
    	;Timer Register 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_1				;Hier wird der Timer vorgeladen
    	out TCNT0, tmp
    
    	;Timer Register 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, time2					;Hier wird der Timer vorgeladen
    	out TCNT2, tmp
    
    	ldi tmp, (1<<TOIE0) | (1<<TOIE2);Hier werden Interrupts nach Timer0 Überlauf eingeschaltet
    	out TIMSK, tmp					;Register TIMSK ist dafür zuständig
    
    	sei								;Interrupts zulassen
    
    loop:
    	cpi zaehlerSek, 0b00010100	;Wenn Zählerregister != 40 ist
    	breq pruefSek				;dann zu "pruefSek:" springen
    	rjmp loop					;immer wieder zu "loop:" springen
    
    pruefSek:
    	clr zaehlerSek				;Zählerregister auf 0 setzen
    	sbrs statusSummer, 0			;überspringe, wenn PIN 0 = 1 ist
    	rjmp umschalten				;wenn PIN 0 = 0 ist, dann springe zu "umschalten:"
    	ldi statusSummer, 0b00000000;wenn PIN 0 = 1 ist, dann PIN 0 auf 0 setzen
    	rjmp loop					;wieder zurück zu loop
    
    umschalten:
    	ldi statusSummer, 0b00000001;wenn PIN 0 = 0 ist, dann auf 1 setzen
    	rjmp loop					;wieder zurück zu "loop:"
    
    timerSummer:
    	in statusreg, SREG			;SREG sichern
    
    	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 "umschalten2:" springen
    
    timerSummer1:
    	sbi PORTB, Summer			;wenn B.2 = 0 ist, dann auf 1 setzen
    
    timerSummer2:
    	sbrs statusSummer, 0		;überspringe, wenn PIN 0 = 1 ist
    	rjmp timerSummer3			;wenn PIN 0 = 0 ist, dann springe zu "timerSummer3:"
    	ldi tmp, time0_1			;wenn B.5 = 1 ist, dann 1 KHz-Timer laden
    	out TCNT0, tmp
    	rjmp timerSummer4			;zu "timerSummer4:" springen
    
    timerSummer3:
    	ldi tmp, time0_2			;wenn B.5 = 0 ist, dann 4KHz-Timer laden
    	out TCNT0, tmp
    
    timerSummer4:
    	out SREG, statusreg			;SREG wiederholen
    	reti						;wieder zurück, wo du hergekommen bist
    
    timerSek:
    	in statusreg, SREG			;SREG sichern
    	inc zaehlerSek				;Zählerregister um 1 erhöhen
    	ldi tmp, time2				;Hier wird der Timer2 vorgeladen
    	out TCNT2, tmp
    	out SREG, statusreg			;SREG wiederholen
    	reti
    Gruß
    The Happy Thomas

  6. #206
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Ne,ne ich führe keinen Krieg gegen Frauen !!!!
    Sie benutzen manchmal Waffen, wo wir arme schlucker nicht gegen ankommen !
    Also schön den Ball flachhalten.

    Das ohne LED hast Du auch gut gelöst, die Version mit war ja nur ein Übergang...

    @Tekeli,
    Du bist aber kein blutiger Anfänger ?
    Hab mir Dein Code angeschaut, bin echt begeistert !

    Ich find das gut daß Ihr zu zweit seid, Ihr könnt Euch gegenseitig helfen,
    wenn was unklar ist.

    Thomas, ich hoffe, Du hast Dir die Version von Tekli runtergeladen,
    dort kannst Du sehen, daß es wie immer mehrere Wege gibt ein Problem zu lösen,
    nur bedenke, der Asuro hat 8 Mhz, also hat er die Zeiten etwas anders.

    Wenn Ihr Lust habt, haben wir beide mit Florian eine sehr schöne Aufgabe vorbereitet.
    Ich war begeistert, was sich der Florian alles so einfallenlassen hat.

    Nur um das anzupacken, müßten wir noch mehrere Sachen ansprechen, die erste wäre
    was macht man, wenn man eine Zahl darstellen will, die größer 255 ist z.B 1000 ?

    Irgendwelche Ideen ?

  7. #207
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    36
    Beiträge
    2.624
    Kleine Nachricht, bevor ich in's Bettchen gehe und Bubu mache:
    Wir sind jetzt in der Top-Ten-Statistik auf Platz 8! *angeb* ;o)

    Und zur Ernüchterung, damit alle schlafen können:
    Ihr solltet mal unbedingt an eurem Codedesign arbeiten!
    Hier, lest das mal!
    Sonst funktioniert der Code zwar, aber zwei Tage später wisst ihr nicht mehr was ihr da verbrochen habt! *g*


    Ps:
    Das Lied vom Tod auf einer Gitarre zu spielen ist unüblich, außerdem ist das eine Geige, auf der Du da rumgeigst! ;o)

  8. #208
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Den Code von Tekeli hab ich mir runtergeladen und auch studiert. Wurde erstmal umgehaun von den rießigen Kommentaren oben *g*
    Rechnen ist immer gut *g*
    Bis jetzt haben wir ja immer nur mit 8 Bit gearbeite, und diese sind bei 255 (11111111) zu Ende.
    Mit 16Bit bekommt man Zahlen bis 65025 (11111111 11111111). Also muss man irgendwie zwei 8 Bit Register miteinander verbinden.

    Jaja, ich gebs ja zu, hab mich da schon ein wenig drüber informiert, interessiert mich halt, ist ja auch nicht verboten

    [edit] Dann eben Geige *g*

    @Florian: Das mit den Kommentaren mach ich ja, also einrücken und alle Kommentare in der gleichen Spalte. Sieht man nur hier im Forum nicht, aber im AVR Studio isses wunderbar.
    Ok, den Code könnt man noch mehr einrücken, wenn man Blöcke hat, die zusammengehören.

  9. #209
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    ist ja auch nicht verboten
    Thomas, es ist sogar angebracht selber zu forschen, ich hab Dir den link zum Tutorial
    gegeben, damit Du auch ein Nachschlagewerk hast, und vor allem, daß Du Dir das alles da reinziehst!

    Ich habe nur mit Dieser Seite und mit Dattenblättern gelernt.

    Also Selbststudium ist wirklich das a und o.

    Aber Du hast recht, man braucht zwei Register, und wenn die nicht reichen dann nimmst Du halt drei, oder 4 oder 8.
    Zugegeben, mit solchen Zahlen ist es nicht einfach zu arbeiten, aber wenn man sie braucht
    ist es kein Problem.


    Wurde erstmal umgehaun von den rießigen Kommentaren oben
    Spätestens in einem Monat, wenn Du Dir das anschaust, wirst Du froh sein,
    solche Komentare gemacht zu haben.

    Das Problem an Assembler ist es, daß man verdammt viel Code hat, und wenn man
    noch Programme von anderen Personen lesen und verstehen will, wo wenig oder keine Komentare sind, bekommt man graue Haare.

    Dann eben Geige *g*
    Warum Florian soviel Wert drauf legt wirst Du Morgen erfahren.
    Ich muß Morgen leider arbeiten womit ich mir das Spielchen leider nicht
    angucken kann, aber ich hoffe der Florian hat mehr Zeit und stellt Dir das vor.
    Bis dahin kannst Du dich im Tutorial über Zahlen jenseits der 255 marke , den Befehl lpm und die Zeigerregister informieren, glaube mir, es ist wirklich einfach beschrieben.
    Ich werde mich jetzt verabschieden, und Euch allen eine gute Nacht wünschen.

    Ich freue mich wirklich , daß wir das heute mit der Sirene hinbekommen haben.

    Gruß Sebastian

  10. #210
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Ort
    Berlin
    Alter
    40
    Beiträge
    289
    Ok, schade, dass du morgen arbeiten musst. Hoffentlich nicht so lange, wie in der Woche?
    Najo, also dann bis morgen.

    Gruß und gute Nacht
    Thomas

Seite 21 von 53 ErsteErste ... 11192021222331 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test