www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mit Attiny13 über USB Daten an ein Handy senden


Autor: GreenArrow (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute,ich weiß das das Thema schon öfters durchgekaut wurde, ich 
hänge leider trozdem in der Luft. Folgendes. Ich hab den Mikrocontroller 
über ein USB Kabel ans Handy angeschlossen und würde jetzt gern mit dem 
µC ne SMS übers Handy schicken. Es sind quasi nur folgende Befehle 
nötig:
AT+CMGF=1
AT+CMGS="0177298xxxx"
Text
.
Wenn ich das Handy an den PC anschließe und diese Befehle über die 
Serielle schicke,klappt das wunderbar. Jetzt hab ich den Code in den µC 
Programmiert und schicke den Seriell über die D+ leitung ans handy. 
Gleichzeitig das Invertierte Signal natürlich über D-. Leider klappt es 
aber nicht. Da ich natürlich keine Möglichkeit hab das ganze zu Debuggen 
weiß ich auch nicht wo der Fehler liegt. Naja, vielleicht kann mir ja 
jemand helfen. Erstmal vielen Dank, GreenArrow
Ps: ich poste euch mal den Code
;RS232, Empfangen und Senden mit 9600 Baud bei 1,2 MHz

    .include "tn13def.inc"

    .def   A      = r16
    .def   Delay  = r17
    .def   Count  = r18

    ;Port B
    .equ   Dplus    = 1
    .equ   Dminus   = 2


        rjmp Anfang
Anfang:
        sbi   ddrb,Dplus  ;Datenrichtung Dplus
    sbi   ddrb,Dminus ;Datenrichtung Dminus

;Anfang

ldi A,65
rcall WrCOM
ldi A,190
rcall WrCOM2

ldi A,84
rcall WrCOM
ldi A,171
rcall WrCOM2

ldi A,43
rcall WrCOM
ldi A,212
rcall WrCOM2

ldi A,67
rcall WrCOM
ldi A,188
rcall WrCOM2

ldi A,77
rcall WrCOM
ldi A,178
rcall WrCOM2

ldi A,71
rcall WrCOM
ldi A,184
rcall WrCOM2

ldi A,70
rcall WrCOM
ldi A,185
rcall WrCOM2

ldi A,61
rcall WrCOM
ldi A,194
rcall WrCOM2

ldi A,49
rcall WrCOM
ldi A,206
rcall WrCOM2

ldi A,13
rcall WrCOM
ldi A,242
rcall WrCOM2

; initialisierung abgeschlossen!


ldi A,65
rcall WrCOM
ldi A,190
rcall WrCOM2

ldi A,84
rcall WrCOM
ldi A,171
rcall WrCOM2

ldi A,43
rcall WrCOM
ldi A,212
rcall WrCOM2

ldi A,67
rcall WrCOM
ldi A,188
rcall WrCOM2

ldi A,77
rcall WrCOM
ldi A,178
rcall WrCOM2

ldi A,71
rcall WrCOM
ldi A,184
rcall WrCOM2

ldi A,83
rcall WrCOM
ldi A,172
rcall WrCOM2

ldi A,61
rcall WrCOM
ldi A,194
rcall WrCOM2

ldi A,34
rcall WrCOM
ldi A,221
rcall WrCOM2

ldi A,48
rcall WrCOM
ldi A,207
rcall WrCOM2

ldi A,49
rcall WrCOM 
ldi A,206
rcall WrCOM2

ldi A,55
rcall WrCOM
ldi A,200
rcall WrCOM2

ldi A,55
rcall WrCOM
ldi A,200
rcall WrCOM2

ldi A,50
rcall WrCOM
ldi A,205
rcall WrCOM2

ldi A,57
rcall WrCOM
ldi A,198
rcall WrCOM2

ldi A,56
rcall WrCOM
ldi A,199
rcall WrCOM2

ldi A,51
rcall WrCOM
ldi A,204
rcall WrCOM2

ldi A,56
rcall WrCOM
ldi A,199
rcall WrCOM2

ldi A,51
rcall WrCOM
ldi A,204
rcall WrCOM2

ldi A,50
rcall WrCOM
ldi A,205
rcall WrCOM2

ldi A,34
rcall WrCOM
ldi A,221
rcall WrCOM2

ldi A,13
rcall WrCOM
ldi A,242
rcall WrCOM2

; senden an nummer abgeschlossen



ldi A,84
rcall WrCOM
ldi A,171
rcall WrCOM2

ldi A,101
rcall WrCOM
ldi A,154
rcall WrCOM2

ldi A,115
rcall WrCOM
ldi A,140
rcall WrCOM2

ldi A,116
rcall WrCOM
ldi A,139
rcall WrCOM2

; nachricht "test" senden

ldi A,26
rcall WrCOM
ldi A,229
rcall WrCOM2

; senden beendet


Ende:
rjmp Ende
    
warten: ldi r19,255
    dec r19
    brne warten
    ret

WrCOM:  sbi   portb,Dplus  ;Senden
        ldi   Delay,38 
    
D4:     dec   Delay
        brne  D4
        ldi   Count,8
L2:     sbrc  A,0
        rjmp  OFF
        rjmp  ON
ON :    sbi   portb,Dplus
        rjmp  BitD
OFF:    cbi   portb,Dplus
        rjmp  BitD
BitD:   ldi   Delay,38  
D5:     dec   Delay
        brne  D5
        lsr   A
        dec   Count
        brne  L2
        cbi   PORTB,Dplus
        ldi   Delay,38  
D6:     dec   Delay
        brne  D6
        ret


WrCOM2:  sbi   portb,Dminus  ;Senden
        ldi   Delay,38 
    
D8:     dec   Delay
        brne  D8
        ldi   Count,8
L3:     sbrc  A,0
        rjmp  OF
        rjmp  ONN
ONN :    sbi   portb,Dminus
        rjmp  BitD1
OF:    cbi   portb,Dminus
        rjmp  BitD1
BitD1:   ldi   Delay,38  
D9:     dec   Delay
        brne  D9
        lsr   A
        dec   Count
        brne  L3
        cbi   PORTB,Dminus
        ldi   Delay,38  
D:     dec   Delay
        brne  D
        ret

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich nehme an, das du am PC eine virtuelle Com-Schnittstelle für USB 
hast.
Die eigentliche Übertragung geht via USB. Und das kann dein ATTiny 
nicht.

MfG Spess

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann nicht klappen. Du brauchst einen USB Host Controller, einen USB 
Software Stack und einen Treiber für den USB-Serial Converter, der im 
Datenkabel oder im handy verbaut ist. Wenn der Converter im Dtaenkabel 
ist, hast du gute Chancen, das Handy direkt anzusprechen. Ist das Kabel 
nur ein normales USB Kabel, gehts mit viel Glück und etwas Aufwand mit 
dem Vinculum von FTDI.

Autor: GreenArrow (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mmmh,hab mir das irgendwie zu einfach vorgestellt. Ich hab das USB Kabel 
einfach durchgeschnitten und dann einfach die beiden Datenleitungen mit 
dem µC verbunden.
Denn wie Spess richtig feststellte,wird der USB Anschluss ja am rechner 
als virtueller Com Anschluss erkannt. Daher dachte ich die Daten gehen 
über USB genau wie über die Serielle nur halt nicht tx und rx sonder d+ 
und d-.
Aber wenn ich dann Daten Seriell da hin schicke wandelt der Rechner die 
Intern einfach um bevor sie übers USB Kabel gehen, oder?

Ich mein wieso brauch ich nen USB Host Controller? Mein µC Soll das 
Handy ja nicht erkennen. Der soll ja einfach nur die Daten da hin 
schicken. Und selbst bei USB werden es doch im Endeffekt auch nur einsen 
und nullen sein. Die müsste ich doch auch mit nem nicht USB fähigen µC 
verschicken können. Ist dann wahrscheinlich nur mehr arbeit,oder? Oder 
muss das Handy vorher erst irgendwie initialiesiert werden? Ich mein es 
merkt ja das was angeschlossen ist,denn es fragt mich ja nach dem 
anschließen an den µC in welchen Modus es gehen soll?
Vielleicht habt ihr ja nochmal ein paar Ansätze für mich.
Ps: Das Datenkabel vom Handy ist übrigens ein ganz normales usb kabel.
Nochmal vielen Dank, GreenArrow

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest dich mal informieren, was USB ist. Klar, im Endeffekt gehen 
da Nullen und Einsen über die Leitung. Allerdings ist das bidirektional, 
mit sehr knappen Timings und einer Menge Software-Overhead. Da dein 
Handy ein USB-Device ist, und einen USB-Serial-Converter eingebaut hat, 
benötigst du zwingend einen USB Host. Mit einem USB Device kannst du nur 
über einen USB Host sprechen. Ob du den jetzt in Software emuliert 
bekommst, wage ich zu bezweifeln, denn wie gesagt, der USB Stack ist 
nicht besonders wenig. Die besten Chancen hast du noch mit dem Vinculum 
von FTDI, alles andere wird nur noch viel viel komplizierter. Wenn der 
Vinculum deinen USB-Serial Konverter aber nicht unterstützt, hast du eh 
Pech gehabt.

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wie ich das verstanden habe handelt es sich bei den Vinculum auch nur 
um einen µC, der eben schon eine Firmware hat welche Massenspeicher und 
auch einige andere USB Geräte (Drucker, FTDI serial...) schon direkt 
erkennt und damit arbeiten kann. Wenn man aber genug Muse und 
Durchhaltevermögen hat, sollte man damit jedes USB Gerät irgendwie 
ansprechen können.
Aber ohne jetzt GreenArrow zu nahe treten zu wollen ist der Weg schon 
sehr viel länger als schlicht die zwei Adern anzuschließen und zu 
hoffen, dass es klappt. -wiebel

Autor: GreenArrow (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Leute, da ich nun auch bezweifel das ich die Software 
emuliert bekomm,werde ich es mal mit dem Vinculum probieren. Echt mehr 
arbeit als gedacht :-). Ich hab aber noch irgendwo ein altes 3210 
rumfliegen. Da hatte ich damals ein Serielles 9 Poliges Datenkabel für. 
Das sollte ich doch dann ganz normal seriell ansprechen können,ohne 
große  Probleme, oder? Dann würd ich es nämlich erstmal damit probieren 
und das USB Problem nach hinten schieben. Nochmals vielen Dank für die 
ganze Mühe, GreenArrow

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das sollte gehen, schau noch nach dem Pegel (5V oder 3,3V). Wenn du 
verwegen genug bist kannst du auch schauen ob du das serielle Signal bei 
dem neuen Handy hinter dem USB-Serial Wandler findest, daran könntest du 
dann auch den µC direkt anhängen. Dann ist dein Handy aber natürliche 
ziemlich "verbastelt" oder auch kaputt gelötet. ;) -wiebel

Autor: GreenArrow (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Wiebel: Das ist auch ne super Idee. Zwar auch einiges an Arbeit aber 
für nen Anfänger wahrscheinlich leichter als sich mit dem Vinculum zu 
beschäftigen. Und verbastelt ist es eh schon, ich hab nämlich ein kabel 
an den Lautsprecherausgang vom Handy gelötet um meinen "Programmier-PC" 
damit einzuschalten :-).
Nochmals vielen Dank an euch alle. Echt Klasse Forum! Hoffe das ich 
irgendwann auch mal was produktives hinzufügen kann. Mfg GreenArrow

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.