PORT/Register Beschreibung in AVR

OP #5704816
Lesenswert?

Guten Abend zusammen, Gestatten mich vorzustellen, mein Name ist M.eng 
Daniel André

ich bin Ingenieur fur Eingebettete Systeme und Microsystem Entwicklung 
sowie fur Automatisierungs Technologie.

Es Freut mich mittlerweile mietglied in diesem besonders interessantem 
und lehreichem Forum zu sein, das ich schon langere zeit eifrig 
verfolge!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+++


Ich Bescheaftige mich seit ca. 2 monaten mit der C Programmierung unter 
AVR(GCC)
habe eine sehr gut ausgestattete Entwicklungsstation in einem Netzwerk 
und auch sogut wie alle Gefordeten Programme und entwicklungs 
Umgebungen, ich arbeite unter UNIX/LINUX!

Ich waere euch wirklich sehr verbunden wenn ihr mir bei meiner 
Problemloesung zuseite stehen koenntet.

Es geht schlichtweg um die PORT Register und PIN Adressierung und BIT 
Manipulation, z.b


DDRC &= ~(0 << PC5);
PORTC=0b00000000;

Ich habe mittlerweile herausgefunden wie ich die PINS uber die PC0-6 
bezeichnung anspreche, was aber auch in HEX und Decimal/ Binear 
geschehen kann worin auch mein problem liegt...habe nach einer formel 
gesucht die mir das vereinfachen soll aber keine Positiven 
Treffer....was ich wissen mochte ist wie ich die einzelnen PINS 
ansprechen kann und woher ich weiss was sich z.b hinter 0x02 oder 0x06 
verbirgt, ich moechte die Pinnamen ausschreiben koennen in den Formen 
ox??

und wie ich das hier verstehen soll, if((PINC&(32<<0))) hier wird PC5 
gemeint das weis ich weil der reagiert wenn ich 3,3V anhalte was ja auch 
so sein soll!! warum ist 32 = PC5??? HILFE;)

Ich moechte mich herzlich fur eure muehen und zeit bedanken die ihr mir 
Opfert

Gruss M.Eng Daniel
#5704851
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Woher weisst du das 32<<0 PINC5 ist?

Weil er keinen Sechser in Mathe hat.
Denn 2^5 (zwei hoch 5) sind 32. Man schaue sich mal die Zweierpotenzen 
an, sowohl binär als auch hex als auch dezimal.

Arduino Fanboy D. schrieb:
>> DDRC &= ~(0 << PC5);
> Das ist wirkungslos.

Nö, das hat dieselbe Wirkung wie
1
DDRC = 0;

..was natürlich der Reset Wert von DDRC sein müsste.
OP #5704871
Lesenswert?

Jim M. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> Woher weisst du das 32<<0 PINC5 ist?
>
> Weil er keinen Sechser in Mathe hat.
> Denn 2^5 (zwei hoch 5) sind 32. Man schaue sich mal die Zweierpotenzen
> an, sowohl binär als auch hex als auch dezimal.
>
> Arduino Fanboy D. schrieb:
>>> DDRC &= ~(0 << PC5);
>> Das ist wirkungslos.
>
> Nö, das hat dieselbe Wirkung wieDDRC = 0;
>
> ..was natürlich der Reset Wert von DDRC sein müsste.

Danke fur deine Antwort....meine neue Formel/Erlauterung
(2  ~ 0b00000010) = PC1 /2^1
(4  ~ 0b00000100) = PC2 /2^2
(8  ~ 0b00001000) = PC3 /2^3
(16 ~ 0b00010000) = PC4 /2^4
(32 ~ 0b00100000) = PC5 /2^4

richtig nehme ich an, danke fur dein leitfaden...koentest du mir 
verraten wie ich das jetzt auf hex projetziere da werde ich nicht schlau 
selbst wenn ich einige buscher offen habe, mann braucht immer ein 
kleinen pracktischen anstoss....Danke
#5704881
Lesenswert?

Ich erinnere mich als ich vor ein paar Jahren mit dem Programmieren 
anfing. Da leuchtete mir das auch noch nicht so ein wie das mit den 
Hex-Zahlen funktioniert und warum man die überhaupt nimmt.


Nehme deinen präferierten Taschenrechner unter Linux. Stelle ihn im auf 
Programming und guck dir die binäre Ausgabe je nach Zahl an.


Fange mit den Zahlen 0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20 an und entdecke 
das Muster dazu. Dann fällt es einem irgendwann wie Schuppen von den 
Haaren.
Gast #5704888
Lesenswert?

Jim M. schrieb:
> Arduino Fanboy D. schrieb:
>>> DDRC &= ~(0 << PC5);
>> Das ist wirkungslos.
>
> Nö, das hat dieselbe Wirkung wieDDRC = 0;

Dann guck dir mal an was der Operator "~" bewirkt.
(0 << PC5) bleibt 0b00000000
~0b00000000 = 0b11111111
und
DDR &= 0b11111111 bleibt DDR
OP #5704898
Lesenswert?

Hier ein bespiel , ich kann die PORT Adressierung in mehreren formen 
darstellen!

die Quellcodes habe ich nach und nach geschreiben mit Forschen und 
Ausprobieren!

/*
 * Analog_Input_PB_OUT.c
 *
 * Created: 28.11.2018 04:22:41
 *  Author: Embedded-Engineering
 */



#define F_CPU 8000000UL


#include<avr/io.h>
#include<util/delay.h>


