Programmierung eines Stylophones in Assember. Wer kann helfen?

OP #2922887
Lesenswert?

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)
Angehängte Dateien:
OP #2922920
Lesenswert?

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?..
#2922923
Lesenswert?

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?
Gast #2923033
Lesenswert?

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.
#2923036
Lesenswert?

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
#2923063
Lesenswert?

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.
#2923101
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren