Forum: Mikrocontroller und Digitale Elektronik PORT/Register Beschreibung in AVR


von Frank M. (m-eng_daniel)


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

von Einer K. (Gast)


Lesenswert?

> if((PINC&(32<<0)))
Sieht komisch aus!

Vermutlich besser lesbar
1
 if(PINC & (1<<PINC5))
Ja, du kannst auch PC5 statt PINC5 verwenden.

> DDRC &= ~(0 << PC5);
Das ist wirkungslos.

von Frank M. (m-eng_daniel)


Lesenswert?

Arduino Fanboy D.

Vielen Dank fur deine Antwort....Woher weisst du das 32<<0 PINC5 ist?

: Bearbeitet durch User
von Jim M. (turboj)


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.

von Frank M. (m-eng_daniel)


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

von Frühmorgens (Gast)


Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> ... projetziere ...

Wuff. Könntest du mal erklären, was du meinst?

von Nico W. (nico_w)


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.

von Dieter F. (Gast)


Lesenswert?

Schau Dich mal bei den Artikeln hier um - grundlegend:

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

von my2ct (Gast)


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

von Frank M. (m-eng_daniel)


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....

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

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?

von Frank M. (m-eng_daniel)


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

von Volker S. (vloki)


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.

: Bearbeitet durch User
von Frank M. (m-eng_daniel)


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

von Volker S. (vloki)


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?

: Bearbeitet durch User
von Bernd N. (_bn_)


Lesenswert?


von Bernd N. (_bn_)


Lesenswert?


von Volker S. (vloki)


Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> DDRC &= ~(0 << PC5); //config - PortC PIN 0 als INPUT

Sorry, kann das mal einer überprüfen, der diesen (fürchterlichen;-) Stil 
gewohnt ist? Für mich sieht das nicht so aus, als würde es das tun, was 
es vermutlich sollte. (von 5<->0 mal abgesehen) Müsste es nicht 
~(1<<PC5) sein?

von Frank M. (m-eng_daniel)


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

von Frühmorgens (Gast)


Lesenswert?