int main()
{
  DDRC=0b00100000; //config - PortC PIN 0 als INPUT
  PORTC=0b00000000; //bleibt auf 0 solange bis ein impuls angelegt wird!

  DDRB=0b00000001; // configuring PortB als output
  PORTB=0b00000000; // OFF

  while(1)
  {
    if((PINC&(32<<0))

               /*(WERTE | 1,2,4,8,16,32 << X) | TABELLE : PORT-C
                              // (DEC)   (BINARY) //
                                  (1  ~ 0b00000001) = PC0
                                  (2  ~ 0b00000010) = PC1
                                  (4  ~ 0b00000100) = PC2
                                  (8  ~ 0b00001000) = PC3
                                  (16 ~ 0b00010000) = PC4
                                  (32 ~ 0b00100000) = PC5
              */
    {
      PORTB=0x01;   // | 0x01 = ON  | 0x00 = OFF |
      _delay_ms(500);
      PORTB=0x00;   // | 0x00 = OFF | 0x01 = ON  |
    }
    else
    PORTB=0x00;  // | 0x00 = OFF | 0x01 = ON |
  }

  return 0;
}

So, im oberen Quellcode ist die PORT Adressierung uber Binardaten 
Geregelt 0b00000000; etc.

in dem folgendem Quellcode habe ich versucht es Alphabetisch 
Darzustellen! es funktioniert aber nicht, die LED bleibt an, und geht 
nicht erst bei IMPULS auf PC0 an!

/*
 * Analog_Input_PB_OUT.c
 *
 * Created: 28.11.2018 04:22:41
 *  Author: Embedded-Engineering
 */



#define F_CPU 8000000UL


#include<avr/io.h>
#include<util/delay.h>


int main()
{
  DDRC &= ~(0 << PC5); //config - PortC PIN 0 als INPUT
  PORTC |= (0<<PC5); //bleibt auf 0 solange bis ein impuls angelegt 
wird!

  DDRB=(1<<PB0); // configuring PortB als output
  PORTB |= (0<<PB0); // OFF

  while(1)
  {
    if((PINC&(1<<PC5)))
    {
      PORTB=(1<<PB0);
      _delay_ms(500);
      PORTB=(0<<PB0);
    }
    else
    PORTB=0x00;
  }

  return 0;
}


Danke fur etwaige hinweise und korigierung....
OP #5704907
Lesenswert?

Volker S. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> Guten Abend zusammen, Gestatten mich vorzustellen, mein Name ist M.eng
>> Daniel André
>
> Ja klar ;-) Ist das nicht mühsam deine Posts so zu verhunzen?

Naja bin Formal;-) ist zwar mehr zu schreiben aber wir sind hier ja 
immerhin auf einer akademischen plattform, da sollte man etwas an 
Hoflichkeit & Profesionalitat mitbringen....falls du mir helfen kannst 
ware ich sehr verbunden
#5704913
Lesenswert?

So schreibt kein normaler Mensch.

Die invertierte Groß- und Kleinschreibung ist auch recht auffällig.
Wo bekommt man so 'nen Master?

<edit>Ok, sorry. Dich gibt es anscheinen wirklich ;-)
Obwohl ich es eigentlich besser wissen müsste,
ist es einfach immer wieder überraschend, wie wenig
Grundlegendes man in so einem Studium lernen kann.
OP #5704919
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Volker S. schrieb:
>> M.Eng Ing. Daniel D. schrieb:
>>> Guten Abend zusammen, Gestatten mich vorzustellen, mein Name ist M.eng
>>> Daniel André
>>
>> Ja klar ;-) Ist das nicht mühsam deine Posts so zu verhunzen?
>
> Naja bin Formal;-) ist zwar mehr zu schreiben aber wir sind hier ja
> immerhin auf einer akademischen plattform, da sollte man etwas an
> Hoflichkeit & Profesionalitat mitbringen....falls du mir helfen kannst
> ware ich sehr verbunden

ich bin aktuell in mexico durch eine eroffnung einer tochtergesellschaft 
meiner firma, auf den tastaturen ist die deutsche ortographie nicht 
vorhanden! vieleicht erklart dir das mein ungewolltes 
schreiben....grusse

bitte ausschliesslich relativiert aufs thema posten, Danke
#5704922
Lesenswert?

Bin kein AVR Spezialist, aber die Kommentare scheinen mir nicht
immer zum Code zu passen. (PC5 und Port C0)
Eingänge schreibt man auch nicht, die ließt man nur.

Das Wort "Impuls" passt hier auch nicht.
Ein Impuls, geht von Low auf High und wieder auf Low.
Hier ist wohl eher ein Zustand gemeint, oder? (blinken wenn...)

<edit>
Wenn ein Ausgang 0 gesetzt werden soll geschieht das mit "&=" (UND)
soll der 1 werden dann mit "|=" (ODER)

Wie genau wird der Eingang hardwaremäßig angesteuert?
OP #5704945
Lesenswert?

Volker S. schrieb:
> Bin kein AVR Spezialist, aber die Kommentare scheinen mir nicht
> immer zum Code zu passen. (PC5 und Port C0)
> Eingänge schreibt man auch nicht, die ließt man nur.
>
> Das Wort "Impuls" passt hier auch nicht.
> Ein Impuls, geht von Low auf High und wieder auf Low.
> Hier ist wohl eher ein Zustand gemeint, oder? (blinken wenn...)
>
> <edit>
> Wenn ein Ausgang 0 gesetzt werden soll geschieht das mit "&=" (UND)
> soll der 1 werden dann mit "|=" (ODER)
>
> Wie genau wird der Eingang hardwaremäßig angesteuert?

Also, auf PC5 werden kurz 2,5 - 5 VDC angelegt, impuls fur kurze zeit! 
wenn das passiert wird der ausgang PB0 HIGH geschaltet , was z.b eine 
led zum leuchten bring fur 5 sek. , bei mir ist es aber ein teil eines 
intigrierten systems was fur z.b zur ansteuerung von motor controllern 
gedacht ist sowie zur realisierung von HMI Interfaces, ich baue u.a CNC 
machines , bin aber wie gesagt erst seit kurzem mit AVR-GCC unterwegs
#5704961
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Also, auf PC5 werden kurz 2,5 - 5 VDC angelegt, impuls fur kurze zeit!

Reichen 2,5V aus, um als "1" erkannt zu werden und liegt ansonsten auch 
eine definierte Spannung (0V) an?

Ist die kurze Zeit lang genug, dass der Impuls sicher im Programm 
erkannt werden kann?

Wie oben schon gesagt, ich glaub dein Eingang ist als Ausgang...
Die von Bernd N. verlinkte Seite hast du schon angeschaut?
OP #5704963
Lesenswert?

Volker S. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> Also, auf PC5 werden kurz 2,5 - 5 VDC angelegt, impuls fur kurze zeit!
>
> Reichen 2,5V aus, um als "1" erkannt zu werden und liegt ansonsten auch
> eine definierte Spannung (0V) an?
>
> Ist die kurze Zeit lang genug, dass der Impuls sicher im Programm
> erkannt werden kann?
>
> Wie oben schon gesagt, ich glaub dein Eingang ist als Ausgang...

Ja die reichen vollkommen aus, da genugen schon 1V , und ja der ausgang 
PB0 ist auf 0V bis auf PC5 spannung angelegt wird...

