Forum: Mikrocontroller und Digitale Elektronik Unterschied USB ASP/USB ISP und einige andere kleine Fragen


von Dumpfbacke (Gast)


Lesenswert?

Abend µC Gemeinde,

ich (µC Anfänger) beschäftige mich neuerdings mit dem Thema µC und 
Programmierung in C. Jetzt ist die Frage aufgekommen: Was Unterscheidet 
USB ASP von USB ISP? ISP ist ja In System Programmer. Was ASP ist weiß 
ich nicht. Allerdings werden die selbergebauten USB AVR Programmer immer 
mit ASP bezeichnet. Können diese ASP Programmer überhaupt in system 
programmieren? Kann man für diese ATmega8 USB ASP Programmer überhaupt 
AVR Studio nuten oder nicht? So weit ich weiß melden sich einige USB ISP 
Adapter als STK500 am Computer.

Eine Frage hab ich noch: Wenn PB4 und PB6 als Ausgänge genutzt werden 
sollen, dann muss im Datenrichtungsregister DDRB 01010000, als Dezimal 
also "DDRB = 80" stehen?. Ich meine die erste null von links gesehen 
darf auch weggelassen werden oder? Und der Rest, also die Nullen sind 
dann die Eingänge oder?

Sind zwar einige für euch recht einfache Fragen und das auch noch zu 
später Stunde, aber es wäre echt nett wenn mir die jemand einfach kurz 
beantworten könnte. Danke :)

von Hermann-Josef (Gast)


Lesenswert?

Hi,

ich versuche mal, so viele Fragen wie möglich zu beantworten ;)

Also ASP steht für AVR (Atmel?) In System Programmer, er wird vom 
AVR-Studio nicht unterstützt, wohl aber von avrdude und der 
BASCOM-Entwicklungsumgebung.

USBisp ist wohl ein STK500-kompatible AVR-Programmer.

Mit dem Wert 01010000 (genauer 01010000b) geschrieben ins DDRB werden 
PB6 und PB4 als Ausgänge konfiguriert (1), alle anderen sind Eingänge 
(0), das ist der Zustand, der beim Einschalten eingenommen wird. Wie 
richtig bemerkt, ist das 80 dezimal, es ist aber IMHO leichter (im 
Vergleich zur dezimalen Darstellung) sich die Wirkung vorzustellen, wenn 
man das hexadezimal ausdrückt (zur Basis 16) also 0x50.

Die Frage mit dem Weglassen verstehe ich nicht, handelt es sich um 
BASCOM? ... in C gibt es kein Format, um Binärzahlen anzugeben, aber was 
das Weglassen angeht:
1
int zahl = 100;
und
1
int zahl = 00100;
sind gleichbedeutend. Das gilt auch für Hexadezimalzahlen ABER NICHT für 
Oktalzahlen.
1
int zahl = 377;
und
1
int zahl = 0377; /* 255 */
sind unterschiedlich.

Ich hoffe, ich konnte etwas helfen.
HJ

von Klaus W. (mfgkw)


Lesenswert?

Hermann-Josef schrieb:
> Die Frage mit dem Weglassen verstehe ich nicht, handelt es sich um
> BASCOM? ... in C gibt es kein Format, um Binärzahlen anzugeben

in Standard C nicht, richtig.
Da man aber meist den gcc nimmt, geht es dann doch:
1
zahl = 0b01010000; // dez. 80

>, aber was
> das Weglassen angeht:
1
> int zahl = 100;
> und
1
> int zahl = 00100;
> sind gleichbedeutend.

Nein!
100 ist dezimal, 00100 ist oktal (also dezimal 64).

> Das gilt auch für Hexadezimalzahlen ABER NICHT für
> Oktalzahlen.
1
> int zahl = 377;
> und
1
> int zahl = 0377; /* 255 */
> sind unterschiedlich.

ja.

von Hermann-Josef (Gast)


Lesenswert?

> >, aber was
> > das Weglassen angeht:
>
> > int zahl = 100;
>
> > und
>
> > int zahl = 00100;
>
> > sind gleichbedeutend.
>
> Nein!
> 100 ist dezimal, 00100 ist oktal (also dezimal 64).

Ok, wieder etwas gelernt... dachte, oktal würde durch die eine, 
vorangestellte 0 identifiziert, ist aber in der Tat nicht so (gcc 
4.5.0).

Danke
Hermann-Josef

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.