Forum: Mikrocontroller und Digitale Elektronik V-USB und der ATtiny84


von Jonathan K. (burgerohnealles)


Lesenswert?

Hallo,

ich hab einen ATtiny84 und möchte auf ihm V-USB zum laufen bekommen.

             ATtiny84
             +--\/--+
         VCC |1   14| GND
(PB0)  XTAL1 |2   13| (PA0)
(PB1)  XTAL2 |3   12| (PA1)
(PB3)  RESET |4   11| (PA2)
(PB2)   INT0 |5   10| (PA3)
(PA7)        |6   9 | (PA4)
(PA6)        |7   8 | (PA5)
             +------+

Hier sieht man noch mal den ATtiny84. Das Problem:
V-USB benötigt für D+ oder D- einen Interruptpin. Ok. Der ist da. Dieser 
ist aber auf PORTB und ALLE anderen PORTS an PORTB sind belegt (RESET 
und Quarz).
Und in der usbconfig.h kann man nur einen Port für beide Datenleitungen 
einstellen ("USB_CFG_IOPORTNAME"). Google hilft bei der Frage nach "v 
usb mit attiny84" auch nicht weiter.

Was kann ich machen? Muss ich V-USB komplett umschreiben (hab da mal 
gesucht drin nach "USB_CFG_IOPORTNAME", ist sehr kompliziert des V-USB)?
Oder gibt es eine einfachere Lösung?


Danke
burgerohnealles

von holger (Gast)


Lesenswert?

>Was kann ich machen?

Eine andere CPU nehmen. Kost doch nix.

von spess53 (Gast)


Lesenswert?

Hi

Jeder Pin des ATTiny84 kann einen Interrupt auslösen.

MfG spess

von Jonathan K. (burgerohnealles)


Lesenswert?

spess53 schrieb:
> Hi
>
> Jeder Pin des ATTiny84 kann einen Interrupt auslösen.
>
> MfG spess

Ja das find' ich auch immer komisch. Bei jedem steht PCINTx, aber bei 
nur wenigen steht INTx. Aber in der usbconfig.h steht ausdrücklich drin, 
dass man INTx verwenden muss, wenn ich das richtig verstanden habe.


mfg
burgerohnealles

von Jonathan K. (burgerohnealles)


Lesenswert?

holger schrieb:
>>Was kann ich machen?
>
> Eine andere CPU nehmen. Kost doch nix.

Falsch. Kostet was. Ich hätte noch zwei ATmega328P, aber wieso soll ich 
die für so eine "kleine" Sache "verschwenden"?


mfg
burgerohnealles

von holger (Gast)


Lesenswert?

>Falsch. Kostet was. Ich hätte noch zwei ATmega328P, aber wieso soll ich
>die für so eine "kleine" Sache "verschwenden"?

Welche kleine Sache? Für USB würde ich keinen von deinen AVR nehmen.

von Jonathan K. (burgerohnealles)


Lesenswert?

holger schrieb:
> Welche kleine Sache? Für USB würde ich keinen von deinen AVR nehmen.

Mit "kleine Sache" meine ich ein paar Tests zum Spaß, z.B. Tastatur, 
Maus, siehe auch [1] und [2].

Und was für einen Controller würdet ihr anstatt dem ATtiny84 oder dem 
ATmega328P empfehlen?



Links:
[1] http://www.elektronik-labor.de/AVR/WildeMaus.html
[2] http://www.elektronik-labor.de/AVR/Rebooter.html


Danke
burgerohnealles

von Uwe (de0508)


Lesenswert?

Jonathan,

kennst Du schon ?

http://www.obdev.at/products/vusb/index-de.html

man kann fast alles mit dem v-usb anfangen, der Treiber ist sehr 
flexibel. Du müsstest Dich aber weiter einlesen. PCINT ist eine 
Sammelschiene für max. 8 Interrupt eines Ports:

PCINT0
Pin Change Interrupt Request 0

Eingänge PCINT7 bis PCINT0
jeder Zustandswechsel führt zu einem PCINT0 ISR Aufruf.


PCINT1
Pin Change Interrupt Request 1

Eingänge PCINT11 bis PCINT8
jeder Zustandswechsel führt zu einem PCINT1 ISR Aufruf.