hmmm das problem ist ja mein grundlegendes ich habe noch nicht 
herausgefunden wie ich die adressierung hinbekomme, habe alle datasheets 
aber die helfen mir nicht, MSB LSB und 0-7 bit register etc , blicke 
nicht durch, also du meinst der eingang PC5 ist aus ausgang definiert?
OP #5704966
Lesenswert?

Volker S. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> Also, auf PC5 werden kurz 2,5 - 5 VDC angelegt, impuls fur kurze zeit!
>
> Reichen 2,5V aus, um als "1" erkannt zu werden und liegt ansonsten auch
> eine definierte Spannung (0V) an?
>
> Ist die kurze Zeit lang genug, dass der Impuls sicher im Programm
> erkannt werden kann?
>
> Wie oben schon gesagt, ich glaub dein Eingang ist als Ausgang...
> Die von Bernd N. verlinkte Seite hast du schon angeschaut?

ja habe ich, ich habe buscher mit einigen tausend seiten uber embedded-c 
und MC programming, nur hat jeder MC seine eigene hardware adressierung 
und CMOS strucktur, da hilft mir mein wissen nicht, die ansteuerung von 
PORTS in AVR ist eigen....behersche assembler, will ich hier aber nicht 
benutzen, arbeite abwechselnd mit Atmel Studio und UNIX....die 
quellcodes wurden im atmel studio geschrieben
#5704970
Lesenswert?

0 << PC5 ist vermutlich 0b00*0*00000
~(0 << PC5) ist dann 0b11*1*11111
DDRC &= 0b11111111 ist wirkungslos. Es bleibt also alles wie es war!

Mach es erst mal nicht so kompliziert und schreib einfach:
DDRC &= 0b11*0*11111; //PC5 als Eingang

Das müsste eigentlich jeder verstehen ohne sich das Hirn zu verrenken.
Wenn du den Bitshift Krampf mal verstanden hast, kannst du das natürlich 
auch verwenden, aber besser erst dann!
OP #5704976
Lesenswert?

Volker S. schrieb:
> 0 << PC5 ist vermutlich 0b00*0*00000
> ~(0 << PC5) ist dann 0b11*1*11111
> DDRC &= 0b11111111 ist wirkungslos. Es bleibt also alles wie es war!
>
> Mach es erst mal nicht so kompliziert und schreib einfach:
> DDRC &= 0b11*0*11111; //PC5 als Eingang
>
> Das müsste eigentlich jeder verstehen ohne sich das Hirn zu verrenken.
> Wenn du den Bitshift Krampf mal verstanden hast, kannst du das natürlich
> auch verwenden, aber besser erst dann!

okey also mit binar weiter machen, danke werd es morgen mal ausprobieren 
haben gerade 3 uhr nachts....ich poste dir morgen das ergebnis....grusse
Gast #5705056
Lesenswert?

Jim M. schrieb:
> Nö, das hat dieselbe Wirkung wieDDRC = 0;
Ok, ich was stillschweigend davon ausgegangen, dass der µC frisch aus 
dem Reset da vorbei kommt.

Also ja, korrekt ist:
Alle Pins des Ports werden zu Inputs.
--------


M.Eng Ing. Daniel D. schrieb:
> int main()
> {
>   DDRC &= ~(0 << PC5); //config - PortC PIN 0 als INPUT
>   PORTC |= (0<<PC5); //bleibt auf 0 solange bis ein impuls angelegt
> wird!
>
>   DDRB=(1<<PB0); // configuring PortB als output
>   PORTB |= (0<<PB0); // OFF
>
>   while(1)
>   {
>     if((PINC&(1<<PC5)))
>     {
>       PORTB=(1<<PB0);
>       _delay_ms(500);
>       PORTB=(0<<PB0);
>     }
>     else
>     PORTB=0x00;
>   }

Ich bin schockiert!
Ich denke, dass einem "Ingenieur für Eingebettete Systeme " schon klar 
sein sollten, dass man keine Null verschieben kann. Beziehungsweise, 
dass (0) das gleiche ist wie (0<<PC5).
Bitte C Operatoren lernen und mal auf dem Papier durchspielen. Dann 
fällt dir auf, was nicht stimmen kann.
#5705076
Lesenswert?

Hi,
Atmel Studio4 "for beginners" wäre als Veranschaulichung ganz gut.
Da kann man im Simulator oder auf Neudeutsch "Debugger" die 
"Käsekästchen" als Lernhilfe ganz gut gebrauchen. So gut, dass ich es 
sogar verstehe, obwohl ich von C Null Ahnung habe.

Einfach ein Programm eingeben und gucken, was der "Debugger" nach Build 
and Run anmeckert.

ciao
gustav
#5705077
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> okey also mit binar weiter machen

Ist in diesem Fall erst mal die anschaulichste Darstellung.
Jeder SOLLTE in der Lage sein, auf den ersten Blick zu sehen,
um was es geht.

Für das spätere Programm wäre es auch besser, wenn so Zeug irgendwo in 
einem Header oder wenigstens außerhalb des Codes stehen würde.
Dann braucht man im Code keine Kommentare und kann auch sehr einfach 
Änderungen an der Konfiguration vornehmen. z.B.:
1
#define IMPULS    (PORTC & 0b00100000)
2
#define mLED_ON    PORTB |= 0x01  // ;-)
3
#define mLED_OFF   PORTB &= 0xFE
Dann im Programm:
1
if(IMPULS){
2
    LED_ON;
3
    _delay_ms(500);
4
    LED_OFF;
5
}



Arduino Fanboy D. schrieb:
> Ich bin schockiert!
Ich dachte zuerst auch, das kann nur ein Troll sein.
Aber wenn ich daran denke, was ich so täglich erlebe...
OP #5705087
Lesenswert?

Arduino Fanboy D.


> Ich bin schockiert!
> Ich denke, dass einem "Ingenieur für Eingebettete Systeme " schon klar
> sein sollten, dass man keine Null verschieben kann. Beziehungsweise,
> dass (0) das gleiche ist wie (0<<PC5).
> Bitte C Operatoren lernen und mal auf dem Papier durchspielen. Dann
> fällt dir auf, was nicht stimmen kann.

Wie gesagt die AVR programmierung ist eigenstandig, eigene compiler etc.
mir gehts um die ausschreibung der port und pinnamen ohne hex oder binar 
verwenden zu mussen...die 0 o. 1 ist um auf high oder low zu setzen oder 
halt um ein einzelnen pin anzusprechen....wie gesagt bin mich gerade am 
einlesen....aber warum sollte ich denn keine null verschieben konnen??? 
ich kann die 0 doch vom lsb gezahlt 3 positionen aufsteigend stzen und 
somit z.b den 4 bit setzen oder nicht?
OP #5705093
Lesenswert?

Volker S. schrieb:
>
> Für das spätere Programm wäre es auch besser, wenn so Zeug irgendwo in
> einem Header oder wenigstens außerhalb des Codes stehen würde.
> Dann braucht man im Code keine Kommentare und kann auch sehr einfach
> Änderungen an der Konfiguration vornehmen. z.B.:#define IMPULS    (PORTC
> & 0b00100000)
> #define mLED_ON    PORTB |= 0x01  // ;-)
> #define mLED_OFF   PORTB &= 0xFE
> Dann im Programm:
> if(IMPULS){
>     LED_ON;
>     _delay_ms(500);
>     LED_OFF;
> }

