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 :)
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
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.
> >, 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.