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
> 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.
Arduino Fanboy D. Vielen Dank fur deine Antwort....Woher weisst du das 32<<0 PINC5 ist?
:
Bearbeitet durch User
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.
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
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.
Schau Dich mal bei den Artikeln hier um - grundlegend: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
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
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
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?
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
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
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
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
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?
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
Frühmorgens schrieb: > Bei den Bildschirmen in Mexiko ist jede Hilfe fraglich :-( naja kaufe meine hardware eher in deutschland, kostet zwar versand aber geht!
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
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?
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
Bernd N. schrieb: > https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ausg.C3.A4nge vielen dank bernd, werde es durchstudieren, grusse
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!
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
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.
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
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
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?
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?
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 ?
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".
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?
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
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
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?
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
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
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!
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
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
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.
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
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
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.
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
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
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
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
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
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?
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 | }
|
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.
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
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.
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
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...
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.
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
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
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?
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.
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 ;-)
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.
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/
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
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
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
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.
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.
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é
> buscher Die Dinger heissen "Bücher" > muhen Eine Kuh macht "muh" - viele Kühe machen "Mühe". Nicht "muhen".
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
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.
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
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.
Hier mit zu machen erfordert schon ein dickes Fell, aber man kann hier wirklich viel lernen - über Elektronik und über Menschen :-)
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.
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?
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
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
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
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
also es ist wirklich schwer hier ohne dauernd absolut sinnlose komentare lesen zu mussen und ohne kritik eine frage stellen zu koennen!!!
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.
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
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)
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!
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... ;-)
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.