mit diesem code kriege ich erreicht das wenn 5V an PC0 angelegt werden 
die led auf PORTB leuchtet, an welchem ausgang?
#5705104
Lesenswert?

Arduino Fanboy D. schrieb:
> Ich denke, dass einem "Ingenieur für Eingebettete Systeme " schon klar
> sein sollten, dass man keine Null verschieben kann. Beziehungsweise,
> dass (0) das gleiche ist wie (0<<PC5).

Er ist ja auch "M. Eng". D.h. er ist Ingenieur für ECTS Punkte. Alles 
andere kannst du vergessen. Sieht man ja hier sehr gut.
Vorher ist meine Oma noch "Ingenieur für Eingebettete Systeme".
#5705106
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> mit diesem code kriege ich erreicht das wenn 5V an PC0 angelegt werden
> die led auf PORTB leuchtet, an welchem ausgang?

Am B0 natürlich.
0x01 ist das selbe wie 0b00000001
0xFE ist das selbe wie 0b11111110

Zum Null-setzten wird eine Maske mit 0 an der/den entsprechenden 
Stelle/n und der bitweise UND Operator angewendet.
Zum Eins-setzen eine Maske mit 1 und der bitweise ODER Operator.

Hast du den Artikel der oben verlinkt wurde nicht verstanden?
OP #5705128
Lesenswert?

Cyblord -. schrieb:
> Arduino Fanboy D. schrieb:
>> Ich denke, dass einem "Ingenieur für Eingebettete Systeme " schon klar
>> sein sollten, dass man keine Null verschieben kann. Beziehungsweise,
>> dass (0) das gleiche ist wie (0<<PC5).
>
> Er ist ja auch "M. Eng". D.h. er ist Ingenieur für ECTS Punkte. Alles
> andere kannst du vergessen. Sieht man ja hier sehr gut.
> Vorher ist meine Oma noch "Ingenieur für Eingebettete Systeme".

Master of Engineering ist die neu geregelte bezeichnung fur Dpl-Ing , 
zertifikat und urkunde sowie diplom arbeit erforderlich, das ETCS system 
befahigt dich dazu an einem studien programm teilnehmen zu koennen oder 
nicht, habe mein master an der TU-Kaiserslautern gemacht der mich zur 
promotion eines doktor grades berechtigt, aktuell ist der M.Eng wohl 
einer der annerkanntesten abschlusse uberhaupt, was aber uberhaupt 
nichts mit der thematik zu tuen hat, eingebette systeme haben nicht 
unbedingt etwas mit avr zu tuen, zur erinnerung AVR ist eine 8-bit 
microcontroller familie von atmel die unter avr-gcc compiler in c zu 
programmieren ist wobei der gcc seine eigene interpretation 
besitzt...grusse
OP #5705132
Lesenswert?

Volker S. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> aber warum sollte ich denn keine null verschieben konnen???
>
> Können könnte man schon, aber wozu?
> (Das bringt doch gar nichts)
>
> Stell dir die "0" und die "1" hier besser so vor:
>
> 0 -> 0b00000000
> 1 -> 0b00000001
>
> Na, was passiert beim Verschieben ?

0b bedeutet das hier binare daten behandelt werden, die eins am ende 
sagt aus das pin 0 als ausgang gesetzt ist..oder?
#5705140
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Master of Engineering ist die neu geregelte bezeichnung

Danke danke. Reicht. Du bist die beste Werbung für diesen extrem 
wichtigen Abschluss. Ich bin bereits überzeugt und alle meine Vorurteile 
bestätigen sich vollständig.(geht mir oft so).

> eingebette systeme haben nicht
> unbedingt etwas mit avr zu tuen, zur erinnerung AVR ist eine 8-bit
> microcontroller familie von atmel die unter avr-gcc compiler in c zu
> programmieren ist wobei der gcc seine eigene interpretation
> besitzt...grusse

Ja genau, so essentielle Dinge wie Bitoperationen,  Hex Zahlen oder die 
Programmiersprache C sind hier reine Erfindungen für AVR, und 
funktionieren auf anderen Architekturen komplett anders.
Jüngelchen, mal ehrlich, redest du dir das selber ein? Erforsche doch 
lieber mal warum du als toller M.Eng. echt nichts drauf hast. Woran 
lags?
#5705142
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Wie gesagt die AVR programmierung ist eigenstandig, eigene compiler etc.

Schon, aber auch wenn man vom AVR NULL Ahnung hat, kommt man mit Hilfe 
von elementarem Grundlagenwissen schon ziemlich weit. Ich habeauch NULL 
Ahnung von AVR...


M.Eng Ing. Daniel D. schrieb:
> 0b bedeutet das hier binare daten behandelt werden, die eins am ende
> sagt aus das pin 0 als ausgang gesetzt ist..oder?

Es gibt in so einem uC eigentlich nur binäre Daten. Alles Andere ist nur 
eine Form der Darstellung, die dem Programmierer z.B. aus Gründen der 
besseren Verständlichkeit oder Faulheit angenehmer erscheint. Der 
Compiler wird es schon richten ;-)

Hier war der Grund die vermeintlich bessere Verständlichkeit was beim 
Verschieben passieren wird!
#5705143
Lesenswert?

Volker S. schrieb:
> Am B0 natürlich.
> 0x01 ist das selbe wie 0b00000001
> 0xFE ist das selbe wie 0b11111110

Hi,
zu den Konventionen noch:
Und $30  => 0x30 oder => 0b00110000

