Taster an Atmega8 -> PC HILFE ( VB 2008 )

OP #2358889
Lesenswert?

Hallo, Ichbin grad an einem Projekt und zwar will ich mir e-drums bauen 
...

ich habe bereits platinenlayout fertig wo ich Piezo-Elemente mit einer 
transistorschaltung als taster benutze..
(Ich benutze einen USB To TTL UART Wandler.)

also hardwaremäßig ist alles gut..

Ich schaff es z.b. mit visual basic am atmega etwas zuschalten ( Z.B. 
LED ) aber andersherum nicht..

Ich möchte es schaffen dass ich dann diese taster "Drücke" am Atmega als 
sound in VB2008 ausgeben will

Und meint ihr es gibt eine große verzögerung zwischen tasterdruck und 
sound von VB ??

Schonmal danke (:

(Und Sorry für Rechtschreibfehler)
Mfg Sebastian
#2359072
Lesenswert?

Sebastian M. schrieb:
> [...]
> also hardwaremäßig ist alles gut..
>
> Ich schaff es z.b. mit visual basic am atmega etwas zuschalten ( Z.B.
> LED ) aber andersherum nicht..

Woran genau scheitert es bei dem "andersherum" denn? Und wie genau 
funktioniert das Zuschalten bereits?

> [...]
> Und meint ihr es gibt eine große verzögerung zwischen tasterdruck und
> sound von VB ??

Davon musst Du ausgehen. Bei vielen USB-Wandlern lassen sich FIFO und 
andere Puffer nicht mal deaktivieren. An Deiner Stelle wuerde ich mich 
mal in Richtung MIDI-Interface schlau lesen...


Volker
#2359383
Lesenswert?

Volker Schulz schrieb:
> Davon musst Du ausgehen. Bei vielen USB-Wandlern lassen sich FIFO und
> andere Puffer nicht mal deaktivieren. An Deiner Stelle wuerde ich mich
> mal in Richtung MIDI-Interface schlau lesen...

Das wird allgemein sehr sportlich werden. Selbst Midi hat Latenzen im 
ms-Bereich (Hörbar).

Sebastian M. schrieb:
> Also andersherum .. ich kann mit VB 2008 schon mit dematmega connecten
> und über buttons leds aus und an schalten .. aber ich möchte einen
> taster an atmega8 anschließen und in vB einlesen und sound ausgeben

Du musst deine Daten vom Atmega zum PC senden.
OP #2359432
Lesenswert?

Was für ein gerät kansnt du mir z.b. empfehlen ( vielleicht nicht so 
teuer.. und wie schließt mann soetzwas am µC an ^^) ( Sowas ist das doch 
odeR ? http://www.megadrum.info/ )

Is das dann so wie ein DrumModul ?

Wenn ich das richtig vertsanden hab dann misst das dann auch die stärker 
des singales ?

( Würde ja auch mit mehreren Atmega8 gehen oder ? weil Die Piezo 
elemente erzeugen strom ... und mehr um so stärker man es "antippt".. 
Hald an ADC anschließen .. aber da wird die Software zur qual ^^)
#2359464
Lesenswert?

Volker Schulz schrieb:
> Wie schon angedeutet, befuerchte ich dass die Latenzen weder bestimmbar
> noch konstant sind...

Bei Midi müssten sie konstant sein.


Ein Midigerät senden die Mididaten über den gameport. Das kann dein 
Atmega machen. Du brauchst keine zusätzlichen ICs. Am Computer wird über 
die Systemsteuerung der Gameport als MidiIn eingestellt.

Sebastian M. schrieb:
> mich interresiert es hauptsächlich wie ich mit
> atmega8 an pc senden kann und mit vb empfangen

Sag das doch gleich und nimm dir kein riesenprojekt vor. Sende ein paar 
Bytes per Uart und empfange sie erstmal mit einem UartTerminal, dann per 
VB.
#2359471
Lesenswert?

Sebastian M. schrieb:
> Die schnelligkeit hat was mit Baud Rate zu tuhn oder ?

Nicht ausschliesslich.


> [...] mich interresiert es hauptsächlich wie ich mit
> atmega8 an pc senden kann und mit vb empfangen [...]

Beides geht noch nicht? Benutz auf PC-Seite erst mal ein 
Terminalprogramm bis das Senden vom µC funktioniert. Dann kuemmerst Du 
Dich um die VB-Seite (Schau Dir die Events des SerialPort-Objekts an).


Samuel K. schrieb:
> Volker Schulz schrieb:
>> Wie schon angedeutet, befuerchte ich dass die Latenzen weder bestimmbar
>> noch konstant sind...
>
> Bei Midi müssten sie konstant sein.

Ja, aber dahingehend ist der TO ja (noch) beratungsresistent. ;)


Volker
OP #2359476
Lesenswert?

Soll ich das dann mit dem Print befehl und z.b. dem terminal von Bascom 
probieren ?


( kann ich für diesen versuch auch einen attiny2313 benutzen.. atmega8 
kommt erst die tage )


Und muss ich dann Den µC und den wandler so anschließen ?

Computer        µC
===================
TX  --------->  RX
RX  <---------  TX
GND ----------  GND


#####################################

$regfile = "M8def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 4800 ( ist glaube ich maximum von Dem wandler )

Print "Hallo"

End

####################################
#2359602
Lesenswert?

4800 ist mit Sicherheit nicht das Maximum vom "Wandler". Aber von der 
Fehlerabweichung her der höchste bei 1MHZ. Takte den Mega8 auf 8 MHZ, 
dann kannst Du mit 38400 senden, was ein guter Wert ist. Den virtuellen 
ComPort, bzw das Terminalprogramm (oder Dein VB Programm) musst Du dann 
auf auf 38400 stellen.

Unter VB6 sind da kaum spürbare Verzögerungen vom Senden bis zum 
Empfang. Wenn Du "schnell" eine MP3 Datei abspielen möchtest, wenn der 
entsprechende Befehl kommt, kannst Du die Datei schon in den Puffer 
laden, sodass diese dann nur noch aus diesem wiedergegeben werden 
braucht. Dafür eignet sich MCI oder auch die BASS.DLL.

Unter VB2008 kann es zu etwas größeren Verzögerungen kommen, da das .NET 
Framework etwas umfangreicher ist und erst geladen werden muss. Meist 
ist nur der erste Vorgang verzögert, spätere laufen gefühlt schneller 
los.

Dafür würde ich einfach mal in einem Visual Basic Forum stöbern. Die 
Frage brauchst Du eigentlich nicht stellen, sondern nur die Suche 
anwerfen und die Lösungsvorschläge ansehen.

MIDI kannst Du fast vergessen, kaum ein aktueller PC hat noch eine 
Soundkarte mit analogen 15 poligem Joystick Anschluß, welcher dann auch 
gleichzeitig als MIDI Schnittstelle dient.
#2359755
Lesenswert?

Peter R. schrieb:
> Unter VB6 sind da kaum spürbare Verzögerungen vom Senden bis zum
> Empfang. [...]
> Unter VB2008 kann es zu etwas größeren Verzögerungen kommen, da das .NET
> Framework etwas umfangreicher ist und erst geladen werden muss. Meist
> ist nur der erste Vorgang verzögert, spätere laufen gefühlt schneller
> los.[...]

Das ist beides nicht ganz richtig. Es gibt einfach zu viele Layer (bzw. 
"Zwischenstationen") zwischen µC und PC-Applikation, deren Latenzen 
nicht vorhersagbar sind, insbesondere beim Einsatz von 
USB-Seriell-Wandlern und deren Treibern. Selbst wenn man es schafft die 
Schnittstelle auf Kernel-Level anzusprechen, koennte immernoch der FIFO 
im Wandler Probleme machen. Mit einer echten seriellen Schnittstelle 
haette man dann evtl. noch eine Chance, aber keinesfalls eine Garantie. 
Und das kann man auch niemandem zum Vorwurf machen, weil die 
Schnittstelle (im Gegensatz zu MIDI) fuer solch eine 
"Real-Time-Uebertragung" nie vorgesehen war. Dein Beispiel mit der 
MP3-Datei funktioniert auch nur so lange, wie Du schon "nachlaedst" und 
pufferst (was aber bei einem Drum-Pad nicht ginge).


> [...]
> MIDI kannst Du fast vergessen, kaum ein aktueller PC hat noch eine
> Soundkarte mit analogen 15 poligem Joystick Anschluß, welcher dann auch
> gleichzeitig als MIDI Schnittstelle dient.

Naja, MIDI ist genau das, was er eigentlich sucht. PCI-Soundkarten mit 
MIDI-Port gibt es schon im einstelligen Euro-Bereich. Ebenso 
USB-MIDI-Wandler. Letztere haben dann im allgemeinen keinen 
"Joystick-Port" sondern je einen DIN-Stecker fuer MIDI-IN und -OUT. So 
schnell wird die Schnittstelle auch nicht aussterben, da sie immer noch 
die Schnittstelle zum Anschluss von Musik-Equiptment ist.

Hinzu kommt, dass ein anstaendiges Drum-Pad mehr als 1 und 0 pro Schlag 
uebertragen sollte (um z.B. die Staerke des Schlags zu uebermitteln). 
Wenn man dann auf dem µC noch ADC-samplen muss um die Daten dann digital 
ueber die serielle Schnittstelle zu schieben, ist das Chaos wohl 
komplett. ;)

Ich wuerde dem TO aber durchaus an's Herz legen, das alles auch mal mit 
der seriellen Schnittstelle zu probieren und ausfuehrlich zu messen. 
Geht ja bekanntlich ueber studieren... Vielleicht erst mal Tx und Rx auf 
der TTL-Seite verbinden und in VB(.NET) die Latenzen eines Echos messen. 
Nur um ein "Gefuehl" fuer die (Un-)Moeglichkeiten der Schnittstelle zu 
bekommen...

Volker
OP #2360580
Lesenswert?

Ja dann bestell ich mir nächstes wochende wenn Vater daheim is bei 
cornad einen atmega8 lass einen print befehl über den wandler via taster 
schicken und schau mal ob es verzögerungen gibt.. bei z.b. zu schnellen 
"schlägen" hintereinander... wenn ich dann ned grad ne verzögerung von 
0,5 sekunde hab dann is es mal ok ^^

Ehm Notfalls bau ich es mit 6,3klinkebuchsen und verkaufs für 50 euro in 
ebayals billig drumodul ^^ .. Spaß ^^



Die sound daten sind Microsoft Wave Soundformat

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