Bei den Bildschirmen in Mexiko ist jede Hilfe fraglich :-(

von Frank M. (m-eng_daniel)


Lesenswert?

Frühmorgens schrieb:
> Bei den Bildschirmen in Mexiko ist jede Hilfe fraglich :-(

naja kaufe meine hardware eher in deutschland, kostet zwar versand aber 
geht!

von Volker S. (vloki)


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?

: Bearbeitet durch User
von Frank M. (m-eng_daniel)


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?

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


Lesenswert?


von Volker S. (vloki)


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!

von Frank M. (m-eng_daniel)


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

von Einer K. (Gast)


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.

von Karl B. (gustav)


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

von Volker S. (vloki)


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...

: Bearbeitet durch User
von Frank M. (m-eng_daniel)


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?

von Frank M. (m-eng_daniel)


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?

von Volker S. (vloki)


Lesenswert?

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 ?

von Cyblord -. (cyblord)


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".

von Volker S. (vloki)


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?

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Karl B. schrieb:
> Atmel Studio4 "for beginners" wäre als Veranschaulichung ganz gut.

Hi,
war noch mit Bilchen machen beschäftigt.

ciao
gustav

P.S.: Atmel Studio kann auch C nicht nur asm

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


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?

von Frank M. (m-eng_daniel)


Lesenswert?

Karl B. schrieb:
> Karl B. schrieb:
>> Atmel Studio4 "for beginners" wäre als Veranschaulichung ganz gut.
>
> Hi,
> war noch mit Bilchen machen beschäftigt.
>
> ciao
> gustav
>
> P.S.: Atmel Studio kann auch C nicht nur asm

benutzt du STK500 etc. RT programming

von Cyblord -. (cyblord)


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?

: Bearbeitet durch User
von Volker S. (vloki)


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!

von Karl B. (gustav)


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

: Bearbeitet durch User
von Frank M. (m-eng_daniel)


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

von Cyblord -. (cyblord)


Lesenswert?

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.

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


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

von Einer K. (Gast)


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.

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


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

von Karl B. (gustav)


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

von Volker S. (vloki)


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

Jo, das hat aber mit deinen bisherigen Problemen hier verdammt wenig zu 
tun!
Verwendest du den XC8?

: Bearbeitet durch User
von Cyblord -. (cyblord)


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.

: Bearbeitet durch User
von Volker S. (vloki)


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?

von Einer K. (Gast)


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
}

von Cyblord -. (cyblord)


Lesenswert?

Arduino Fanboy D. schrieb:
> In meiner kleinen Arduino Welt gibt es das _BV() Macro.
> _BV heißt BitValue

Das hat mit Arduino nichts zu tun, das gab es schon immer in der 
avr-libc.

von Volker S. (vloki)


Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> ich arbeite unter UNIX/LINUX!

Vielleicht auch ein Grund, sich mal MPLABX an zu schauen!
https://www.microchip.com/AVRandMPLAB

von Einer K. (Gast)


Lesenswert?

Cyblord -. schrieb:
>  das gab es schon immer in der avr-libc.

Dann steht der Nutzung ja nichts im Wege.
Und dass unsägliche schieben einer Null hätte damit ein Ende.

von Cyblord -. (cyblord)


Lesenswert?

Arduino Fanboy D. schrieb:
> Cyblord -. schrieb:
>>  das gab es schon immer in der avr-libc.
>
> Dann steht der Nutzung ja nichts im Wege.
> Und dass unsägliche schieben einer Null hätte damit ein Ende.

Ja, nur wenn das jemand braucht damit er keine Nullen schiebt, dann 
stimmt halt grundsätzlich was nicht. Das sollte man nicht mit Makros 
kaschieren.

: Bearbeitet durch User
von Volker S. (vloki)


Lesenswert?

Volker S. schrieb:
> Kauf dir ein PICkit4, das sollte soweit ich weiß sogar unter Atmel
> Studio verwendbar sein.

Ääääähhhh sorry, das war wohl anders rum. MPLABX unterstützt AtmelICE.
Atmel Studio wird vermutlich nicht mehr groß weiter entwickelt und auch 
keine Implementierung neuer Tools erhalten...

von Einer K. (Gast)


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.

von Karl B. (gustav)


Angehängte Dateien:

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);..."

: Bearbeitet durch User
von Volker S. (vloki)


Angehängte Dateien:

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!

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich habe gerade nur das obere drittel gelesen und dabei richtig Angst 
bekommen.

In ein paar Jahren soll ich mich in ein selbstfahrendes Elektroauto 
setzen - wirklich?

von Peter D. (peda)


Lesenswert?

Man kann sich die Arbeit vereinfachen und übersichtlicher sieht es auch 
aus:

Beitrag "Re: Port als Variable"

Beitrag #5705380 wurde von einem Moderator gelöscht.
von Volker S. (vloki)


Lesenswert?

Peter D. schrieb:
> Man kann sich die Arbeit vereinfachen...

*sbit.h* muss ich mir merken, falls ich mal in die Verlegenheit kommen 
sollte einen AVR programmieren zu sollen ;-)

von Einer K. (Gast)


Angehängte Dateien:

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.

von Stefan F. (Gast)


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/

von Rainer V. (a_zip)


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

von Frank M. (m-eng_daniel)


Lesenswert?

Volker S. schrieb:
> M.Eng Ing. Daniel D. schrieb:
>> ich arbeite unter UNIX/LINUX!
>
> Vielleicht auch ein Grund, sich mal MPLABX an zu schauen!
> https://www.microchip.com/AVRandMPLAB

habe ich, besitze die komplette MPLABX IDE und MPLAB IDE mit allen 
plugins und compilern , habe auch das PICKIT3

von Frank M. (m-eng_daniel)


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

von Stefan F. (Gast)


Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> liber Rainer, es geht mir doch nicht um die mathematik, ich wollte
> einfach nur wissen wie ich die portnamen in hex und binar schreibe

Das Umstellen einer Zahl in unterschiedliche Zahlensysteme ist 
Bestandteil des Mathe Unterrichts in der 8. Klasse. Meine Tochter hat 
das Thema gerade in der Schule.