M.Eng Ing. Daniel D. schrieb:
> benutzt du STK500 etc. RT programming

ja.
sehr zufrieden. Absolut empfehlenswert bis Version Studio 4.18
Danach hakelt es etwas bei mir,so dass ich wieder von Version 6 auf 4.18 
downgegradet habe. Unterstützt mittlerweile auch ATMega Targets, aber 
nicht alle Features wie die 6-er Version. Das muss man von Fall zu Fall 
selbst entscheiden.

ciao
gustav
OP #5705150
Lesenswert?

Cyblord -. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> Master of Engineering ist die neu geregelte bezeichnung
>
> Danke danke. Reicht. Du bist die beste Werbung für diesen extrem
> wichtigen Abschluss. Ich bin bereits überzeugt und alle meine Vorurteile
> bestätigen sich vollständig.(geht mir oft so).
>
> Ja genau, so essentielle Dinge wie Bitoperationen,  Hex Zahlen oder die
> Programmiersprache C sind hier reine Erfindungen für AVR, und
> funktionieren auf anderen Architekturen komplett anders.
> Jüngelchen, mal ehrlich, redest du dir das selber ein? Erforsche doch
> lieber mal warum du als toller M.Eng. echt nichts drauf hast. Woran
> lags?

jede Prozessor Architecktur hat seine eigenen anforderungen an die low 
oder high level sprache in der du programmierst, ich sagte nicht das ich 
hexadezimal , binar, octal, oder algebra nicht kenne , naturlich kenne 
ich auch bitoperationen bitwise, und bitmanipulation aber die 
interpretation und anwendung in avr ist im gesamt kontext verschieden zu 
z.b czpress MCU die ich programmiere, mein schwerpunkt liegt in 
microsystems und SOC design und assembler
OP #5705152
Lesenswert?

Cyblord -. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> ich sagte nicht das ich
>> hexadezimal , binar, octal, oder algebra nicht kenne , naturlich kenne
>> ich auch bitoperationen bitwise, und bitmanipulation aber die
>> interpretation und anwendung in avr ist im gesamt kontext verschieden
>
> Unsinn.

das ist aber die erfahrung die ich gerade mache, die ports lassen sich 
von mir nicht so ansprechen wie ich es mit anderen cpu oder MCU tue
OP #5705155
Lesenswert?

Karl B. schrieb:
> Volker S. schrieb:

>
> ja.
> sehr zufrieden. Absolut empfehlenswert bis Version Studio 4.18
> Danach hakelt es etwas bei mir,so dass ich wieder von Version 6 auf 4.18
> downgegradet habe. Unterstützt mittlerweile auch ATMega Targets, aber
> nicht alle Features wie die 6-er Version. Das muss man von Fall zu Fall
> selbst entscheiden.
>
> ciao
> gustav

arbeite mit Atmel studio 7, aber das STK500 etc. protocoll , derren 
programmer habe ich noch nicht werde ich aber morgen kaufen;) damit ist 
das was uberschaulicher denke ich weil man dor soweit ich weiss die 
angesprochen ports grafisch dargestellt bekommt
Gast #5705159
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> zur erinnerung AVR ist eine 8-bit
> microcontroller familie von atmel die unter avr-gcc compiler in c zu
> programmieren ist wobei der gcc seine eigene interpretation
> besitzt...
Das ist ein Irrtum!

Der AVR-GCC ist ein vollwertiger Kompiler.
Welcher weitestgehend identisch mit seinen anderen GCC Brüdern ist.
Vollwertige Implementierungen des aktuellen Sprachstandards. Die Grenzen 
dessen findet man in der Compilerdoku.
Ja, sicher, ein paar Besonderheiten gibt es auf kleinen µC
Die C++ STL ist nicht dabei, und Exceptions sind üblicherweise 
deaktiviert.
OP #5705162
Lesenswert?

Volker S. schrieb:

>
> M.Eng Ing. Daniel D. schrieb:
>> 0b bedeutet das hier binare daten behandelt werden, die eins am ende
>> sagt aus das pin 0 als ausgang gesetzt ist..oder?
>
> Es gibt in so einem uC eigentlich nur binäre Daten. Alles Andere ist nur
> eine Form der Darstellung, die dem Programmierer z.B. aus Gründen der
> besseren Verständlichkeit oder Faulheit angenehmer erscheint. Der
> Compiler wird es schon richten ;-)
>
> Hier war der Grund die vermeintlich bessere Verständlichkeit was beim
> Verschieben passieren wird!

mit assembler habe ich kein problem, mir hats aber AVR angetan
OP #5705168
Lesenswert?

Arduino Fanboy D. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> zur erinnerung AVR ist eine 8-bit
>> microcontroller familie von atmel die unter avr-gcc compiler in c zu
>> programmieren ist wobei der gcc seine eigene interpretation
>> besitzt...
> Das ist ein Irrtum!
>
> Der AVR-GCC ist ein vollwertiger Kompiler.
> Welcher weitestgehend identisch mit seinen anderen GCC Brüdern ist.
> Vollwertige Implementierungen des aktuellen Sprachstandards. Die Grenzen
> dessen findet man in der Compilerdoku.
> Ja, sicher, ein paar Besonderheiten gibt es auf kleinen µC
> Die C++ STL ist nicht dabei, und Exceptions sind üblicherweise
> deaktiviert.

GNU gcc compiler collection, richtig ist ein supper compiler unter unix 
ABER jeder compiler ist auf eine prozessor architecktur und sein 
steuerwerk zugeschnitten, dass bedeutet mit einem xc8 compiler wirst du 
whol kaum fur 32 o. 64 bit Architeckturen compilieren koennen
#5705181
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> ber das STK500 etc. protocoll , derren
> programmer habe ich noch nicht werde ich aber morgen kaufen;)

Hi,
da die PCs heute keine "echten" seriellen Schnittstellen mehr aufweisen, 
wäre der Adapter USB 2.0 Type-A  Delock 62589, dessen Chip sich auch mit 
Windows10 verträgt, empfehlenswert. Habe ich selber ausprobiert. Mit der 
MOS Chip COM/ LPT Steckkarte geht es aber ein bisschen schneller und 
auch mit den Full Handshakes. Aber fürs flashen reicht der USB-Adapter 
vollauf. Wie gesagt, etliche Probleme mit der Ansprache des STK500 
basieren auf der Umwandlung des USB auf Seriell und der Unzulänglichkeit 
der verwendeten Adapter.
Der Delock oben tut seie Arbeit, nur braucht man noch einen Gender 
Changer oder die Muttern rausdrehen, sonst passt der Stecker nicht.

