Hallo, Vorerst, ich bin ein absoluter noob in Assembler Programmierung. Habe eine Aufgabe bekommen einen Stylophon zu Programmieren. Ich denke mal das es für geübte Assembler Programmierer keinen großen Aufwand darstellt. Wer kann mir da bitte helfen?.Ist echt dringend... Bin für jede Hilfe dankbar. =) (Die Aufgabenstellung ist im Anhang)
WTF ist ein Stylophon? .doc ist schon mal kacke. Aber egal, wir sind hier nicht das wir-machen-eure-Hausaufgaben-Forum. Beitrag "Einheitlicher Umgang mit faulen Schülern etc.?"
Und noch was Konstruktives damit der Mod nicht meckert: http://www.mikrocontroller.net/articles/AVR-Tutorial durcharbeiten!
troll schrieb: > Und noch was Konstruktives damit der Mod nicht meckert: > http://www.mikrocontroller.net/articles/AVR-Tutorial durcharbeiten! Kannst du vergessen, die Aufgabe ist ja für nen PIC. Guckst du stattdessen bei sprut.
troll schrieb: > Kannst du vergessen, die Aufgabe ist ja für nen PIC. Guckst du Nicht mal das hat sie/er ja im Ursprungspost erwaehnt. fonsana
Ich würde das mit einem Programmgenerator lösen.
Wadim W. schrieb: > Hallo, > Vorerst, ich bin ein absoluter noob in Assembler Programmierung. Noob steht für: einen Neuling, meist bei Online-Spielen, der als lernunwillig erscheint. Welche Spiele kannst du denn schon?
Für Leute ohne Assembler- und µC-Erfahrung ist aber eine nicht ganz triviale Aufgabe. Da würde mich doch mal der Hintergrund interessieren (Schule, Studium)?
Ich Spiele überhaupt nicht =)..Zeitverschwendung sowas.. Bin gelernter Elektroniker und zurzeit Studiere ich Elektrotechnik Bin zurzeit im Auslandsemester in UK.. Mit E-Technik komm ich gut klar...Nur das Programmieren von Mikrocontrollern ist für mich ein Rätzel...zumindest was Assembler angeht.. Sorry..vergessen zu erwähnen das es für PIC ist.. Wir programmieren hier mit MPLab.. Welche Art von Programmgenerator meinst du?..
http://de.wikipedia.org/wiki/Stylophone Ach, DAS nennt sich Stylophone! Das ist ja nichts anderes, als eine mit Widerständen aufgebauter n-fach Spannungsteiler wobei der Abgriff auf einen ADC geht und dementsprechend einen Oszillator ansteuert. Erinnert mich frappant an Elekors-Chorosynth aus den 70-er/80-er Jahren. Nur dass man damals mit einem 555 die Tonerzeugung gemacht hat. @TO Na ja. Welche Teile kannst du denn selber machen?
Wadim W. schrieb: > Mit E-Technik komm ich gut klar...Nur das Programmieren von > Mikrocontrollern ist für mich ein Rätzel...zumindest was Assembler > angeht.. Dann ist das eine Aufgabe aus dem Studium? Wenn ja, müßtest Ihr doch eigentlich eine Vorlesung, Übung, Labor o.ä. zu dem Thema gehabt haben? Ich wage mal zu behaupten, daß Du schon gewisse Grundkenntnisse in µC und Assember benötigst, um die Aufgabe zu meistern.
2. Experiment with the delay routine in `1.' to establish frequencies for all the other notes. Arrgh. Wer kommt denn auf so ne unsinnige Idee? Frequenzen erzeugt man doch mit einem Timer. Und man experimentiert auch nicht umständlich rum. Man schreibt die Formeln für die Frequenzen hin und läßt sie vom Compiler ausrechnen. Peter
Ach Peter, jetzt sei doch nicht so professionell. Vielleicht geht es bei der Aufgabe auch nur darum, sich mit MPLAB und so weiter vertraut zu machen.
Peter Dannegger schrieb: > Arrgh. > Wer kommt denn auf so ne unsinnige Idee? > Frequenzen erzeugt man doch mit einem Timer. Jeder muss mal irgendwo anfangen. Und mit einer Handvoll bekannter Mnemnonics ist es gar nicht so einfach, Übungensaufgaben zu erfinden, die nicht fad sind und bei denen der Lernende was programmiert, das dann auch nachher irgendetwas tut. Jeder, der schon mal eine Klasse bei Laune halten und sie animieren musste was zu programmieren, kennt das Problem: Du hast nach der ersten oder zweiten UNterrichtsstunde nicht viel an Wissen zur Verfügung, musst aber mit deinen Jungs üben und irgendwas machen, damit sie was tun. Der eine lässt halt LED blinken, der andere schiebt eine Membrane hin und her. Das er es später mal anders machen wird, steht auf einem anderen Blatt.
Hier mal das Prinzip für nen AVR ATtiny24 (PIC kann ich nicht):
1 | #include <avr/interrupt.h> |
2 | |
3 | #define F_CPU 8e6 // 8MHz
|
4 | |
5 | #define C4 261.626
|
6 | #define D4 293.665
|
7 | #define E4 329.628
|
8 | #define F4 349.228
|
9 | #define G4 391.995
|
10 | #define A4 440.000
|
11 | #define B4 493.883
|
12 | #define C5 523.251
|
13 | |
14 | #define TIME(x) F_CPU / x / 2
|
15 | |
16 | void play_sound() |
17 | {
|
18 | if( PINA & 1<<0 ) |
19 | OCR1A = TIME( C4 ); |
20 | else if( PINA & 1<<1 ) |
21 | OCR1A = TIME( D4 ); |
22 | else if( PINA & 1<<2 ) |
23 | OCR1A = TIME( E4 ); |
24 | else if( PINA & 1<<3 ) |
25 | OCR1A = TIME( F4 ); |
26 | else if( PINA & 1<<4 ) |
27 | OCR1A = TIME( G4 ); |
28 | else if( PINA & 1<<5 ) |
29 | OCR1A = TIME( A4 ); |
30 | else if( PINA & 1<<6 ) |
31 | OCR1A = TIME( B4 ); |
32 | else if( PINA & 1<<7 ) |
33 | OCR1A = TIME( C5 ); |
34 | else{ |
35 | TIMSK1 = 0; // tone off |
36 | return; |
37 | }
|
38 | TIMSK1 = 1<<OCIE1A; // tone on |
39 | }
|
40 | |
41 | ISR( TIM1_COMPA_vect ) |
42 | {
|
43 | PORTB ^= 1<<0; // PB0 = output |
44 | }
|
Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.