von Volker S. (vloki)


Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> , habe auch das PICKIT3

Wird leider bei AVR nicht viel nützen. Da geht erst was mit dem PICkit4 
oder dem SNAP.

von Frank M. (m-eng_daniel)


Lesenswert?

Bin mittlerweile dahintergekommen die operatoren waren mein 
problem...bin gerade einige buscher am abarbeiten ... ausschliesslich 
avr-gcc.....ich bedanke mich herzlich bei und fur eure muhen!!!

gruss

M.Eng Daniel André

von Stefan F. (Gast)


Lesenswert?

> buscher

Die Dinger heissen "Bücher"

> muhen

Eine Kuh macht "muh" - viele Kühe machen "Mühe".

Nicht "muhen".

von Rainer V. (a_zip)


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

von Stefan F. (Gast)


Lesenswert?

Ob die Inder wohl den Spruch mit den Kühen kennen? Ich muss mal meinen 
Kollegen fragen, wenn er aus dem Urlaub zurück ist.

von Rainer V. (a_zip)


Lesenswert?

Stefanus F. schrieb:
> Ob die Inder wohl den Spruch mit den Kühen kennen? Ich muss mal meinen
> Kollegen fragen, wenn er aus dem Urlaub zurück ist.

Du meinst wohl diese Frage: "5 Kühe geben in 5 Tagen 50l Milch. Wieviel 
Kühe geben in 10 Tagen 100l Milch?" Es ist allerdings nicht klar, ob es 
sich um indische Kühe handelt!
Gruß Rainer

von Anton M. (antonm)


Lesenswert?

M.Eng Ing. Daniel D. schrieb:
> Es Freut mich mittlerweile mietglied in diesem besonders interessantem
> und lehreichem Forum zu sein, das ich schon langere zeit eifrig
> verfolge!

Der Eindruck dürfte sich mittlerweile relativiert haben.

von Stefan F. (Gast)


Lesenswert?

Hier mit zu machen erfordert schon ein dickes Fell, aber man kann hier 
wirklich viel lernen - über Elektronik und über Menschen :-)

von Karl K. (karl2go)


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.

von Bastler zu (Gast)


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?

von J. Zimmermann (Gast)


Lesenswert?

Bastler zu schrieb:
> Macht die neue atmega 0-series nicht genau das?

Nein. Und hoffentlich auch in Zukunft nicht. An der Stelle sollten die 
PIGs mal vom Kopf auf die Füsse gestellt werden.

mfg
Achim

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


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

von Frank M. (m-eng_daniel)


Lesenswert?

also es ist wirklich schwer hier ohne dauernd absolut sinnlose komentare 
lesen zu mussen und ohne kritik eine frage stellen zu koennen!!!

von Karl K. (karl2go)


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.

von Rainer V. (a_zip)


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

von Volker S. (vloki)


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)

von Stefan S. (chiefeinherjar)


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!

von Armin K. (-donald-) Benutzerseite


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... ;-)

von Cyblord -. (cyblord)


Lesenswert?

Armin K. schrieb:
> Ich bin kein Ingenieur und kann mir trotzdem ein anderes Tastaturlayout
> unter Windows installieren und anderssprachige Umlaute und Sonderzeichen
> tippen... ;-)

Ein M.Eng. kann das natürlich auch. Sobald seine Mama eintrifft es für 
ihn erledigt.

von Dieter F. (Gast)


Lesenswert?

Interessierten sei der 2.-Thread empfohlen :-)

Beitrag "Serial 232/TTL Kommunikation mit Atmega"

von Cyblord -. (cyblord)


Lesenswert?

Dieter F. schrieb:
> Interessierten sei der 2.-Thread empfohlen :-)
>
> Beitrag "Serial 232/TTL Kommunikation mit Atmega"

Ja, da fragt man sich ob der Herr Ing. auch irgendwas kann oder wirklich 
bei allen seinen Aufgaben derart ins Schwimmen kommt.

von Hans-Georg L. (h-g-l)


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

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.