ciao
gustav
#5705188
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> ABER jeder compiler ist auf eine prozessor architecktur und sein
> steuerwerk zugeschnitten, dass bedeutet mit einem xc8 compiler wirst du
> whol kaum fur 32 o. 64 bit Architeckturen compilieren koennen

Spielt nur für den Input gar keine Rolle was da hinten rausfällt. Rein 
kommt C und Bitoperationen sind überall gleich. Bei jedem Controller 
musst du irgendwann einzelne Bits in einem Byte oder Word setzen und 
löschen. Und das geht in C immer gleich. Und eine 0 zu schieben ist in 
jeder Programmiersprache und auf jeder Architektur sinnlos, Herr 
Ingenieur.
#5705193
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> arbeite mit Atmel studio 7, aber das STK500 etc. protocoll , derren
> programmer habe ich noch nicht werde ich aber morgen kaufen;)

Kauf dir ein PICkit4, das sollte soweit ich weiß sogar unter Atmel 
Studio verwendbar sein. Wenn nicht dann könntest du auch MPLABX als IDE 
verwenden.
Nich überall beliebt, aber eventuell zukunftssicherer. Evtl. ginge dann 
auch MPLAB Snap als Programier/Debug Tool. Welcher AVR genau?
Gast #5705194
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> mir hats aber AVR angetan

In meiner kleinen Arduino Welt gibt es das _BV() Macro.
_BV heißt BitValue
Das wäre sicherlich auch was für dich!

Definiert, ist es in etwa so:
#define _BV(wertigkeit) (1<<wertigkeit)

Merke:
Es macht keinen Sinn hier, eine Null zu schieben.

Damit wird dein Programm zu sowas:
1
#define F_CPU 8000000UL
2

3

4
#include<avr/io.h>
5
#include<util/delay.h>
6

7

8
int main()
9
{
10
  DDRC  &= ~_BV(PC5); // config - PortC PIN 5 als INPUT
11
  PORTC |= _BV(PC5);  // pullup aktivieren
12

13
  DDRB  |= _BV(PB0);  // configuring PortB0 als output
14
  PORTB &= ~_BV(PB0); // OFF
15

16
  while(1)
17
  {
18
    if(not(PINC & _BV(PC5))) // invers abfragen
19
    {
20
       PORTB |= _BV(PB0); // High setzen
21
       _delay_ms(500);
22
       PORTB &= ~_BV(PB0);// Low setzen
23
       _delay_ms(500);
24
    }
25
    else
26
    PORTB &= ~_BV(PB0);// Low setzen
27
  }
28
  return 0;
29
}
Gast #5705223
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> GNU gcc compiler collection, richtig ist ein supper compiler unter unix
> ABER jeder compiler ist auf eine prozessor architecktur und sein
> steuerwerk zugeschnitten, dass bedeutet mit einem xc8 compiler wirst du
> whol kaum fur 32 o. 64 bit Architeckturen compilieren koennen

Du hörst mir leider nicht verstehend zu...

Ich sprach ausdrücklich vom Sprachstandard und (nahezu) vollständiger 
implementiereung dessen.
#5705229
Lesenswert?

Hi,
diese Bitmasken begegnen einem öfter:
Die machen dann deutlich, was bewirkt wird, welche Funktion ausgewählt 
wurde.
Die Eingabe von Ziffern egal nach welcher "Konvention" würde das nicht 
verdeutlichen, obwohl das Programm genauso kompiliert wird und 
funktioniert. Wie gesagt dann noch targetspezifisch. Das geht dann mit 
der Bitmaske einfacher.

Volker S. schrieb:
> Atmel Studio wird vermutlich nicht mehr groß weiter entwickelt und auch
> keine Implementierung neuer Tools erhalten...

Nun ja, wie gesagt, bei mir läuft die Uhr manchmal rückwärts.
Karl B. schrieb:
> Danach hakelt es etwas bei mir,so dass ich wieder von Version 6 auf 4.18
> downgegradet habe.

Der TO wollte sich doch afaik ursprünglich mit AVRs genauer 
auseinandersetzen.
M.Eng Ing. Daniel D. schrieb:
> Ich Bescheaftige mich seit ca. 2 monaten mit der C Programmierung unter
> AVR(GCC)

ciao
gustav


P.S.: Der Dateiname ist mit "Bitschieben" irreführend.
Hier wird nichts geschoben, sondern gesetzt. Obwohl einem diese 
Nomenklatur ganz schön sophisticated vorkommen kann.

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#IO-Register_als_Parameter_und_Variablen

Datenrichtung bestimmen. Da stehts.
"...
// übersichtliche Alternative - Binärschreibweise, aber kein ISO-C
  DDRB = 0b00011111;

  // Ausführliche Schreibweise: identische Funktionalität, mehr 
Tipparbeit
  // aber übersichtlicher und selbsterklärend:
  DDRB |= (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3) | (1 << 
DDB4);..."
Angehängte Dateien:
#5705274
Lesenswert?

Karl B. schrieb:
> Der TO wollte sich doch afaik ursprünglich mit AVRs genauer
> auseinandersetzen.

Schon, aber die Stichworte Linux und XC8 die von ihm gebracht wurden 
machen die Verwendung von MPLABX nicht mehr allzu exotisch.
Just gerade als ich weitet oben gepostet habe (genau um 11:02)bekam ich 
eine e-mail mit dem Betreff: "AVR®-Design mit MPLAB® X vereinfachen"

<edit>
Bin mal gespannt, wei lange es noch dauert, bis auch für die Atmel 
Controller die Bitfelder in den Prozessorheadern eingebaut werden.
So dass man dann auch hier schreiben kann:

PORTBbits.PORTB0 = 0;

Läuft natürlich alles auf den selben Maschinencode hinaus,
aber ich finde es sehr übersichtlich und Anfängerfreundlich!
Angehängte Dateien:
Beitrag #5705380 wurde von einem Moderator gelöscht.
Gast #5705399
Lesenswert?

Volker S. schrieb:
> <edit>
> Bin mal gespannt, wei lange es noch dauert, bis auch für die Atmel
> Controller die Bitfelder in den Prozessorheadern eingebaut werden.
> So dass man dann auch hier schreiben kann:
>
> PORTBbits.PORTB0 = 0;
>
> Läuft natürlich alles auf den selben Maschinencode hinaus,
> aber ich finde es sehr übersichtlich und Anfängerfreundlich!

