-
Thread
"Clean Code" in C für Mikrocontroller
allerdings übersiehst: Du kannst die Ebene, bei der aufgefangen wird, sehr komfortabel wählen. Bei C must Du Deinen Funktionsabbruch auf allen Ebenen einzeln implementieren, bist Du bei der Ebene angekommen bist, bei denen Deine Fehlerbehandlung greifen soll. Das sauber zu implementieren hat mich schon
allerdings übersiehst: Du > kannst die Ebene, bei der aufgefangen wird, sehr komfortabel wählen. Bei > C must Du Deinen Funktionsabbruch auf allen Ebenen einzeln > implementieren, bist Du bei der Ebene angekommen bist, bei denen Deine > Fehlerbehandlung greifen soll. Das sauber zu implementieren hat
-
Thread
Lagerverwaltung Part-DB V0.2.2
Hallo Torsten! Torsten C. schrieb im Beitrag #2814390: > Aber macht es denn Sinn, dass jeder einzelne Nutzer einen Webserver mit > PHP und Mysql Datenbank betreiben muß? Nein. Aber auch daran wir gearbeitet: Eine Multiuser-Version
angelegt und in phpMyAdmin den Bytecode davon angeschaut. Das Zeichen 'ä' sollte dem Bytecode 0xC3 0xA4 (UTF-8) bzw. 0xE4 (ISO-8859-1) entsprechen. Ergebnis mit HTTP Zeichensatz UTF-8: 0xC3 0x83 0xC2 0xA4 Ergebnis mit HTTP Zeichensatz ISO-8859-1: 0xC3 0xA4 Erklärung: Bei ISO-8859-1 wird das
-
Thread
Interrupt Flag
aufgetreten... } // Neue Flags abfragen flags = INTFLAGS; } while (flags != 0);[/c] Wenn während der Bearbeitung neue Interrupts auftreten, muss die ISR nicht verlassen und erneut betreten werden (langsam), sondern nur direkt die
, er kann die meisten Interruptbits nicht atomar löschen. D.h. liest man ein IO-Register, setzt einzelne Bits auf 0 und schreibt es wieder zurück, können in der Zwischenzeit eingetroffene Interrupts im selben IO-Register verloren gehen. Daher der Umweg, daß nur gesetzte Bits gelöscht werden, nicht gesetzte
-
Thread
Atmel Ausgabe nur auf einem Port
Portpin setzen = zu setztende Bits (High) mit aktuellem Portzustand verodern. Portpin löschen = alle nicht zu verändernden Bits High, das zu vernändernde Bit Low (das wäre dann auch das invertierte Byte vom setzen).
http://www.mikrocontroller.net/articles/Bitmanipulation#Bits_pr.C3.BCfen müssen wir es vorlesen ? also.... Der AVR hat spezielle Befehle um direkt einzelne Bits in den CPU-Registern r0..r31 sowie den IO-Registern 0..0x1F zu prüfen..... Also auch drauf
-
Thread
Protokoll DC-3840 Handycam
sofort übertragen? B) Was ist ein uncompressed snapshot picture? Unkomprimiertes JPEG oder Rohdaten? C) Unkomprimierte Bilder (Rohdaten, z.B. (Bit Gray) können nur als Preview übertragen werden? (siehe B) C) Ein Preview wird nicht als einzelne Pakete gesendet, sondern am Stück? D) Ist es möglich, wie in dem C328 User Manual beschrieben, auch bei der DC-3840 eine Paketgröße mit Kommando cam_command_send (0x06,0x08,0x00,0x0X,0x00); anzufordern und dann die einzelnen Paket zu quittieren? Wenn ja, geht
-
Thread
AT91SAM7 und SPI-EEPROM 25LC040
Phase, Polarität, u.s.w. pSPI -> SPI_CSR[0] = 0x00000F00; // SPCK=100000kHz pSPI -> SPI_CR = AT91C_SPI_SPIEN; // SPI is enable } [/c] und UART-Abfrage, also wenn "W" kommt soll in die EEPROM-Adresse null, 5A geschrieben werden. [c] if (strcmp(string,"W")==0) { AT91F_SPI_Send_Data
} [/c] help!!
-
Thread
Xilinx FIFO mit Non-symmetrical aspect Ratio
generieren wenn du mal die Reihenfolge aendern willst. Ist ein Wert bei dir ein Daten Wort oder ein einzelnes Bit?
sparen. Tobias B. schrieb im Beitrag #6376924: > Ist ein Wert bei dir ein Daten Wort oder ein einzelnes Bit? Ich bekomme ja jetzt *manchmal* korrekte Daten aus dem ADC. Da will ich virtuell die Samplerate vervierfachen und dann mit einem FIR tiefpassfiltern. Funktioniert auch. Aber der FIR gibt
-
Thread
Zeitabschätzung
Kann ich von dieser Rechnung ausgehen? Der µC macht eigentlich nichts anderes, als gerade diese Interrupt-Routine abzuarbeiten (natürlich sobald sich was am Pin tut). Von welcher Zeitverzögerung kann ich ausgehen, bis der µC wirklich die Interrupt-Routine
und anschließend wieder von ihm runter - Durch einen anderen Anschluss der Hardware fallen einige bit-Operationen weg Ich habe im Assembler-Code vom C-Compiler außerdem einigen Code entdeckt, den ich vom Sinn her nicht verstehe: [avrasm] ldi r30, 0 ... ;(nix mit Z und auch nix mit r30) andi r30
-
Thread
Benötigte CPU-Leistung ermittel
1920*1080*3 = 6,22 Millionen Additionen plus die Datenzugriffe auf die Pixel plus Schleifen und Abfragen. Dazu kommt dann die Hardwareausstattung des Chips. Mal nur die Additionen genommen (als 32 Bit Integer) wäre hier ein ATMega bei 20 MHz Takt theoretisch auch in 1,3(Addieren) Sekunden + 0,6 (aus
" um den Kompfort zu liefern, den sie mit sich bringen. Ich hatte vor Jahren mal VisualBasic gegen C verglichen und kam bei einfachen Befehlen wie Abfragen, Schleifen und Additionen auf eine Faktor von über 1000. Sprich, C läuft 1 Sekunde, VB für das gleiche fast 17 Minuten. Aber auch die Art, wie der
-
Thread
Frage zum UART (ISR Vector)
Ich bekomme jetzt folgende Fehlermeldungen: main.c:54: warning: 'UART_RX_vect' appears to be a misspelled signal handler main.c: In function 'UART_RX_vect': main.c:64: warning: implicit declaration of function 'size_of' interrupt.h Header habe ich
@ Ein freundlicher türkischer Mitbürger (Gast) >main.c:54: warning: 'UART_RX_vect' appears to be a misspelled signal >handler Der heisst bei einigen AVRs USART_RX_vect >main.c: In function 'UART_RX_vect': >main.c:64: warning: implicit declaration
-
Thread
VHDL Grundlagen : Rechnen
sehr restriktiv, was die Typumwandlung angeht, einfach so implizit von z.B. float nach integer wie in C gaht das nicht: i = f; Sondern da braucht man schon die passenden Routinen und Umwandlungen. > Im Moment will ich eine 24Bit Zahl mit einer 8 Bit Zahl multiplizieren. Sieh dir numeric_std an: die
Konvertierung in signed integer und das Rechnen mit echten Integerdatentypen, die dann erst vom Compiler auf Bits umgesetzt werden. Da ist die Formulierung nicht komplizierter, als in C, es geht nur der direkte Zusammenhang zu den Bits verloren, die Du irgendwann mal kontrollieren möchtest. Für beide Anwendungsfälle
-
Thread
Anschluss & Beschaltung 74hc595 für definierten Ausgangszustand beim Start
Schritt: shift Clock aus den pull-down-Zustand anheben (pos Flanke) und wieder zurück. also serielles Bit aufnehmen 2 und 3 achtmal. bis das 8-bit-byte geladen ist. Dann latch clock aus pull-down anheben und wieder senken. Damit die daten ans Latch übergeben. 4. wenn OE noch auf high ist, oder pull up
1ms schalten. Aber nur, wenn die Versorgungsspannung für die Relais freigegeben ist, bevor der µC hochgefahren ist ;-)
-
Thread
AVR-GCC Programmstruktur (Tastenabfrage+ADC)
Mhh, dass man mit Interrupts bestimmte Vars setzen kann und dann in der Haupschleife abfragen ist klar, aber wenn z.B. nun das Ereignis 1 (z.B.ADC) bearbeitet wird, dann kann man doch keine Tasten abfragen bis der code durchlaufen ist? Das ist das Problem. Das sieht doch so aus: [c] ///taste
wrote: > Mhh, dass man mit Interrupts bestimmte Vars setzen kann und dann in der > Haupschleife abfragen ist klar, aber wenn z.B. nun das Ereignis 1 > (z.B.ADC) bearbeitet wird, dann kann man doch keine Tasten abfragen bis > der code durchlaufen ist? Das ist richtig. > [c] > ///taste=get_key
-
Thread
HART start byte (SD) struktur ?
, das ist klar. Läuft das prinzipiell so ? Burst starten: Burst Request vom Master per Burst bit im AD byte und in der message dann das CMD mit gewünschter Device-Variable ? Und der slave sendet ab dann die burst frames mit dem BACK bit im SD gesetzt ? Burst stoppen: Request vom Master ohne
___ 14 LSBs vom Expanded-Device-Type | | | |_________________________________ Burst-Mode-Bit | |_____________________________________ Master-Address-Bit [/c] Gruß
-
Thread
ATMega88PA ADSC Bug?
if( c & 1 ) STX_PORT &= ~(1<<STX_BIT); // data bit 0 else STX_PORT |= 1<<STX_BIT; // data bit 1 or stop bit c >>= 1; } } [/c] Rudolph Riedel schrieb im Beitrag
Okay, laut Datenblatt kann man eine einzelne Konvertierung anschieben indem man entweder das PRADC Bit löscht oder das ADSC Bit setzt. Leider gibt es noch eine dritte Möglichkeit die ich überlesen habe, nämlich den µC in den IDle-Modus schlafen
-
Thread
Problem mit Sprungadressen und Timer
_OVF_vect #define TIMER0_OVF_vect TIMER0_OVF0_vect #endif [/C] > Wieso beienflusst das die Pull-Ups? Das ist mit irgendwie nicht ganz > klar. Weil du an den ganzen Port eine Zuweisung machst! Jedes einzelne Bit wir dneu beschrieben. Unter anderem auch die
[/C] immer nur das eine Bit ansprichst, das du auf 0 oder 1 setzen willst. Es ist wirklich ganz einfach. Durch die letzte Form ist gewährleistet, dass die anderen Bits an diesem Port nicht verändert
-
Thread
Bits seriell einlesen und in Variable speichern.
schreibt niemand 8x den gleichen Code, dafür gibt es Schleifen: [c] while(1) //Endless loop { _delay_ms(1000); for ( int i=0; i<8; ++i ) { bit =(PIND & 0x40) ? 1:0; //PIND6 abfragen Telegramm[i]=bit; Telegramm[i]= Telegramm[i] << i; _delay_ms
/c] 5. Es gibt keinen Grund, die Bits einzeln in ein Feld zu speichern: [c] Daten = 0; for ( int i=0; i<8; ++i ) { Daten |= (PIND & 0x40 ? 0x01: 0x00 ) << i; _delay_ms(500); } [/c] Das
-
Thread
Wie Ports am Besten zusammenfassen?
Ausgabe von Werten: Während ich bei Port A "blind" schreiben kann, muss ich Port B erst einlesen, einzelne Bits manipulieren, und wieder den ganzen Port ausgeben. Wie handhabt man das am Besten? Bzw. wie macht ihr das? Mit freundlichen Grüßen,
Ausgabe von Werten: Während ich bei Port >A "blind" schreiben kann, muss ich Port B erst einlesen, einzelne Bits >manipulieren, und wieder den ganzen Port ausgeben. Nö, einzelne Bits kannst du zumindest bei PORTB über cbi, sbi setzen. Bei PORTF sieht das dann wieder anders aus;)
-
Thread
SPS Betriebssytem
eine andere Variable wenn das zeichen A0 ist dann *ziel = A0 ..... 3tes und 4tes byte in 16 bit variable (wert) schreiben if abfragen: ist erstes byte U => aufruf unterprogamm U ( *zeit,wert) .... man müsst halt für jede variable und jede funktion eine if abfrage machen aber man könnte
Die brauchen eigene CPU. Das display schaut in die SPS und holt sich die Parameter, oder setzt die Bits der SPS, die in seinem eigenen Projekt benannt sind. Natürlich muß es auch eine PC-Software geben, die die Gestaltung der Texte ermöglicht. Grafiken, Farbe, Touchscreen sind bei c.) üblich. 6. bei
-
Thread
Wieso ändert sich die Bitlänge?
kurioses Problem, was ich mir nicht erklären kann. Ich habe ein Array mit 865 Feldern, die durch Bits (also ein Feld ist entweder "0" oder "1") belegt sind. Nun möchte ich diese Bits seriell auf einem RS485 Bus ausgeben, in dem ich jedes Feld abfrage und den jeweiligen Pin des µC auf "High" bzw. auf "Low" setze. Ein Bit soll eine Länge von 6,4µs haben: Wenn der Pin des µC auf "High" bzw. auf "Low" gesetzt wird, dann soll dieser Zustand 6,4µs anhalten. Das realisiere ich durch NOPs (no operation, siehe auch Quellcode
-
Thread
HD44780 - per Interrupt beschreiben oder immer nach Bedarf?
Edit: ist ja noch schlimmer, die 125ns sind ja high und low vom uC, also sogar nur halb so lang high
Wieso eigentlich c-hater und nicht "alles was man so sinnvoll machen würde"-hater?
-
Thread
VB-Programm zur seriellen Ansteuerung von 4094 gesucht
Ich möchte 5 Stück 8-Bit Schieberegister hintereinander reihen, um 40 parallele Ausgänge zu erhalten. Da Ganze will ich dann mit dem Rechner über RS232 ansteuern. Das erscheint mir als einfachste Lösung, da ich mit einem AVR
Grafik,aber einfach programmiert. Wenn es fertig ist geht es für jede Kleinbahn. 16 Blöcke 16 Abfragen 8 weichen 2 DA Geschwindigkeit 2 AD abfragen für 4094 ausgaben für alle Licht technik. Bei störung ist das nicht so schlimm. noch eine steuerung 8* aus 5*ein 4* Buchse Für den DruckerPort
-
Thread
Deklaration von external memory
und auch nicht um Deine Entscheidung, als darum, Dich dahin zu bringen, ein Urteil nicht anhand einzelner Punkte und aufgrund begrenzter Sicht zu fällen. Ob Du C nun ablehnst oder nicht, ist mir gleichgültig. Aber ich wollte Dich anregen dies aufgrund fundierter Kenntnis und Erfahrung zu machen.
dein Funktionen nach avr-gcc ABI. Dann kannst du in der Zufunft ganz easy von Assembler nach C migrieren oder umgekehrt -- und zwar für jede einzelne Funktion wie es dir gefällt. https://gcc.gnu.org/wiki/avr-gcc 3) Lass dir nicht einreden, diese ABI verwenden sei zu ineffizient. Ja,
-
Thread
Wer nutzt das Nucleo-64 und kann mir
Bit zu schaffen. Siehe https://www.totalphase.com/support/articles/200349176-7-bit-8-bit-and-10-bit-I2C-Slave-Addressing
#i2c nicht das Bit-Banging. Aber egal, Hauptsache es funktioniert.
-
Thread
Alptraum jedes Programmierer: Code kompilierbar aber doch ein Denkfehler drin wer sieht´s?
deinem Code gemacht hast). Da du nicht direkt auf einzelne Bits eines Ports zugreifen kannst, musst du das zwischenbuffern. [c] tmp = PORTC; tmp &= ^CSentUsedBitsMask; // alle Bits in der Maske löschen, die anderen bleiben unberührt tmp |= data & CSentUsedBitsMask; // Datenbits ausmaskieren und entsprechend setzen PORTC = tmp; [/c] Dieses Konstrukt musst du auch weiter unten verwenden, bei: [c] CSentByte=0x01&CSentUsedBitsMask; PORTC=CSentByte;
-
Thread
Schieberegister vereinzelt parallel laden
sr(0) <= sr_in; END IF; END IF; END PROCESS; sr_out <= sr(63); END arch; [/c] Ich möchte nun die Bits 0 von sagen wir mal Spalte 3 und 10 logisch UND Verknüpfen, und mit dem Ausgang dieser Verknüpfung das Bit 7 in Spalte 4 setzen. Ich denke mal, dass ich die UND-Verknüpfung
meiner Applikation ausmacht) realisiere ich dann nicht mehr über ein einfaches zuweisen wie hier: [c] sr(63 DOWNTO 1) <= sr(62 DOWNTO 0); [/c] sondern ich muss nun für jedes FF einzeln entscheiden, ob es den Vorgängerwert übernimmt, oder anders geladen wird, oder? Ich frage nur vorsichtshalber
-
Thread
ATMega 8, assembler | lcd und led funktionieren zusammen nicht
Joachim Jakob schrieb im Beitrag #3802265: > interner pullup? was ist das Und Abfrage anders herum.
Marc Vesely schrieb im Beitrag #3802278: > Und Abfrage anders herum. Getan ?
-
Thread
Rahmenwekennung
Flankenabfragen: clk'event und pfs'event Das kann nicht funktionieren. Mach in zwei Processen einzeln Kest
fallenden gelesen. clk und pfs sind synchron. Mir der steigenden Flanke von pfs muss das erste bit geschrieben werden. Wenn ich das jetzt mit zwei Processen mache, dann müsste ich Signale verwenden und ich würde das 1Bit doch quasi verpassen. Hab das schon mal versucht und das hat nicht hingehauen
-
Thread
PIC C18 Fehlermeldung: [2060] shift expression has no effect?
Hallo allerseits, hab ein kleines Problem mit einer Fehlermeldung (warning) mit dem C18 Compiler. (PIC18F2550) [c] #define bit_set(var,bitnr) ((var) |= 1 << (bitnr)) // Einzelnes Bit setzen main { unsigned char Messprotokoll[10]; ... bit_set(Messprotokoll[4],0); oder bit_set(ADCON0,0); ... } [/c] Fehlermeldung: D:\PIC_Soft\main.c:347:Warning [2060] shift expression has no effect Und zwar taucht die Meldung auf, wenn ich das Bit 0 einer Variablen abfragen will
-
Thread
RS485 Stern-Netzwerk - Ein paar Fragen
hat der Elektriker aber nur ein Kabel (2x2x0.8) pro Raum gezogen, so dass ich die Signale nicht einzeln in den Technikraum bekomme. Deshalb war meine Idee die Signale jeweils vor Ort mit einem uC auszulesen und die jeweiligen Zustände per Modbus übers Kabel zu schicken. Damit wäre das System auch ausbaufähiger
an. Noch kurz zu den technischen Bedingungen: Baudrate kann winzig sein (600-2400), da die Abfrage 1x/sek stattfindet und jeweils nur 30Bits + CRC übertragen werden, also fast nichts. Die Kabel haben einen Folienschirm, sind aber wahrscheinlich nicht verdrillt. Es ist davon auszugehen, dass die
-
Thread
LCD 4x20 hängt sich nach der Zeit auf!
Programmteile der Ansteuerung des Displays hinzugefügt, oben die Include-Datei für das LCD und danach die einzelnen Unterprogramme in der main.c. Ich hoffe Ihr könnt mir dabei helfen, was der Grund dafür sein kann. Mfg Koksi
das hier scheint mit etwas seltsam: [c] PORT = 0b00000010; // Interface auf 4-Bit setzen PORT = 0b00000010; // Interface auf 4-Bit setzen PORT = 0b00000010; // Interface auf 4-Bit setzen [/c] so ausm Bauch raus würde
-
Thread
Siebensegment und Tasten ansteuern mit TM1651 \ TM1637
verwendet, bei der Ausgabe des einzelnen Datums die Bits reversiert (d.h. Bit7 <=> Bit 0, Bit6 <=> Bit1, Bit5 <=>Bit2, Bit4 <=> Bit3 tauscht), dann kannst du den TM16XX auch mit regulären I2C - Funkionen ansprechen. Das "ärgerlichste
TWI und I²C identisch. [/code] Allerdings steht dort auch: [code] Alle Bytes werden dabei „Most Significant Bit First“ übertragen. [/code] Somit ist ein Frame für den TM16XX kompatibel zum I2C-Bus, aber
-
Thread
deklaration mit define,wie richtig, so doch nicht oder?
[C] PORTC &= ( 1<<PC2 ); [/C] welches er in eine "Clear Bit 2 an PORTC"-Assembler-Instruktion übersetzt.
zeige mir mal den Assembler-Code dazu. So oft kommt das nicht vor, dass man tatsächlich alle 8 Bit eines Ports in einer Abfrage berücksichtigen muss. Und selbst wenn, kann man das immer noch mit einer ganz anderen Schreibweise berücksichtigen [C] while( (Eingabeport & (1<<WARTEBIT1 | 1<<WARTEBIT4
-
Thread
ATTiny10/11/12
so eine Schaltung frei. Wobei dann erstmal wichtig wäre, welche Störungen bei einem mC auftreten können? - kann sich ein mC aufhängen? Wenn ja ist das ein Problem, da ein Erkennen der Störung sehr schwierig sein wird. - kann ein mC falsch rechnen ? Wenn ja wird das auch sehr schwierig
irgendwo ausleihen ;) sind das die hier? http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=en
-
Thread
Pcf8574 datenblatt ohne infos über register?
Das gibst du mit dem einen Bit im I2C-Frame an... da gibts ja ein Read-Write Bit... und nach das hält sich das IC halt. mfg Schoasch
Um von dem I2C PCF8574 daten einzulesesen gibt es zwei möglichkeiten: 1. Zyklisch Lesen --> Senden Adressbyte + R/W bit = 1 Danach einfach 8bits einlesen ACK abfragen nicht vergessen 2. Interrupt gesteuert
-
Thread
UART bei Atmega88
Fehlermeldung: avr-gcc.exe -mmcu=atmega128 -Wall -gdwarf-2 -O0 -MD -MP -MT UART.o -MF dep/UART.o.d -c ../UART.c ../UART.c: In function `main': ../UART.c:39: warning: implicit declaration of function `outp' ../UART.c:39: error: `RXCn' undeclared (first use in this function) ../UART.c:39: error: (
Zur Veranschaulichung: // sendet einzelnes Zeichen an PC void USART_transmit (unsigned char c) { // warte bis Senden möglich while (!(UCSR0A & (1<<UDRE0))) {} // sende übergebenes Zeichen UDR0 = c; } // sendet Zeichenkette
-
Thread
Warum hängt vsync und hsync im RTL-Viewer in der Luft?
sein soll? Muss ich das wirklich? Nun, weil es der tatsächlichen Hardware entspricht. Ein Haufen Bits/Leitungen eben. Die noch vollkommen unbefleckt ist, was die Daten angeht, die darüber transportiert werden. Ich kann die Bits schieben, einzelne Bits invertieren oder verknüpfen, eine Zahl in Gray-Code
Dieser Vergleich ist, mit verlaub, genauso sinnfrei wie deine Behauptung, dass in einem RAM die Bits eine Ordung haben und diese eben eine Zahl repräsentieren. W.S. schrieb im Beitrag #3864525: > Verkaufszahlen von µC, insbesondere von kleinen PIC's. Der Grund, dass weniger FPGAs als µC verkauft
-
Thread
Problem beim abfragen von 2 DHT22
Hallo, ich hab etwas Code geschrieben um die Temperatur und die Luftfeuchte von 2 DHT22 auszulesen und auf einem 4-Zeiligen Display anzuzeigen. Das auslesen der einzelnen Sensoren funktoniert aber es wird immer nur der erste angezeigt. Wenn ich diesen auskommentiere wird der zweite angezeigt aber nicht beide zusammen. ich bin langsam am verzweifeln... hier mal der Code: [avrasm]/* * LCDTEST5.asm * * Created: 20.04.2014 16:14:50 * Author: Fritz */ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Steureung eines LCD ;; ;;PortD ausgang: ;;0 - Db0 ;;1 - Db1 ;;2 - Db2
-
Thread
AVR32: Wie Ausgänge/Eingänge schalten/einlesen
c) Bit setzten d) Ursprungsadresse wieder setzten, da der Controller den internen Adresspointer automatisch inkrementiert e) 1Byte zurückschreiben. 2. Weiter ist jeder GPIO Port 32Bit breit -> habe meinen Treiber so geschriben, dass simultan 8 Bits geschrieben werden können: AVR32_GPIO_LOCAL.port[pinGroup.port].ovr = (AVR32_GPIO_LOCAL.port[pinGroup.port].ovr & ~(pinGroup.pinGroupMask
-
Thread
Thema: Atmega 32: Ich brauche mehr Rechenleistung für meine CNC
mal eine Radiusinterpolation programmiert. Ich bin hergegangen und habe ein externes EProm als 16 Bit Sinus Generator mißbraucht. Das ergebnis war, das es ab diesem Zeitpunkt keinen unterschied mehr machte, ob der µC eine Gerade fährt oder einen Radius. 16 Bit Adresse rein (2 Befehle) 16 Bit Daten raus
mal eine Radiusinterpolation > programmiert. Ich bin hergegangen und habe ein externes EProm als 16 Bit > Sinus Generator mißbraucht. Das ergebnis war, das es ab diesem Zeitpunkt > keinen unterschied mehr machte, ob der µC eine Gerade fährt oder einen > Radius. 16 Bit Adresse rein (2 Befehle) 16 Bit
-
Thread
Kann man folgenden Code platzsparender schreiben
Datentype nur > einmal im ROM ist. Korrekt. Ich sehe hier jedoch zwei Multiplikationsroutinen: 16 Bit signed: [c]values[1] * 10; values[2] * 100; values[3] * 1000; values[4] * 10000;[/c] 32 Bit signed: [c]values[5] * 100000; values[6] * 1000000; values[7] * 10000000;[/c] Insbesondere diese
Dann bleibt da > nämlich "FTW = f * k" stehen, und das ist eine Laufzeitmultiplikation. Weil [c](frequency * 4294967296) / 125000000UL;[/c] nicht immer das gleiche Ergebnis wie [c]frequency * (4294967296 / 125000000UL);[/c] liefert. Die Idee von Uwe ist, die 64 Bit Operationen durch 32 Bit
-
Thread
SDCC & MAX1271
Ich möchte in C den AD-Wandler MAX1271 ansteuern. Bloß ich weiß nicht, wie ich in C Bits schieben kann, um Sie an einen Port-Pin auszugeben oder um Sie von einen Port-Pin zu lesen. Ich muß eine Byte Bitweise ausgeben
Um meine Frage zu verdeutlichen: Ich habe den ADWERT, der ist 16bit. Nachdem ich mir die richtige Wert erechnet habe, dies ist auch wieder ein 16bit-wert. Dies will ich auf einem Display anzeigen, mit einem Komma. Wie z.b = 16.84V. Das Display ist mit nem T6963C Controller
-
Thread
AVR Studio - Was soll diese Compiler-Warnung?
abspielt und sich nicht im endgültigen Code wiederfindet. Aber bei meinem Ausdruck (a<a+b) wird vom µC trotzdem ein 16 Bit Ergebnis aus a+b (je 8 Bit) berechnet und das einzelne a auch auf 16 Bit aufgebohrt und dann beides verglichen?
und sich nicht im endgültigen Code wiederfindet. > > Aber bei meinem Ausdruck (a<a+b) wird vom µC trotzdem ein 16 Bit > Ergebnis aus a+b (je 8 Bit) berechnet und das einzelne a auch auf 16 Bit > aufgebohrt und dann beides verglichen? Ja. Weil in diesem Fall das 16 Bit Ergebnis nicht identisch
-
Thread
Hilfe bei Z80 Opcodes
einfacher. The only easy day was yesterday. Gruesse Th. P.S.: Der Z8536 hat drei Ports (Port C vier bit breit, B und A jeweils acht bit). Addressiert wird das Ding ueber A0/A1, wobei gildet: [c] A1 A0 0 0 Port C (0CFF0H) 0 1 Port B (0CFF1H
ja, auch ich habe den Logic-Analysator) Ich habe ein paar Routinen identifiziert (vielleicht): [c] L0120: Send Stop oder Ack L0121: Adressiere Slave in L? (Routine $0cdb-$0910) L0013: Delay (Parameter in BC) L0139: Read i2c-Input (1 bit) result in D [/c] Gruesse Th.
-
Thread
ATMega2560 FastPWM DutyCycle Umschaltung
= (1<<PB7); PORTB ^= (1<<PB7); PWMsetup(); sei(); while (1) { }; } [/c] Der Code funktioniert auch, siehe das Bild vom Scope. Zu den einzelnen Kommentaren: Im ersten Code gab es einfach keine Timer1_OVF ISR, nur das Enable Bit wurde gesetzt. Ich habe mir das
neuen Tastverhältnise ins OCR1B zu schreiben. Gibt eine Möglichkeit zu berechnen, wie lange eine einzelne Operation im C-Code braucht? Alex P.S.: Rechtschreibfehler dürfen behalten werden.
-
Thread
PWM Signal OCR1A auf einen anderen Pin umleiten.
Frage, wie kann ich PWM Signal auf einen anderen Pin umleiten ? Der betreffende Codeausschnitt: [c] int main(void) { DDRD |= (1<<PD3); DDRB |= (1<<PB3); DDRB &=~ (1 <<PB2) TCCR1A = 0x83; // non-inverted PWM on OC1A, 10 Bit Fast PWM TCCR1B = 0x08; TCCR1B &= ~0x7;
& (X>10)) {OCR1A=OCR1A++;} if (X==11){X=0;} Timer_0(Res,0); }} [/c]
-
Thread
n++ hier oder dort?
am gcc: Der warnt davor nicht in der Standarteinstellung. Das > braucht -Wall o.ä. $ gcc -O2 u.c -o u ; ./u -1 -1 3 -1 3 $ clang u.c -o u ; ./u -1 -1 2 -1 3 $ tcc u.c -o u ; ./u # https://bellard.org/tcc/ -1 -1 3 3 -1 (Visual Studio 2017): -1 -1 2 3 -1
Maschinerie trotz gedrücktem Not-Aus-Schalter in Gang setzen, wenn einmal ein a*b überläuft. "Aha, c=a*b läuft über. Das merke ich mir mal und - oh: hier diese if-Abfrage benutzt c, da setzte ich als Ergebnis mal - hmm, wie ist es günstiger - "true" ein. Und hier, diese Abfrage.. Oh oh, "c+10". Das
-
Thread
Heatronic 3 Adapter (Junkers Heizung) fuer Raspberry Pi
perl test.pl /tmp/ht_binlog.log | grep 'a1 00 ff' Ergibt 00 00 22 00 10 00 90 a1 ff 00 01 00 0c dd 00 a1 10 ff 00 00 0c 02 dc 00 90 00 21 00 a1 00 ff 00 00 0c 02 03 64 01 2c 22 b9 00 a1 00 2a 00 32 00 Hinten ist das ein gültiges telegramm? a1 00 ff 00 00 0c 02 03 64 01 2c 22 b9 00 Müsste
wohl so in etwa stimmen). > dieser Wert hat bei mir in > beiden Heizkreisen einen offset von +5°C (Bsp.: Sollvorlauf am CW400 ist > 27°C ausgelsen werden 32°C) Dies ist etwas komisch. Nicht der Offset an sich sondern, das die ausgelesenen Werte=32°C um 5°C GRÖSSER sind. Wenn diese Werte von den
-
Thread
Datentypen Problem
Lies dir erstmal n Buch zum Thema C durch.. Und vllt. mal bei Wikipedia gucken.. Und dann gleich nochmal Ascii lernen
Also ein Bit ist die kleinste logische Informationseinheit sie kann den Zustand 0 oder 1 annehmen. 4 zusammenhängende Bit werden als Nibble bezeichnet 8 zusammenhängende Bit als Byte Es gibt verschiedene Möglichkeiten
-
Thread
Codeschloss 5-stellig -- machbar und welcher ATM?
könntest als gültige codes zum beispiel primzahlen nehmen, dann brauchst du keinen speicher für die einzelnen kunden pins
hier nicht solche Fragen. Peter S. schrieb im Beitrag #4234374: > ich bin noch recht neu in der µC-Welt.