Mehr und viel genauer steht es im Datenblatt.

von Frank K. (fchk)


Lesenswert?

Jonathan K. schrieb:

> Mit "kleine Sache" meine ich ein paar Tests zum Spaß, z.B. Tastatur,
> Maus, siehe auch [1] und [2].
>
> Und was für einen Controller würdet ihr anstatt dem ATtiny84 oder dem
> ATmega328P empfehlen?

PIC18F14K50, oder für ganz lowcostige Sachen PIC16F1455. Beide mit 
Fullspeed Hardware-USB Device Interface eingebaut und daher 100% 
standardkonform. Zum Entwickeln ist ein PIC18F25J50 oder PIC18F25K50 
bequemer.

fchk

von Jonathan K. (burgerohnealles)


Lesenswert?

Aus usbconfig.h:
This file is an example configuration (with inline documentation) for 
the USB
driver. It configures V-USB for USB D+ connected to Port D bit 2 (which 
is
also hardware interrupt 0 on many devices) and USB D- to Port D bit 4. 
You may
wire the lines to any other port, as long as D+ is also wired to INT0 
(or any
other hardware interrupt, as long as it is the highest level interrupt, 
see
section at the end of this file).

Wenn man das nicht beachtet, funktioniert das nicht. :(

Also geht es mit dem ATtiny84 nicht?


Uwe S. schrieb:
> kennst Du schon ?

JA!


mfg
burgerohnealles

von Jonathan K. (burgerohnealles)


Lesenswert?

Frank K. schrieb:
> Jonathan K. schrieb:
>
>> Mit "kleine Sache" meine ich ein paar Tests zum Spaß, z.B. Tastatur,
>> Maus, siehe auch [1] und [2].
>>
>> Und was für einen Controller würdet ihr anstatt dem ATtiny84 oder dem
>> ATmega328P empfehlen?
>
> PIC18F14K50, oder für ganz lowcostige Sachen PIC16F1455. Beide mit
> Fullspeed Hardware-USB Device Interface eingebaut und daher 100%
> standardkonform. Zum Entwickeln ist ein PIC18F25J50 oder PIC18F25K50
> bequemer.
>
> fchk

Ja. Aber für ein paar "USB-Versuche" und spielereien werde ich doch 
nicht extra Teile kaufen.

EDIT: Trotzdem für später gut zu wissen, falls ich mal was "richtiges" 
machen möchte.


mfg
burgerohnealles

von spess53 (Gast)


Lesenswert?

Hi

>EDIT: Trotzdem für später gut zu wissen, falls ich mal was "richtiges"
>machen möchte.

Mit dieser Arme-Mann-USB-Krücke? Wenn ich mich recht erinnere ist der 
Controller zu etwa 90% mit dem USB beschäftigt. Was bleibt dann noch für 
sinnvolle Anwendungen?

MfG Spess

von Christoph H. (christoph_b)


Lesenswert?

was ist eigentlich von den Atmegas mit USB Interface zu halten. Sind die 
auch so schlecht??

von Frank K. (fchk)


Lesenswert?

spess53 schrieb:
> Hi
>
>>EDIT: Trotzdem für später gut zu wissen, falls ich mal was "richtiges"
>>machen möchte.
>
> Mit dieser Arme-Mann-USB-Krücke? Wenn ich mich recht erinnere ist der
> Controller zu etwa 90% mit dem USB beschäftigt. Was bleibt dann noch für
> sinnvolle Anwendungen?

Für HID, CDC und ähnliches reicht ein PIC18 locker aus. Und für größere 
Sachen kannst Du immer noch einen 40 MHz 32 Bit PIC32MX220 nehmen.

fchk

von Stefan++ (Gast)


Lesenswert?

Hallo,

Christoph B. schrieb:
> was ist eigentlich von den Atmegas mit USB Interface zu halten. Sind die
> auch so schlecht??

Nein,
ich empfehle jedem der mit USB rumspielen will ein kleines Board mit 
Namen "Teensy" und dem Atmega32u4.
http://www.pjrc.com/teensy/

Die haben auch gleich für die wichtigsten USB-Anwendungen 
Beispielprogramme auf die man dann aufbauen kann.


Gruss Stefan

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
Noch kein Account? Hier anmelden.