Ich habe es mir mittlerweile, in meiner kleinen Welt, angenehm
eingerichtet.

Im Anhang mal ein Beispiel.
Die Libs gerne auf Wunsch.
Angehängte Dateien:
Gast #5705902
Lesenswert?

Falls du uns nicht verarschen willst, schlage ich Dir dieses Buch vor, 
das scheint zu deinem Kenntnisstand zu passen: 
http://stefanfrings.de/mikrocontroller_buch/index.html

Für deine Konkrete Frage hilft wohl Band 1 Kapitel 4.2.20, 4.4, 4.11, 
6.7
Ich empfehle Dir aber, alles zu lesen.

Das könnte auch helfen: 
https://lehrerfortbildung-bw.de/u_berufsbezogen/profil/technik/fb3/etechnik/material/zahlen_s/

Hier kannst du die Umrechnung der Zahlensysteme und die Wirkung der 
Shift Operatoren schnell durchprobieren: 
https://www.miniwebtool.com/bitwise-calculator/bit-shift/
#5705944
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> ich bin Ingenieur fur Eingebettete Systeme und Microsystem Entwicklung
> sowie fur Automatisierungs Technologie.

Hallo, ich wundere mich doch sehr, dass dem Ing. offensichtlich simple 
Grundlagen der Mathematik fehlen. Sobald irgendwo in Komputer (im 
weitesten Sinne) eingeführt wird, haut man dir die Zahlensysteme um die 
Ohren. Und wenn du dann noch das Datenbuch deines Prozessors aufschlägst 
oder eine "Inc-Datei" anschaust, dann hast du alle relevanten 
(Register)-Namen und ihre Bedeutung zusammen. Dort findest du auch 
erklärt, was dein Compiler unter so etwas wie "PC <<2" 
versteht...usw...Lesen reicht dann eigentlich!
Gruß Rainer
OP #5705955
Lesenswert?

Rainer V. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> ich bin Ingenieur fur Eingebettete Systeme und Microsystem Entwicklung
>> sowie fur Automatisierungs Technologie.
>
> Hallo, ich wundere mich doch sehr, dass dem Ing. offensichtlich simple
> Grundlagen der Mathematik fehlen. Sobald irgendwo in Komputer (im
> weitesten Sinne) eingeführt wird, haut man dir die Zahlensysteme um die
> Ohren. Und wenn du dann noch das Datenbuch deines Prozessors aufschlägst
> oder eine "Inc-Datei" anschaust, dann hast du alle relevanten
> (Register)-Namen und ihre Bedeutung zusammen. Dort findest du auch
> erklärt, was dein Compiler unter so etwas wie "PC <<2"
> versteht...usw...Lesen reicht dann eigentlich!
> Gruß Rainer

liber Rainer, es geht mir doch nicht um die mathematik, ich wollte 
einfach nur wissen wie ich die portnamen in hex und binar schreibe
#5706082
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> bin gerade einige buscher am abarbeiten ... ausschliesslich
> avr-gcc.....ich bedanke mich herzlich bei und fur eure muhen!!!

...sorry, ich habe dir doch eben erklärt, wie du vorgehen sollst...und 
könnte es sein, dass du Inder bist oder aus Venezuela schreibst??? Will 
damit auf keinen Fall Menschen aus Indien oder anderen "weit weg" 
Ländern diskriminieren!
Gruß Rainer
#5706182
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> auf den tastaturen ist die deutsche ortographie nicht
> vorhanden!

Aber eine Großschreibtaste werden die doch wohl haben? Meine Tastatur 
hat sogar zwei davon.

M.Eng Ing. Daniel D. schrieb:
> Ingenieur fur Eingebettete Systeme und Microsystem Entwicklung
> sowie fur Automatisierungs Technologie.

Macht nur mir das Angst, dass jemand der keine Ahnung von binären 
Zahlensystemen hat und Nullen shiften will vielleicht die Steuerung für 
mein nächstes Auto entwickelt?

Tipp:

PINC ist nicht Pin-C, sondern Port INput C, als Gegenstück zu PORTC, was 
der Output ist. Damit ist immer der gesamt Port, also alle 8 (oder 
weniger) Portpins gemeint.

Du schreibst oder liest mit PORTC und PINC immer den kompletten Port - 
auch wenn intelligente Compiler mitunter aus einem PORTC |= 1<<PC5 ein 
sbi PORTC, PC5 machen, weil sie merken dass Du nur einen Portpin 
änderst.
Gast #5706207
Lesenswert?

Volker S. schrieb:

> <edit>
> Bin mal gespannt, wei lange es noch dauert, bis auch für die Atmel
> Controller die Bitfelder in den Prozessorheadern eingebaut werden.
> So dass man dann auch hier schreiben kann:
>
> PORTBbits.PORTB0 = 0;
>
> Läuft natürlich alles auf den selben Maschinencode hinaus,
> aber ich finde es sehr übersichtlich und Anfängerfreundlich!

Macht die neue atmega 0-series nicht genau das?
OP #5706344
Lesenswert?

Rainer V. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> bin gerade einige buscher am abarbeiten ... ausschliesslich
>> avr-gcc.....ich bedanke mich herzlich bei und fur eure muhen!!!
>
> ...sorry, ich habe dir doch eben erklärt, wie du vorgehen sollst...und
> könnte es sein, dass du Inder bist oder aus Venezuela schreibst??? Will
> damit auf keinen Fall Menschen aus Indien oder anderen "weit weg"
> Ländern diskriminieren!
> Gruß Rainer

hallo reiner, du hast recht, ich schreibe aus mexico, bin aber aus 100% 
deutscher, in mexico wird eine tochtergesellschaft meiner firma eroffnet 
daher der landeswechsel.....sehr aufmerksamm
OP #5706345
Lesenswert?

