-
Thread
STM32F4 Portpins mit Variabler setzen in C
[c] GPIOx->ODR = PortVal; [/c] Wobei GPIOx dein Port ist wo du die Bits setzen willst und PortVal das Bitmuster als INT mit 16 Bits ist. Heisst also, du musst deine 8 Bit INT in eine passende mit 16
schreiben. Damit kann ich dann flexibel irgendwelche Portpins nutzen. Ich müsste dann also die einzelnen 8 Bits der Variablen mit If abfragen. Wie selektiert man nun jeweils ein einzelnes Bit? Grüße Jörg
-
Thread
IR Fernbedienung Signale auf µC verarbeiten
jedem Bit neu synchronisiert werden. > Aber ich schaue jetzt schon so lange auf den c-code und sehe den Wald > nicht mehr. Müsste doch machbar sein zu sagen, wenn der Pegel 1 über > mehr als 6 Abtsatungen
zu folgen. Zerlege die Aufgabenstellung in kleine Module und setze jedes einzeln um, als da wären: A. Ein "Paar" Pulsdauer + Pausendauer erkennen. B. Startbit anhand A) erkennen C. Datenbit anhand A) erkennen D. Speichern der Bits E. Aufteilung in Adresse
-
Thread
16bit Bus mit AVR
Hallo Für ein kleines Experiment bräuchte ich einen 16bit Bus. Dazu habe ich bei im Register XMCRA das Bit SRE gesetzt und kann so PORTA und C gemeinsam als 16bit Adressport benutzen. Wie sprich ich aber den Port an? Kann ich einfach einen 16Bit Wert auf den
haben sie dir nur ins Fressen getan? Getroffene Hunde bellen :-/ > Kann ich einfach einen 16Bit Wert auf den Port legen, z.B. PORTC=55FF ? Nein. Port C ist nur 8 Bit breit. 55FF ist keine Zahl (0x55FF schon eher). Du machst das z.B. so: [c] *(char*)0x3456 = 0x55; [/c]
-
Thread
Frequenzzähler mit PIC 16F628A
Config-Bits des µC richtig gesetzt?
bis zu 50 MHz zählen, da kann nichts synchronisiert sein. Zu LCD-Daten auf GND - Wenn ich im 4-Bit-Modus bin und das Busyflag abfrage, werden dann die vier unbenutzten Datenbits auch auf Ausgang umgeschaltet? Und welchen Pegel nehmen die dann an? Er hat hier keine Busy-Abfrage benutzt, die Datenbits
-
Thread
VHDL: Problem mit inout und signal
Moin Hab im SoPC Builder von Quartus leider nur SRAM Controller mit 32 Bits, auf dem DE2 Board sitzt aber einer mit 16 Bits. Nun will ich die Sache so verdrahten, dass die oberen 16 Bits in's Leere gehen (ich weis, nicht besonders sauber, aber egal). Die SoPC Komponente
eine extra Komponente sein). Wenn nun aber SigC 16bits, und SigA 32bits breit sind funktioniert das so nicht mehr. Lässt es sich dann wirklich ausschließlich über port map realisieren? Ich hab schon sowas probiert wie [vhdl] entity TopLevel
-
Thread
ADuC706x manuell flashen (ARM7TDMI)
sich nicht getan, die LED am Port P1.6 leuchtet weiter. Ich verwendete dafür folgenden Code: [c] #define BIT24 0x1000000 #define BIT30 0x40000000 #include <Analogdevices\ioaduc7060.h> #include <intrinsics.h> # include "stdio.h" # include "string.h" int main(void) { POWKEY1 = 0x1; POWCON0 = 0x78; // Set core to max CPU speed of 10.24Mhz POWKEY2 = 0xF4; GP1DAT=BIT24+BIT30; //LED zum Test am P1.6 //Command Sequence for Executing a Mass Erase FEEDAT = 0x3CFF; FEEADR = 0x77C3; FEEMOD = FEEMOD|0x8; //Erase key
-
Thread
Multiplexing HILFE
gewünschte Funktion ausführt. Programmiertechnisch alles kein Problem bis auf dieses dauerhafte abfragen ich habe das bisher nur mit Polling gemacht würde gerne wissen ob das dauerhatfe Abfragen so geht :main() { while(true) { delay(30ms) if(input(pin_a0)){
Lukas Spielberger wrote: > Problem bis auf dieses dauerhafte abfragen ich habe das bisher nur mit > Polling gemacht würde gerne wissen ob das dauerhatfe Abfragen so geht > > :main() > { > > while(true) > { > delay(30ms) > if(input(pin_a0)){ >
-
Thread
Atmel ZigBit (ATZB-24-A2/B0) und XBee
Firmware möglich wäre, was ich nicht weiss). Dein Aufbau wird also immer sein: Sensor <--> µC <------------> Funk (ZigBee, WLAN) SPI SPI, UART, etc µC und Funk gibt es kombiniert als fertige Module evtl. mit frei programmierbaren µC (ZigBit??? bitt prüfen, ich habe das Datenblatt
>Das ATmega128RFA1 klingt zwar auch gut, da müsste ich aber in jedem Fall >mit dem uC arbeiten. ... ATmega128RFA1 und ZigBit sind bei Licht betrachtet das gleiche, sie unterscheiden sich nur im Gehaeuse und in den technischen Parametern, du hast in beiden Faellen einen AVR-Controller
-
Thread
20x4 lcd zeigt immer das gleiche an
); // D=1, C=1, B=0 lcd_command(0x10); // S/C=0, R/L=0 lcd_command(0x2C); //4bit, 5x10 [/c] Jedoch weiß ich noch nicht wie ich den makefile bearbeiten kann und inwiefern ich die einträge darin ändern muss. Bitte
0b00100000; lcd_enable(); lcd_command(0x07); // I/D=1, S=1 lcd_command(0x0E); // D=1, C=1, B=0 lcd_command(0x10); // S/C=0, R/L=0 lcd_command(0x2C); //4bit, 5x10 [/c]
-
Thread
Fortsetzung "Hausbusthread" im Forum "µC+Elektronik"
... das übers ganze programm frisst doch auch ne > menge zeit (ja ich weiss bringt den µC nicht um).. > > einfacher gehts doch nun nicht, oder? Die Geschichte mit "erst portb aus eeprom laden, dann pin1 abfragen" hab ich noch nicht ganz verstanden. Du wirst so oder so einen Task brauchen
oder daß du nach 5 Zyklen die Tasteneingänge entprellt hast... Wichtig ist, daß du z.B. "Einänge abfragen" und anschließend "Telegramme verschicken" von einander trennst (d.h. verschiedene Funktionen oder gar verschiedene C-Module), sonst wird der Code nur für diese eine Funktion brauchtbar, während bei
-
Thread
Tutorials zu PIC C Syntax und co.
Kann einen PIN mit [c]while(PORTD == 0x01)[/c] abfragen? Oder muss ich da über die Interrupts gehen, wenn ja wie?
an allen PIN des PORT D (mit Vorwiderstand). Port B ist per Taster auf VDD zu schalten.(Jeder Pin einzeln). Programm wie folgt: [c] TRISC = 1; TRISD = 0; PORTD = 0x00; delay(10000) if(0x01 == PORTC) { PORTD = 0xFF; } else { PORTD = 0x0F; } delay(10000) [/c] Hab die definitionen
-
Thread
Menu Designer für Grafik LCDs inklusive grafischem Editor
Tobias schrieb: > Wäre das ganze auch auf einem PIC lauffähig? Es handelt sich um 100% C Code. Wenn du also einen C Compiler verwendest, gibt es keinen Grund, der dagegen spricht.
XP 32bit + Lazarus 1.2.2: Menuedit compiliert, keine weiteren Tests durchgeführt Windows Vista 32bit + Lazarus 0.9.28.2 + Cygwin: Compiliert nicht, Lazarus zu alt [/code
-
Thread
CAN-Bus Management Senden/Empfangen
#6365789: > Sollten meine Daten vielleicht mehr werden bzw. die Erfordernis > eintreten, jede einzelne Nachricht bearbeiten zu wollen/müssen, müsste > ich mir also Gedanken über eine gute Implementierung eines Ringpuffers > machen. Dein CAN ist jetzt wie schnell? 100kBit/s? Licht- und Rolladen-Steuerung
lange Strecken, also muss die Datenrate eher niedrig angesetzt sein. Edit: bäh, überlesen, also 125kBit/s. Überlegt mal, wie lange eine einzelne Nachricht auf dem Bus unterwegs ist. Eine 1-Byte Botschaft mit 11 Bit Identifier ist schon mindestens 44 Bits lang. Das sind 352µs bei 125kBit/s, weniger
-
Thread
Arrays Vergleichen
Zwei Arrays sind gleich, wenn jede einzelne Zelle gleich ist. Du könntest eine Schleife machen, die bei jedem Durchgang jede Zellen mit dem gleichen Index vergleicht. ungefähr so: [c]int i; int sendok; for (i=0;i<data.length;i++){ if
Puuh, ich glaub ich muß dringend meine C-Kenntnisse erweitern. Danke für die Tips. Da ich die selbe Abfrage eventuell später noch mit anderen Pins als dem 0-ten machen möchte, werde ich Eddie´s Vorschlag mal versuchen. Vielen Dank
-
Thread
C Programm memory out of bounds
gewöhn dir die C Gepflogenheiten an. Teste NICHT explizit auf 0 oder 1, wenn es nicht sein MUSS. Hier muss es nicht sein. Du maskierst die vom PIND ein einzelnes Bit aus (indem alle anderen Bits auf 0 gesetzt werden)
. Mehr braucht es dazu nicht. Ob bei [c] PIND & ( 1 << PD3 ) [/c] die Werte 0 oder 8 rauskommen können, weil das Bit 3 entweder auf 0 oder auf 1 ist, ist recht uninteressant. 8 ist nicht 0 und gilt damit genauso als logisch wahr, wie
-
Thread
uC Programmiertechniken - Gibt es da Bücher?
die einzelnen Module zur Zusammenarbeit zu bringen und es bringt mehr überraschende Seiteneffekte mit sich. Nur so als Beispiel: Wenn ich bei einem 8 Bit AVR die I²C Schnittstelle einschalte, dann muss
ADXL345 */ if(EXTI_GetITStatus(EXTI_Line10) != RESET) { EXTI_ClearITPendingBit(EXTI_Line10); } } [/c]
-
Thread
LCD (HD44780) Amoklauf?
44780-lcd-Beitrag : ) Ich mach's kurz: Entwicklungsboard mikroelektronika easyavr5a uc Atmega8 c mit winavr/gcc 2x16 LCD, Industriestandard Leine Busy-Abfrage (RW nicht geroutet) Verdrahtung fix, siehe header. Hier der Header für die LCD-Funktionen: [c] /* lcd-routinen hd44780 4-bit */
Wie erwartet : ) Ich bekomm beim compilieren von main.c (und natprlich lcd_drv.c) ne Fehlermeldung, mit der ich mal gar nichts anfangen kann.. voltile struct bits... >Compiling C: lcd_drv.c >avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os
-
Thread
Zahl mit einem Taster schreiben Wie geht das?
Visual Basic > gibt es keine Bitmanipulation, Bist Du sicher??? Haben die Bytes in VB keine Bits?? Gibt es kein AND, OR, NOT, EOR?? Bitmanipulation ist kein kryptischer Befehl, sondern die Verfahrensweise, wie man einzelne Bits setzt, löscht oder kippt, ohne die anderen Bits dabei zu beeinflussen
und Flankenbit löschen, oder geht es wirklich darum, einzelne Bits zu setzen ? Nun auch das geht, ist aber zugegebenermaßen nicht lustig, eine 8-Bitzahl von 255 zu erreichen.... Gruß oldmax
-
Thread
Wie kann ich externe Datenspeicher ansprechen?
Das ist ein sogenanntes SIPP mit 265 kByte Speicherkapazität. Es ist mit 9 Bit Breite (8 Datenbits und ein Parity-Bit) organisiert. Die zwei gleichen Speicherbausteine sind einfache Page-Mode-DRAMs mit 256 k * 4 Bit Kapazität, das einzelne hat 256 k * 1 Bit Kapazität. Verbreiteter
rechnen müsste wenn ich diese Riegel verwende. Das fällt wohl in die gleiche Kathegorie wie die einzelnen Speichermodule (MB81C425-80B und HY53C256LS10) -> zu kleiner Speicher für den Aufwand. Was ist eigentlich der grundlegende Unterschied zwischen S-Ram, D-Ram und den anderen PC-Ramriegeln die es
-
Thread
Heizungssteuerung Trovis 5575 auslesen
das alles "Eingangsregister"? (Also keine Holding Register?) - Wo finde ich das Datenformat der einzelnen Register (also z.B. "Unsigned 16 bit (Big Endian)" oder "Signed 16 bit (Little Endian)" etc.? Z.B. die Adresse 9 "AussentempAF1": Da ist als Umrechnungsfaktor in der oben genannten Datei (5576-
Einstellungen der Trovis (5573-0003 FW 2.48) PA6: 247 (Stationsadresse) CO6-F01: 1 (Modbus aktiv) C06-F02: 0 (8 Bit Adressierung) (Habe aber auch schon mit "1" 16-Bt Adressierung probiert) C06-F03: 0 (Modemfunktion) (Habe auch schon 1 probiert) C06-F04: 0 (Auto. Modemkonfig) (Habe auch schon 0 probiert
-
Thread
Verständnis AVR Interrupts Gesperrt
. Da war es ihm wichtig, zu behaupten, dass I2C Adressen 8 Bit haben. Ihm wollte das R/W Bit der Adresse zurechnen. Hinweise auf irgendwelche Datenblätter und die I2C Spezifikation waren ihm komplett egal.
Marc V. vor einiger Zeit genauso verbohrt angegangen. > Da war es ihm wichtig, zu behaupten, dass I2C Adressen 8 Bit haben. Lügen auch noch? Ich habe nie behauptet, daß die Adresse 8 bit hat - nur daß es die oberen 7 bits sind. Ich habe aber behauptet, daß es deswegen Blödsinn ist, jedesmal
-
Thread
Cyclone: C ohne Buffer-Overflows
unübersichtlicher. Zusätzliche Kosten entstehen vor allem dadurch, dass Cyclone versucht, jede einzelne Funktion inhärent sicher zu machen, was evtl. dazu führt, dass Sicherheitsabfragen eingebaut werden müssen, die man in C guten Gewissens weggelassen hätte. Aber das gute Gewissen trügt eben manchmal
meckern und auch nicht eigenmächtig weitere Abfragen einzubauen. Leider nicht möglich ist eine selektive Deaktivierung der Compiler-Überprüfung in einzelnen Programmabschnitten (für die dann der Programmierer verantwortlich ist) bspw. mit einem Spezialkommentar
-
Thread
MODBUS - C Librariy für Microchip PIC 16Fxxx ?
ein einzelnes Register, erhält man auch nur ein einzelnes Register). Wenn man der seriellen Verbindung vertraut, kann man die CRC-Prüfung der empfangenen Telegramme auch unter den Tisch fallen lassen. Das ist
arbeiten. Man kann auch dort Bare Metal arbeiten oder eine Kombination. Ich bin mit einigen 8-bit uC Familien vertraut und konnte so ziemlich alles Portieren, falls es zweckmäßig war. Früher machte ich auch hobbymässig alles mit PICs. Aber da mußte ich mir die HW immer zuerst selber bauen. Heute
-
Thread
Bitdatenstruktur optimieren
einfachen RLE-Kodierung einiges an Speicher und auch etwas Laufzeit sparen. Da speicherst du nicht jedes Bit einzeln ab, sondern immer nur einen Bitwert zusammen mit der Anzahl an folgenden Bits, die diesen Wert haben. Karl Heinz Buchegger schrieb im Beitrag #2613615: > Tim T. schrieb: > >> uint32_t
ohne alle Bits einzeln anzufassen. Nur je größer diese Metastruktur gewählt wird, desto größer ist die Wahrscheinlichkeit das dort eben doch etwas drin fehlt.
-
Thread
welche Datentypen soll ich nehmen?
sie dann letztendlich auf µC, meist Arduino artige, von 8 Bit bis 64 Bit. Dabei ist dann schon so manche unerwartete Hürde aufgetreten.
bevorzugt die "Datengröße" des µC, uint8_t bei 8bit, uint16_t bei 16bit etc. Datentype ansolsten so groß wie nötig, so klein wie möglich. Gruß Robert
-
Thread
PIC16F627 Problem beim lesen von Eingängen mit Velleman k8048
4, 8 und verwenden ? Naja, weil deine Taster am Parallelport PORTA dranhängen. Und weil jede einzelne Leitung (Bit) eben die entsprechende Wertigkeit hat. Evtl. wird das klaren, wenn du die binäre Schreibweise nutzt mit "0b" Prefix (die allerdings nicht alle Compiler verstehen): // Bit 76543210
sollte es auch gehen Und eigentlich kannste die Prüfung auf den "Sollwert" auch weglassen, weil C ja die if Abfrage auswertet nach "true" oder "false", und somit kannst kürzer schreiben if ((PORTA & 0b00001000) // prüfe ob dieses Bit gesetzt ist Gruss
-
Thread
Auswahl von MC für Türschlussüberwachung
ausreichend Störfest sein). Für eine Rolltorsteuerung oder ein Codeschloss braucht man ja keine 10kBit/s oder sowas. Wenn der Krempel läuft kann man sich dran machen wie man so ein Master uC und Slave uC System aufzubauen hat. cu Hauke
Daten überträgt wird der Versand unterbrochen -> Datenverlust. Die Hardware-UART hat aber n Flag-Bit, das man abfragen kann ober der Puffer leer ist, also alle Daten raus sind. Es ist daher sinnvoll, den Programmablauf bzw. das Umschalten der Datenrichtung durch Abfrage dieses Flag zu unterbrachen
-
Thread
AtMega Usart Abfrage
Wo steht was von USART 2? Er will 2 bestimmte Tasten abfragen. Versuch es mal so: [c]if (strcmp(receive_a, "q") == 0)[/c] Vergess nicht #include <string.h>
Einzelne Zeichen sind manchmal trügerisch. [c] unsigned char nInd = 0; char foxtext[] = {"the quick brown fox jumps over the lazy dog\r\n"}; while(1) { Uart0_Write(foxtext[nInd++]);
-
Thread
PIN vs PORT beim OUTPUT
korrekt ist, als auch elektrisch alles passt, dann ist die einzige übrig bleibende Erklärung, dass dein µC kaputt ist.
und extern gegen Plus gezogen. Das kann man zwar abfragen, sowas sollte aber schon in der Schaltung gar nicht möglich sein.
-
Thread
-
Thread
Datentyp Formatierung
irgendwelcher Mist der dem Filestream entnommen wird. Ich habe nun folgendes geändert und schick dem Pi 32 Bit: fwrite(&c, sizeof(uint32_t), 1, f); ...unverändert stürzt es ab.
read(uart0_filestream, &rx_header_buffer, sizeof(int)); aber 32 Bit einlesen möchte, meint Karl Heinz Buchegger das dies zum Absturzt führt. Nun sende ich aber 32 Bit, können ja auch mehr sein, mit: fwrite(&c, sizeof(uint32_t), 1, f); Trotzdem stürzt das Programm
-
Thread
PWM - Breite von 0
Stimmt schon, im Header-File wird das einzelne Bit definiert, in welchem Register es liegt und welche Bit-Nr. es ist. Keil geht hier einen Sonderweg und hat neue Elemente in die Sprache C aufgenommen, die *nicht* dem C-Standard entsprechen. Das
eines EPROM. Ich kaufte zuvor auf der Hobby-Tronic in Dortmund bei einem Händler gebrauchte EPROM 27C128. Meine Aufbauten: TTL-Gräber. Dann ging es los, byteweise Eingabe von Hand, 8 Tasten für die 8 bits. Also, es wurde jedes Bit einzeln eingegeben, zur Sichtkontrolle je eine LED an jeder Taste, und
-
Thread
Problem: 16 Bit Variable über UART zu empfangen
Hallo liebes Microcontroller Forum, ich nutze einen ATMEGA88A-PU. UART, 8Data Bit; 1 Stop Bit; BAUD: 9600 Ich programmiere den Controller mit C im Atmel Studio. Dem Controller schicke ich über LabView 2 Byte. Zuerst das MSB dann das LSB. Die beiden Bytes füge ich auf dem Controller
); UCSR0C = (1<<UCSZ01)|(1<<UCSZ00); //Frame: 1 stop Bit, 8 data bits UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); //Aktiviere Sender(TXD) und Empfänger(RXD) sowie Receive Complete Interrupt.
-
Thread
Eingang bzw. Ausgangsbit als Variable deklarieren
(r,n) (((volatile struct bits *)&r)->b##n) // Konkrete Definitionen der einzelnen Portbits: #define TASTER BIT(PIND, 2) #define LED BIT(PORTD, 0) // Verwendung der Makros: // ... if(TASTER) // oder auch:
Hallo, Abfagen auf (Taster=1) erledigt man in C besser mit (Taster!=0) In dieser Version ist es wurst, welches bit tatsächlich benutzt wird. Gruss, Michael
-
Thread
PIC32 TRIS Register setzen
einer Speicherposition nicht gibt. Er weiß nur, daß für einzelne Bits kein besonderer Name definiert ist. Man kann sie daher nicht mit Namen ansprechenn. MfG Klaus
Und in der Board.c : TRIS_D1=1; ANSEL_D1=0; D1 wird dann irgendwo in der main.c benutzt.. Ehm zur Performance: Weiß ich noch nicht, hab die config Bits noch nicht eingestellt. Wollte dies eventuell über den "
-
Thread
RFM12: SPI Unklarheiten
0x000D Anfrage: 0x0000 Antwort: 0x0000 Die ersten beiden sind keine gültigen Anfragen - das höchste Bit ist '0', also eine Status-Wort-Abfrage, aber der Reest des Kommandos enthält nicht-0-Bits - also doch keine Status-Wort-Abfrage, aber was dann?
Strickwettbewerbgewinner schrieb im Beitrag #2704649: > Stefan Helmert schrieb: >> Das kann es ja nur, wenn es die Bits mitzählt bzw. die >> einzelnen Bits im Eingangsregister nicht durchschiebt sondern >> durchadressiert. > Na und? Das hat eine Auswirkung auf das Verhalten, wenn man nicht genau 16 Bit überträgt
-
Thread
Ein paar Fragen zum DS1820
? Oder muss ich die immer wieder abfragen? 4. Wie kann ich aus dem ausgelesenen Bits die Temperatur berechnen? Laut Datenblatt sendet er ein 9-Bit Signal. Das wären soweit meine Fragen (vorerst :-D).
slave addr + write mode i2c_master_write(0x01); // set pointer to conf register i2c_master_write(0x00); // set temp output to 9-bit i2c_master_stop(); // i2c stop condition } *********************************
-
Thread
Verständnisproblem Bus
miteinander kommunizieren lassen. Das ganze soll sehr modular gehalten sein. Ich dachte an einen 8 Bit Geräteadressbus und einen 8 Bit Datenbus. Allerdings habe ich jetzt ein Problem. Jedes Gerät soll mit jedem kommunizieren können. Das bedeutet dass es durchaus passieren kann dass zwei (oder mehr) Geräte
Stoff zu dem Can Bus lesen. Es kann Kollisionen erkennen und Auswerten. Desweitern kann man die einzelnen Geraete (in deinem Fall die anderen µC) Pioritaetsnummern verteilen. Im Auto ist es Standard (VW&Audi), sogar fuer Sicherheitsrelevate Bereiche. Aufwendig ist es nicht gerade, sondern eine Kostenfrage
-
Thread
Frage zu I²C
Datenblatt gibt hier sicher weitere Informationen. Hab jetzt aus Interesse mal nachgelesen der 16biter heißt PCF8575/PCF8575C und es lassen sich maximal 8 Stück mit je 16 Ausgängen an einem Bus betreiben......sind stolze 128 Ein-/Ausgänge mit 400kBit was eigentlich für Hausanwendungen Reichen würde
(Am Chip über 3 Pinne Adressierbar)so das man bis zu 8 Gleiche Chips am Bus hängen und sie auch einzeln ansprechen kann. Einige haben weniger Adressierungsmöglichkeiten und einige haben mehr freie Adressbits. Einer ist der PCA9501 (8 Bit Port + 256 Byte Eeprom) bei dem nur das Erste Bit "fest
-
Thread
Frequenz Schrittmotor über Computer
nicht das das zwingend so sein muss. Sowohl WinPCNC als auch Mach3 funktionieren unter Windows (32bit) auch ohne externen Controller, mit direktem BitBang auf dem Parallelport. Damit kann man Taktraten bis ca. 20kHz erreichen. Höhere Frequenzen und geringeren Jitter erreicht man dann nur mit externen
nicht das das zwingend so sein muss. Sowohl WinPCNC als auch Mach3 > funktionieren unter Windows (32bit) auch ohne externen Controller, mit > direktem BitBang auf dem Parallelport. Unter DOS programmiere ich Dir das auch. Aber nimm mal einen WIN10 PC (o.ä.) und erledige das mit Python. Das Problem
-
Thread
Sekunden-Task mit CTC-Timer (Atmega88)
PINx Register schreibt. Mit C hat das gar nichts zu tun. Aber wenn du schreibst "PIND |= 1" dann liest du das PIN Register (also den aktuellen Zustand des Portes) ein, setzt das Bit 0 auf 1 und schreibst das Ergebnis zurück. Das
Stefan ⛄ F. schrieb im Beitrag #6212285: > Wenn flag_gesetzt volatile und 8bit ist, dann ja. Ist es. Danke! Dann liegt's doch am Quarz. Aber warum müssen es 8 Bit sein?
-
Thread
Timerinterrupt kommt nur einmal
Bits, die anderweitig belegt sind und uns für die Auswertung nicht interessieren. Wenn Du die Zustände der einzelnen Bits in einer Variable speichern möchtest, kannst Du natürlich in einer elend langen if-else-Abfrage
------------------------- T7 T6 T5 T4 T3 T2 T1 T0 Also alle Tasterzustände in 8 Bit, schön in Reih und Glied hintereinander. Damit hast Du 8 if-else-Abfragen gespart...
-
Thread
SPI 16-Bit Problem
hier etwas beim Senden und/oder Auslesen falsch. Meine Slave Konfiguration sieht wie folgt aus: [c] void spi_config_slave() { P1SEL = BIT1 + BIT2 + BIT4 + BIT5; P1SEL2 = BIT1 + BIT2 + BIT4 + BIT5; UCA0CTL1 = UCSWRST; // **Put state machine in reset**
Und gewöhn dich daran, dass in C weniger oft mehr ist [c] while ((IFG2 & UCA0TXIFG) == 1); [/c] Ich habb keine Ahnung ob das UCA0TXIFG Bit so angeordnet ist, dass sich nach Ausmaskierung eine 1 ergibt, wenn
-
Thread
Wie macht ihr ein Menü Timeout? Möglichkeiten?
dekrementiert. Wenn Variable==0, wird der Überlaufflag für entspr. Timeout gesetzt und das wars dann. [c] #define CHK_BIT(var,pos) ((var) & (1<<(pos))) #define SET_BIT(var,pos) ((var) |= (1<<(pos))) #define RES_BIT(var,pos) ((var) &= ~(1<<(pos))) // Die oberen 4 bits starten entspr. Counter const
geprüft, wenn > 0 und entspr. Flag gesetzt ist... */ if(CHK_BIT(MyFlag, tstOn) && (TastCnt>0)) { TastCnt--; if(TastCnt<1) { SET_BIT(MyFlag, tstRdy); RES_BIT(MyFlag, tstOn); } } [/c] P.S. Apropos Reset - da wir mit Industriesteuerungen
-
Thread
C-Prog. (ATmega16) für IR-Sender
einer Schleife lösen?? Also am schwierigsten ist es für mich ASM und VB zu kombinieren (ASM wegen uC und VB wegen Hochsprache) und dann auch noch in C umdenken (C kann ich noch garnicht...) Ich habe jetzt dies hier programmiert: [c] for ( i=0; i<8; i++ ) { temp = (UDR & 0x01); /* erstes bit
abgesehen davon, dass man UDR nur einmal lesen > sollte, kann man das recht einfach "optimieren". > > [c] > PORTC=UDR; > [/c] Nö, die Schleife macht was anderes. Und das mit dem nur einmal einlesen hatte ich auch in meinem Beispiel auch erwähnt... Aber das er die 8 Bit einfach an Pin 0 des Port C
-
Thread
Messwert+Zeitpunkt komprimieren
Der Datensatz ist nur von Anfang an lesbar. Zu Beginn des Datensatzes müssen die Startzeit (32 Bit) und die Startwerte von A und B (je 16 Bit) eingetragen werden.
Der Datensatz ist nur von Anfang an lesbar. Nichts zu verbessern an seinem Vorschlag, nur halt ein Bit mehr nehmen, Zeitabstand geht auf 5bit, also von 1 bis 31 Sekunden, Bit7 für Zeitstempel nehmen. Also, wenn Bit7==0, Daten wie oben, wenn Bit7==1, handelt es sich um Zeitstempel, wenn Bits6-
-
Thread
Register, RAM und Addressraum
. Z.b 0xbffff0c0. 0x00002000 0xbffff0c4. 0x00030000 0xbffff0c8. 0x00000000 0xbffff0cc. 0x00000000 0xbffff0d0. 0x00000034 0xbffff0d4. 0x00000003 0xbffff0d8. 0x00000004 (32bit zahl ) etc >Ist das abgebildete
Die 8Bit (ein Byte) sind eine Größenangabe mit der man rechnen kann/die Größe angibt.. Telweise wird auch bit genannt. z.B. Ein 24C02 hat 2kbit = 256 Byte. Der kann 64 Werte von 32 bit breite aufnehmen. Der
-
Thread
LED-Treiber MAX6956 C-Code
aus 16 LEDs mit je 7 Bit (128 Stufen) also 16*7. Das wars auch schon. Das tolle ist, dass man mit diesen 112 Bit bzw 14 Byte die Helligkeit aller LEDs verändert hat. >> gibt es den auch mit I2C? da bin ich überfragt,
also wenn du die adresse aus dem datenblatt nimmst, hast du ja die 0x40 und wenn du dann noch das R/W Bit dazu nimmst... wird die 0x80 daraus! i2c_start_wait(ADDR+I2C_WRITE); oder seh ich das falsch?
-
Thread
Drehgeber auf Atmega 88 wandeln
Höner schrieb im Beitrag #2013439: > Gibt es irgendwo eine detailierte Doku, was die Befehle im einzelnen > bedeuten, gerade die C-Befehle? Z.B. "+=", "^=" oder "&". > [[AVR-GCC-Tutorial]] > Mein Ziel ist es den Code soweit zu verändern, dass ich zwei Drehgeber > anschliesse und die Ausgabe
Höner schrieb im Beitrag #2013439: > Gibt es irgendwo eine detailierte Doku, was die Befehle im einzelnen > bedeuten, gerade die C-Befehle? Z.B. "+=", "^=" oder "&". Das steht in jedem C-Buch. Das AVR-GCC-Tutorial ist da weniger hilfreich, da es bereits von gewissen Grundkenntnissen in C ausgeht
-
Thread
Verständnisfrage ==
Mikrocontroller. > > Folgende if()-Abfrage funktioniert: > > [c] > if( ( A & B ) == 0x00) > { > mach_was(); > } > [/c] > > Wenn ich aber schreibe: > > [c] > if( A & B == 0x00) > { > mach_was(); > } > [/c] > > Wird
logischen. > > Doch, & und | sind arithmetische Operatoren, denn sie rechnen mit > Zahlenwerten. C spricht hier nicht von arithmetischen, sondern von bitweisen Operatoren. Sie arbeiten ja auch nicht mit den Zahlenwerten, sondern nur mit den einzelnen Bits. Ich würde & und | nicht als arithmetische