Karl K. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> auf den tastaturen ist die deutsche ortographie nicht
>> vorhanden!
>
> Aber eine Großschreibtaste werden die doch wohl haben? Meine Tastatur
> hat sogar zwei davon.
>
> M.Eng Ing. Daniel D. schrieb:
>> Ingenieur fur Eingebettete Systeme und Microsystem Entwicklung
>> sowie fur Automatisierungs Technologie.
>
> Macht nur mir das Angst, dass jemand der keine Ahnung von binären
> Zahlensystemen hat und Nullen shiften will vielleicht die Steuerung für
> mein nächstes Auto entwickelt?
>
> Tipp:
>
> PINC ist nicht Pin-C, sondern Port INput C, als Gegenstück zu PORTC, was
> der Output ist. Damit ist immer der gesamt Port, also alle 8 (oder
> weniger) Portpins gemeint.
>
> Du schreibst oder liest mit PORTC und PINC immer den kompletten Port -
> auch wenn intelligente Compiler mitunter aus einem PORTC |= 1<<PC5 ein
> sbi PORTC, PC5 machen, weil sie merken dass Du nur einen Portpin
> änderst.

ich bin hersteller von industriellen cnc und roboter 
bearbeitungszentren....ja und auch fur autos entwickeln wir embedded 
systems, aber sehe hier kein zusammenhang, bis jetzt haben wir 1A 
empfehlung.....

1 PORT hat 3 register soweit ich das verstehe
OP #5706346
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Karl K. schrieb:

>>
>> Tipp:
>>
>> PINC ist nicht Pin-C, sondern Port INput C, als Gegenstück zu PORTC, was
>> der Output ist. Damit ist immer der gesamt Port, also alle 8 (oder
>> weniger) Portpins gemeint.
>>
>> Du schreibst oder liest mit PORTC und PINC immer den kompletten Port -
>> auch wenn intelligente Compiler mitunter aus einem PORTC |= 1<<PC5 ein
>> sbi PORTC, PC5 machen, weil sie merken dass Du nur einen Portpin
>> änderst.
>
> ich bin hersteller von industriellen cnc und roboter
> bearbeitungszentren....ja und auch fur autos entwickeln wir embedded
> systems, aber sehe hier kein zusammenhang, bis jetzt haben wir 1A
> empfehlung.....
>
> 1 PORT hat 3 register soweit ich das verstehe

ich bleibe bei der binardaten verarbeitung, damit komme ich besser 
zurecht, ich habe eigene formeln die auf binarmathematik basieren aber 
das hat uberhaupt nichts damit zu tuen wie man eine alphabetische 
anweisung eines ports oder pins in hex oder dezimal schreibt...PORTC |= 
1<<PC5 diese anweisung kann man in 3 formen oder auch mehr schreiben ich 
wollte wissen wie ich sie ubersetze...weil ich es mit der normalen 
potenz nicht hinbekomme hex ist ein muster aus 4BITS = 1BYTE und basiert 
auf der potenz 2^16
#5706354
Lesenswert?

Ja vielleicht wärs leichter wenn Du eine gewisse Höflichkeit an den Tag 
legen würdest und dazu gehört auch das Benutzen der Großmachtaste - kann 
meine Kleene und die ist in der 2. Klasse und nicht Master of Eng.

Tipp: Datenblatt. Da steht das drin mit den Ports und warum die so 
heissen. Das hat nämlich überhaupt nix mit Hex zu tun.
#5706357
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> ich bin hersteller von industriellen cnc und roboter
>> bearbeitungszentren....

...nun kann mich gar nichts mehr erschüttern...
Erinnert mich an eine "hochkarätige" Sitzung vor Jahren, als mich mein 
Chef zur Seite nahm und fragte: "Wie war das ohmsche Gesetz noch mal???" 
Und der hatte nun GottseiDank schon ewig nichts mehr mit dem operativen 
Geschäft zu tun.

M.Eng Ing. Daniel D. schrieb:
> aber sehe hier kein zusammenhang, bis jetzt haben wir 1A
> empfehlung.....

ich auch nicht...
Gruß Rainer
#5706422
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> aber
> das hat uberhaupt nichts damit zu tuen wie man eine alphabetische
> anweisung eines ports oder pins in hex oder dezimal schreibt...PORTC |=
> 1<<PC5 diese anweisung kann man in 3 formen oder auch mehr schreiben ich
> wollte wissen wie ich sie ubersetze...weil ich es mit der normalen
> potenz nicht hinbekomme hex ist ein muster aus 4BITS = 1BYTE und basiert
> auf der potenz 2^16

Das mit den 100% deutsch solltest du nochmal nachrechnen. Was du hier 
sagen wolltest, bleibt sicher vielen ein Rätsel,  ;-)

Davon abgesehen, sind 4 Bit nur ein halbes Byte (oder ein Nibble) und 
das Hex-System basiert auf der Basis 16 (16^x)
#5706423
Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> weil ich es mit der normalen potenz nicht hinbekomme hex ist ein muster
> aus 4BITS = 1BYTE und basiert auf der potenz 2^16

Ouch... 4 Bit sind 1 NIBBLE. 8 Bit sind 1 Byte!
Und sie basieren auch nicht auf der Potenz 2^16!

... Also dass so oft der angebliche M. Eng. betont wird und dann noch 
nicht mal solche simplen Grundlagen bekannt sind (von der fehlenden 
Gross- und Kleinschreibung ganz zu schweigen) lässt doch sehr GROSSE 
Zweifel an der vermeintlich Qualifikation entstehen.

Und siehst du, der ganze Text enthaelt keinerlei Umlauten oder andere 
Buchstaben, welche auf einer mexikanischen Tastatur nicht vorhanden sind 
- und er ist trotzdem orthographisch (mindestens halbwegs) sauber!
Persönliche Seite #5706449
Lesenswert?

Stefan S. schrieb:
> Und siehst du, der ganze Text enthaelt keinerlei Umlauten oder andere
> Buchstaben, welche auf einer mexikanischen Tastatur nicht vorhanden sind
> - und er ist trotzdem orthographisch (mindestens halbwegs) sauber!

Ich bin kein Ingenieur und kann mir trotzdem ein anderes Tastaturlayout 
unter Windows installieren und anderssprachige Umlaute und Sonderzeichen 
tippen... ;-)
#5706672
Lesenswert?

Erst einmal herzlichen Glückwunsch, du hast deinem Berufsstand und 
deiner Firma einen grossen Gefallen getan. Deine Threads befinden sich 
bei Google ganz oben.

Und jetzt fangen wir mal ganz von vorne an ...

0b00100000 = 0x20 = 040(oktal) = 32 = 1 << 5 = 128 >> 2

0b11011111 = ~0b00100000

 1 & 0 = 0
 1 | 0 = 1

Daraus folgt:
1
#define PC5 5 
2
PORTC|= (1<<PC5);  // PC5 = 1   
3
PORTC&= ~(1<<PC5); // PC5 = 0

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