-
Thread
Probleme mit ADC und UART
AT90S8535 geschrieben, um die Spannungen an den 8 Eingängen zu messen. Durch Befehle kann man die einzelnen Kanäle abfragen, oder zwischen 10 oder 8bit Wählen (Bit ADC10 in Register Bits gesetzt oder nicht). Ebenso wird entweder einmal oder kontinuierlich umgewandelt und übertragen (Bit FreeRun in Register
ausgelesen werden soll) muss man vor dem Auslesen des ADC eben in einer Schleife das ADC-Int-Flag abfragen (Datenblatt fragen). Aber dies im normalen Code und nicht in einer ISR! Viel Erfolg, Bit- & Bytebruch... ...HanneS...
-
Thread
Ist es noch sinnvoll, mit Controllern zu arbeiten?
glaube ich, das sich die Beschäftigung mit den Controllern alleine (sicher sehr anspruchsvoll ab 32 Bit) zu wenig ist und einem Scheuklappen aufsetzt. Früher hatte ich Freude, wenn ein I2C/SPI/CAN/Display/GSM/BT/USB usw. Treiber richtig funktionierte ;-). Damit kann ich nun nur mehr ein müdes, mitleidiges
gehört jedoch auch zu betrachten was die eigenen Fähigkeiten & Ressourcen hergeben. Wer z.B. kein C oder Assembler mag ist ggf. mit einem MicroPython-fähigen µC besser aufgehoben (z.B. stm32, teensy, nRF51 16bit-PIC). Ein Video welches mir parallel zum lesen dieser Frage durch purzelte: https:/
-
Thread
Verständnisfrage zum UDS-Protokoll
SLCAN-Protokoll bediene ich über ein Python3 script. Nun habe ich versucht eine einfache UDS-Abfrage durchzuführen. Dabei möchte ich die HW-Versionen des Moduls auslesen. Laut UDS-Standard (ISO 14229-1) verwende ich dazu den Service Identifier (SID) 0x22 alias "Read Data By Identifier") und darin
Du kannst mal zur Übung SID 22 und DID F189 abfragen, das ist die SW-Version. Die ist üblicherweise nur 4 Byte und passt damit als komplette UDS Antwort in eine CAN Botschaft. Damit SingeFrame und kein Flow-Control und keine CF.
-
Thread
ISM BAND FSK TRANSMITTER MODULE RFM02 - C Problem
// RFXX_DATA = 1 } else { PORTB &= ~(1<<RFXX_DATA); } aByte<<=1; } } [/c] In dieser Funktion werden zu Anfang zwei Schleifen durchlaufen. Erst solange Bit 4 an PortB gesetzt ist, und dann solange Bit 4 an PortB nicht gesetzt ist. Ich vermute Mal diese Vorgehensweise soll
der Grundzustand von nIRQ). Dann warte bis nIRQ auf Low ist und damit der RFM anzeigt, daß er ein Bit haben will. Bit an die Leitung anlegen. Wenn noch nicht alle 8 Bit raus -> wieder von vorn. Und hier kommt die Bedeutung der Abfrage auf nIRQ High ins Spiel: der Schleifendurchlauf der for-Schleife
-
Thread
Bussystem?
funkitonieren. Ich schicke über die RS232 meines PC's ein String der folgendes Enthält: [Geräteadresse][Abfrage oder Befehl][Zustand] z.B. 245 0 Abfrage / 1 Befehl 0 aus / 1 an Ich kenne mir mic µP aus aber ich habe keine Ahung wie ich sowas realisieren kann! Hat jemand eine Idee, oder weiß vielleicht
Ich baue gerade soetwas mit einem veränderten I2C Protokoll, das an das TCP/IP Protokoll angelehnt ist. Ich habe bereits einen 'Router' entwickelt, dadurch kann ich auch längere Stecken überbrücken und halte die Datenrate auf den einzelnen Leitungen
-
Thread
Finde Fehler nicht !
8 Taster sollen nicht 8 Inputbits belegen, sondern nur 4. Ich wollte es binär lösen. Taster 1 = Bit 0 Taster 2 = Bit 1 Taster 3 = Bit 0 + Bit 1 etc. Hier der Code: [c] /*----------------------------------------------------------------------------- ON - OFF switch with pushbutton 8
was wie "den PIN auslesen" tust du gar nicht. Du ließt den kompletten Port (alle acht Pins, also 8 Bits) und dann maskierst du ein einzelnes Bit aus. Und das Ergebnis ist dann halt entweder 0, oder der Wert, der sich ergibt, wenn nur diese eine Bit im Byte 1 ist.
-
Thread
Statusanzeige/Alarmanlage: Anregungen und Tipps gesucht.
Carsten-Peter C. schrieb im Beitrag #7599229: > vielleicht ist auch ein kleiner Webserver interessant z.B. ESP oder > Net-IO. Mit dem könnte man über eine Matrix die Kontakte abfragen und > auf jedem z.B. Handy
nehmen, die haben ein geileres CTR. Wenn man eine coole Auswertung bauen kann, kommt man mit 2 Bits aus, macht man sich's einfach, sinds halt 3 Bits (und Komparatoren).
-
Thread
Bräuchte euren Rat/Denkanstoss für µC-Bus
den uC nötig, ... Das einzige, wofür ich mir eventuell einen zusätzlichen uC aussuchen würde, wäre vielleicht wirklich einer für das LCD. Zumindest, wenn du vor hast das LCD ohne serielle Schnittstelle anzusprechen
jetzt eine idee vllt ein multiplexer zu verwenden, um die weiteren 3 sensoren über diesen mit dem µC zu verbinden und nach der reihe sie einzeln ansprechen über eine gemeinsame rs232 leitung? ginge das? denke ja, aber is das elektrotechnisch sauber gelöst? gibs andre bauteile, die da mehr geeignet sind
-
Thread
Kubikwurzel bilden
ist ganz einfach: Im Ergebniswort werden — beginnend mit dem höchstwertigen — nacheinander die einzelnen Bits testweise auf 1 gesetzt und geprüft, ob die dritte Potenz des Ergebnisses kleiner oder gleich dem Radikanden ist. Ist dies der Fall, wird das 1-Bit in das Ergebnis übernommen, ansonsten bleibt
Bit am Ausgang?
-
Thread
Roboterbau - Kombination von Raspberry und Mikrocontrollern
Meine Idee hierbei wäre es, an mehrere AtMegas/Attinys verschiedene Sensoren zu hängen (also z.B. ein uC für Wettersensoren, ein weiterer für Gyroskope/GPS/Radar/Lagesensoren). Softwaretechnisch würde dann die Hauptsteuerplatine - in diesem Fall ein Raspberry Pi 3 - immer die einzelnen uCs abfragen und
Mikrocontroller überhaupt Master spielen lassen? Wenn du die alle nur als Slave benutzt und alle I2C Sensoren selbst mit dem Raspberry abfragst machst du es dir deutlich einfacher. Das I2C am Ende trotzdem nicht funktioniert liegt dann nur in der fehlerhaften Implementierung des clock stretching im
-
Thread
Hackbarer(?) 21 EUR Quadcopter
Flanks von Clk Das sieht man auch gut in dem SWD Bitbanging Source, der oben verlinkt ist. [c] static void write_bits(uint8_t buf, size_t bits) { pin_configure(SWD_DIO_PIN, SWD_MODE_OUTPUT); for (; bits > 0; --bits, buf >>= 1) { pin_write(SWD_CLK_PIN, 0);
; ISP Control=0x33 Set bit 1= Enable ISP function... really? @3315.767938ms:Read Buf(0x5000c000)=0x00000000 @3315.927375ms:Read Buf(0x5000c01c)=0x00000000 @3315.967688ms:Write BD (0x5000c01c)=0x00000001 ; 0x5000C01C=1
-
Thread
parallele Prozesse konkurrieren um Peripherals
Symboltabelle" für den Debugger aufgebaut. Dabei ist eines klar geworden: Wegen der Bytementalität von C sind Unions mit microCore nicht möglich, es sein denn, man beschränkt sich auf eine Version mit 16 oder 32 bit Wortbreite und implementiert zusätzliche Byteoperationen per read-modify-write. Letztere
Symboltabelle" für den Debugger aufgebaut. Dabei ist eines klar > geworden: Wegen der Bytementalität von C sind Unions mit microCore nicht > möglich, es sein denn, man beschränkt sich auf eine Version mit 16 oder > 32 bit Wortbreite und implementiert zusätzliche Byteoperationen per > read-modify-write.
-
Thread
Ampelschaltung - Probleme bei der Synchronisation
else State <= A; end if; when B => State <= C; when C => if Globalcount = k then State <= D; else State <= C; end if; when D => if Globalcount = 3 then State <=
erhalte ich nun die folgenden Warnungend es Synopsis-Compilers: Pruning register CLK_EN Register bit Count(0) is always 0, optimizing ... |Register bit Count(1) is always 0, optimizing ... Register bit Count(2) is always 0, optimizing ... |Register bit Count(3) is always 0, optimizing ... Found
-
Thread
Preisgünstiger Heizungsregler bei Praktiker
wie für viele Digicams/Handy) nehmen, aber da fehlt Pin4 vom Mini-USB. Wollte jetzt nicht einen einzelnen Stecker beim C ordern. Andere Ideen?
dw 3431 ; 50°C .dw 2816 ; 55°C .dw 2322 ; 60°C .dw 1925 ; 65°C .dw 1603 ; 70°C .dw 1340 ; 75°C .dw 1126 ; 80°C .dw 949 ; 85°C .dw 804 ; 90°C .dw 684 ; 95°C .
-
Thread
Öffnen alter OR-CAD Pläne
einbinden (abb, abbneu, allg, device und omron). Zum Glück, denn bei meinem alten Orcad macht man das einzeln über den Konfigurations-Modus. Damals fehlten viele Komfortfunktionen - trotzdem erstaunlich, was man mit <100kB großen Programmen machen konnte.
so einen Dongle sauber programmieren würde, dann würde ich die Ausgabe von der Vorgeschichte der Abfragen abhängig machen. Ich meine, frage ich Zelle 7 ab, erhalte ich z. B. das Ergebnis 3. (Die vier Statusleitungen können ja nur 4 Bit liefern.) Mit Vorgeschicht meine ich, wenn ich erst 9 abfrage und
-
Thread
Timer1 läuft nicht richtig warum ?
Widerstände ein/aus. Laut Kommentar hängt aber eine LED drann. In der Hauptschleife machst du Pin Abfragen auf PINB, wobei Kommentar und Abfrage nicht zusammenpassen. Ja, was denn nun? Werd dir erst mal klar, wie du den Port B benutzen willst. (Und dann verstreu nicht die Initialisierung über 3
Alexander P. schrieb im Beitrag #1872383: > wie kann ich denn einzelne pins als eingang und ausgang zuweisen ? Tu dir selbst einen Gefallen und lies die Tutorials AVR-Tutorial AVR-GCC-Tutorial
-
Thread
Probleme mit Atmega162 und Timer0
overflow. vielleicht sollest du dir mal den generierten Assembler-Code anschauen, ob deine IF-Abfrage überhaupt noch drinnen ist...eigentlich müsste sie der Compiler rauswerfen, weil flag nie geändert wird... und sowas [c] TIMSK = 0x01; TCCR0 = 0x01; [/c] macht man nicht!
der while-Schleife, die für mich keinen Sinn ergibt tut das Programm nun auch das was ich will. [c] if(flag ==1) { flag=0; adr=PINC; PORTA = adr; PORTB = adr-6; PORTD = adr-12; } [/c] Vermute, dass das ein Problem mit der Abfrage nach den Pins zusammenhängt, welche anscheinend
-
Thread
XMOS jemand?
(time) :> void; } /* output stop bit */ TXD <: 1; time += BIT_TIME; t when timerafter(time) :> void; } [/c] Das geht bis etwa 10MBit gut, dann ist der timer schon abgelaufen vor dem nächsten Statement. Sollte im Wesentlichen
und :> Da steckt mehr dahinter als nur eine Zuweisung. Stell dir eher den streaming-operator aus C++ vor. Je nachdem wie der Port konfiguriert ist, wird dann ein Bit (oder andere Längen) seriell ausgegeben. Ports können 1 Bit, 4 Bit, 8 Bit (fehlt einer, weiß grad nicht) breit sein und entsprechend
-
Thread
Hilfe bei der Programmierung vom ATmega 2561
dem Anhang aus deinem ersten Posting fange ich leider nichts an, könntest du bitte die "normalen" .c Dateien (ich vermute es geht um C) anhängen. Gruß André
auch über ein Poti vorgegeben werden und nicht per Rampe. Aber ist Assembler nicht viel anders als C++?? MFG
-
Thread
Lockbits per Software setzen
Atmegas die Lockbits überprüfen und falls die nciht dem entsprechen, was ich brauche, setzen. [c] void check_lockbits() { #ifdef CHECK_LOCK_BITS if(boot_lock_fuse_bits_get(GET_LOCK_BITS) != 0xC0) { boot_lock_bits_set(0xC0); } #endif } [/c] Die Abfrage funktioniert wunderbar
Hi • Bit 3 – BLBSET: Boot Lock Bit Set If this bit is written to one at the same time as SPMEN, the next SPM instruction within four clock cycles sets Boot Lock Bits, according to the data in R0. The data in
-
Thread
Bibliothek: MAX 7219 / 7221 an AVR (GCC)
zurückgreifen auf max7219_disp_uint8() 7) Sowas ist teuer auf AVR: [c] if (Data & (1<<(7-i))) [/c] Stattdessen schaust du besser immer auf Bit 7 und schiebst Data nach links in jedem Schleifendurchlauf 8) Du verwendest <util/delay.h>? Das solltest du mit
Ausgabe herausfinden soll weiß ich nicht. Es sei denn ich würde in die Ausgabeschleife zusätzliche Abfragen einbauen, und dann bräuchte es im Endeffekt genauso viel Rechenzeit wie wenn ich die Abfrage vorher mache. Gruß
-
Thread
UV-Laserdrucker II
Sein Ausgangsstrom variiert mit dem Abstand zum Aluminium der Halterung. Den Verlauf der mit dem µC gemessenen Spannung in 10 Bit hänge ich als steps.pdf an. Zum Beginn messe ich die Spannung vom Sensor, liegt die über 300 Digits, fahre ich 10 mm nach rechts. Anschließend bzw. sonst fahre ich
welches auf 10.000 dpi analog x 32 bit gerechnet war ist im Rasterprozess auf 5080dpi 2c reduziert worden. Die Focusebene ist noch nicht 100 prozentig, da kämpfe ich ich im Moment, bei den Energien kann man kein CCD an den Zielort zur
-
Thread
Transistortester mit AVR Gesperrt
=> unalex: Die Defines für RS und Enable stehen unten in der lcd-routines.h: [c] #define LCD_RS PD4 #define LCD_EN1 PD5 [/c] Und zum Invertieren der Bit-Reihenfolge musst du diesen Codeabschnitt in lcd-routines.c ändern (Zeile 28-39): [c] //Eigentliche LCD-Zugriffs-Funktion
4Bit-LCD umzuschreiben, wenn nein könnte das vielleicht jemand für mich machen. Ich verstehe leider noch kein C (bin selber gerade Assembler am erlernen). Vielen Dank im Voraus Gruss Michi
-
Thread
Code Optimierung Stepper mit ADC und Taster Debounce
einstellen 1/8 SET(B,0); // PORT B Pin 0 auf 1 setzen for (;;) { if ( (bit_is_set (TIFR,0))) //Abfrage des Timer Flags { reload=ADCH; reload=reload/2; // Reloadwert zu groß TCNT0= reload; TOGGLE(B,0);
button_is_pressed() { /* Der Taster ist gedrückt wenn er gegen Masse gezogen wird */ if (bit_is_clear(BUTTON_PIN, BUTTON_BIT)) { delay_ms(DEBOUNCE_TIME); if (bit_is_clear(BUTTON_PIN, BUTTON_BIT)) return 1; }
-
Thread
berührungslos Buchdicke messen
Kreis auf, negativ und machst z.B. eine Line von diesem Kreis zur Buchmitte in den Rücken wo die einzelnen Carbon-Leiterbahnen dann kontaktiert werden. Wenn du nun nicht nur ohmisch sondern auch induktiv/kapazitiv die Kontakte abfrägst, dann hast du eine Null-Fehlerrate.
hat. Sein komisches Kunstprojekt wird er längst fallengelassen haben und statt dessen einen "Fett-µC auf dem Stuhl" kreiert haben.
-
Thread
Arduino - bringt's das ? Gesperrt
Codeschalter (oben im Bild) abfragen und habe dazu eine ziemlich lange Funktion geschrieben. Mir gab man C Beispiele mit denen das ganz einfach in ein paar Zeilen ging. Hätte ich gewusst, dass ich dort hätte einfach den Code für C nehmen
wollte einen Codeschalter (oben im Bild) abfragen und habe dazu eine > ziemlich lange Funktion geschrieben. Mir gab man C Beispiele mit denen > das ganz einfach in ein paar Zeilen ging. > Hätte ich gewusst, dass ich dort hätte einfach den Code
-
Thread
Viele Spannungsmeßwerte zum PC
user_produkte[PATTR]=HPG_1-UPG1_1-UPG2_2-UPG3_49&user_produkte[PR]=310&user_produkte[BTN]=produktbeschreibung&cHash=f270272b7c oder andere varianten http://www.plug-in.de/produkte/messen-steuern/?user_produkte[PATTR]=HPG_1-UPG1_1-UPG2_2-UPG3_0&cHash=pkkpocdhjz oder http://www.meilhaus.de/labjack+u12,i4
[c]Die Bilder in dem Forum, und dann "was gekauftes" - das paßt nit ;)[/c] Muß passen... Ich habe viele Projekte zum Thema meines Forums/ meiner HP zu laufen, habe früher auch ähnliches gebaut, siehe [
-
Thread
Peilsender -RF AVR- single chip transceiver zur Tierortung? wer hat Ahnung?
interessiert. http://www.geocaching.com/seek/cache_details.aspx?guid=57167739-bcaa-42d1-a638-d2d5678a45c4&log=y&decrypt= g
Du vielleicht auf 10°, mit einem Profi-Peiler von R&S auf vielleicht 2° bei tausendfachem Preis. c) Bei TDOA mit kurzen, breitbandigen Pulsen (UWB) bestimmt die Schärfe der Flanke die Entfernungsauflösung. Man bräuchte mindestens zwei Empfänger, wenn die Zeitpunkt der Abfrage und die Antwortverzögerung
-
Thread
CRC bei UART-Busprotokoll
gut. Ich habe euch hier erstmal nur den fehlerfreien Ablauf geschildert. Natuerlich habe ich noch Abfragen auf Zeitueberschreitungen, fehlende 'ACK' und Datenkollisionen drin. Somit kann ich auch eine Fehlerunterscheidung treffen und auf die einzelnen Fehler unterschiedlich reagieren. Ich moechte eine
Max C. schrieb im Beitrag #2813107: > Da ich vorallem > Sensordaten abfragen will, wuerde ich diese am liebsten mit einem > Zeitstempel versehen. CAN funktioniert i.d.R. so, daß die Teilnehmer nicht
-
Thread
"Eigenes USB-Gerät" für eigene Software
fangen doch die Probleme wieder an - Angefangen bei den Treibern für die einzelnen Systeme (Oder das man überhaupt einen Treiber braucht!) darüber das man nichtmal eben flexibel nen anderes System (vom µC über nen Oszi hin zum Pc) anstöbseln kann, und aufgehört das man ja das PC
richtigen Ports - da gebe ich mich geschlagen, das ist korrekt. Ich habe mir da aber angewöhnt ne "Abfrage" in meine Programmierung mit "einzubauen" - bei Auflisten der einzelnen Ports auf der Rechnerseite wird, sofern möglich, jeder Port geöffnet - eine Zeichenfolge geschicht, welcher (wenn der µC an
-
Thread
LED-Uhr mit Attiny26
LEDs antreiben oder besser noch mit 7-Segment-Treibern, von denen es etliche zur Auswahl gibt. Der µC steuert dann nur noch die seriell ausgegebenen Bits für die Anzeige, läuft mit seinem Quarztakt und stellt das "Uhrengetriebe" dar. mfg
S. (a-za-z0-9) (besser als ich) anmerkte, wird das zumindest für die oberen PNP NICHT... in einzelnen Buchstagen : N --- I --- C --- H ---T funktionieren !!! Glaubst du wirklich, dass du diese Widrigkeiten alle aus dem Weg räumen kannst, wenn du nicht einmal weißt, wie Portpins softwaremäßig zu
-
Thread
String empfangen und auswerten
schon sowas wie eine Variable mit vielen Bytes gut. Also ein Array von chars. Das macht man so in C : char Buffer [16]; danach kannst du über eine Zahl oder Variable (Index genannt) auf einzelne chars zugreifen int i=0; char was; was=Buffer[5]; was=Buffer[i]; Wobei 0 das erste Element eines
Buffer[15]=UDR; Buffer[16]=UDR; Buffer[17]=UDR; Buffer[18]=UDR; Buffer[19]=UDR; } [/C] Nein. Was soll das sein? Tu dir selbst einen Gefallen und lern doch erst mal die Grundlagen. Versteh, was die einzelnen Komponenten machen und warum der Code so ist wie er ist http://www.mikrocontroller.net
-
Thread
Controller mit mehr als 16MHz internem Takt?
Wenn ich es richtig verstehe, Regelst du, wenn c=0. c wird vom externen Interrupt auf 0 gesetzt. Wann und wieviel Mal pro Sekunde wird c=0 ? Kann es sein das du zu schnell regelst? Vielleicht mal eine Totzeit einbauen? Sehe ich es richtig, dass
keine Regelparameter. Es gibt nur den Ist- und den Sollwert. > Wann und wieviel Mal proSekunde wird c=0 ? Also c wird immer zwischen den Signalpegeln 0. Ein komplettes Signal dauert ca. 1,5ms. Zwischen den einzelnen Pulsen des Signals hat der Controller ca. 120µs Zeit die AD-Wandlung und die Regelung
-
Thread
struct vorbelegen
Hallo, ich möchte in einem Struct einzelne Bits abfragen, die mir für eine if-Bedingungen dienen sollen. Um nicht immer einen ganzen char zu verschwenden, sollte ich das mit einem struct machen: [c] struct { unsigned
unsigned SB_2:1; unsigned SB_3:1; . . . } StatusBit; [/c] Wie belege ich aber die einzelnen Bits mit 0 und 1 vor? StatusBit.SB_1 = 1; funktioniert nicht, da meckert der Compiler... Danke.
-
Thread
Lösung für Füllstandsmessung gesucht
https://cse.google.de/cse?cx=partner-pub-1202612203358489%3Ajaffbdxotov&ie=UTF-8&q=F%C3%BCllstandsmessung&sa=Suche
zuverlässig über Jahre hinweg. Den Spülkasten muss man ja nicht nehmen. Diese Regler gibts auch einzeln im Baumarkt.
-
Thread
Source Code Problem (Attiny2313 BASCOM)
Tastendruck und schaltet weiter in den Modus 2. Du musst dir darüber im klaren sein, dass dein µC viel zu schnell arbeitet, als dass du mit einem simplen If Pind.5 = 0 Then einen einzelnen Tastendruck erkennen kannst. Selbst wenn du ultraschnelle Finger hast, wird dein Programm diese Abfrage
übersehen, ich schau gleich noch mal rein :) Den Timer berechnest du ganz einfach: Taktfrequenz des uC / Prescaler / 65535 (Bei Timer1 mit 16bit) das was da raus kommt ist die Zeit in sec. die der Braucht um einmal hochzuzählen. Roland
-
Thread
LANC Implementierung
habe es gerade noch mal ohne Abfrage probiert: [c]while(1) { // Rec? PORTC = lanc[4]; }[/c] Da ich in genau diesem Byte entweder 0xEB oder 0xFB drinstehen habe, ergibt dies genau eine Änderung des 3. Bits
können auch c.a. 0,7V gewesen sein, auf dem Oszi ist das immer nicht so ganz genau ablesbar... Das mit den zwei Stopbits ist mir auch aufgefallen, sollte aber egal sein, da ich ja zwei einzeln getriggerte bytes sende
-
Thread
Wieso spricht man bei den 8 Bit-AVRs von RISC?
Renesas hat den M32C.. nicht ohne Grund so benannt. Zugegeben, es ist dort nicht alles 32 Bit. Daten-Register können zu 32 Bit komb. werden (was teils auch bei M16C mögl war), aber insbes. Rechnungen >16 Bit sind dort
andere) daran eingeschlafen sind. (Was wurde an 8051 an der Speicher-Architek. erweitert? nix) M16C20 - M16C60 - M16C80 - M32C - R32C, sind alles aufsteigende Serien. (keine dieser Serien ist zu blöd 'drausen' atomic ein Bit zu setzen oder 32 Bits auf ungerade Speicher-Adressen zu verteilen oder INT-Ebenen
-
Thread
Problem bei Temp-Messung Rasp. Pi Pico & Pt1000
. schrieb im Beitrag #7003217: > Vermutlich müsste ich OP-Amp benutzen Jein, da der rPi Pico 12bit an 3.3V Referenz auflöst, also 0.8mV, während sich die Spannung an einem Pt1000 um ca. 1.3mV/GradC ändert, könntest du auf 1 GradC auflösen. Da jedoch die letzten 4 bit der 12 bit ziemlich gestört sind
_t channel) { adc_select_input(channel); uint32_t raw = adc_read(); const uint32_t bits = 12; // Scale raw reading to 16 bit value using a Taylor expansion (for 8 <= bits <= 16) return raw << (16 - bits) | raw >> (2 * bits - 16); } [/c] Manfred M. schrieb im Beitrag #7008179
-
Thread
RS-232 als Bus mit dem UART der AVRs
AVR1 und AVR2 am Bus hängen. AVR1 sendet nun ein Paket, die Senderoutine sieht folgendermaßen aus: [c]void uart_send(uint8_t byte) { UCSRB &= ~(1 << RXEN); // Empfnger ausschalten UCSRB |= (1 << TXEN); // Sender einschalten _delay_us(100); // Warten, Bus auf High damit Start-Bit korrekt erkannt wird UDR = byte; loop_until_bit_is_set(UCSRA, TXC); UCSRA |= (1 << TXC); UCSRB &= ~(1 << TXEN); // Sender wieder ausschalten UCSRB |= (1 << RXEN); // Empfnger wieder einschalten }[/c] Ich denke die ist selbst erklärend
-
Thread
Frequenzzähler 1Hz - 40MHz
zu schaffen. In ASM würde ich schätzen das man es vielleicht bis 50 kHz schafft mit dem Mega88. In C könnte es einiges Langsamer werden, weil man wohl mehr als 32 Bit Auflösung braucht. ASM ist da bei Multiplikationen von 24 Bit x 24 Bit einfach im Vorteil. Hardwaremäßig ist der Aufwand nicht unbedingt
. Vergessen habe ich ... |- * die F_CPU Abfrage auf 24 Bit in der |main.c|, die nun raus könnte. Neu hinzugekommen sind die 64Bit Funktionen von Matthias Hopf und eine Anpassung der bin2bcd Funktion auf 5 (6) Byte Argumenten. In der |main.c
-
Thread
C-Programm auf XC866 'verzählt' sich
habe einen Microcontroller vom Typ XC866. Diesem möchte ich von einem Rechner mit W2k über eine 8-Bit-Verbindung insgesamt 5 Byte übermitteln. Der Rechner verfügt dazu über eine GPIB-Interfacekarte. Vor dem Controller hängt eine Karte, die aus dem GPIB-Signal insgesamt 64 Signale macht, die einzeln
reagiert auf eine steigende Flanke auf der 9. Leitung mit einem Interrupt (ISR siehe Anhang, Datei int.c, Funktion TriggerISR() ). In dem Programm steht P3_DATA für den 8-Bit-Eingang, an dem die 8 Leitungen für die Werte verbunden sind, P0.0 bis P0.2 sind mit Dioden (high-aktiv) verbunden, damit ich mir
-
Thread
Hardware PWM Timer1 funktioniert nicht
8 Bit und ohne Vorzeichen. ) [C] ISR(TIMER1_COMPA_vect) { Servo_Port = 0x00; Servo_ID++; if( Servo_ID == Servo_quantity ) Servo_ID = 0; Servo_Port = Servo_Bit[Servo_ID]; OCR1A += current_position[Servo_ID]; } [/C]
-
Thread
Zahl überprüfen
Die relevanten Bits sich raussuchen und überprüfen?
löst Dein Problem. Du musst die "134" erst als string vorliegen haben und kannst dann mit strchr einzelne Zeichen abfragen. Grüsse, R.
-
Thread
RFM69 OOK - ein Bit zuviel zwischen Transmissions
I/O für Debugging) Im speziellen kann man sehen: - scope07.png: Sieht so aus wie man sich [0x3C, 0xAA, 0x0C] vorstellt. - scope08.png: Hier sieht man das zusätzliche HIGH-Bit vor 0x3C (von Cursor markiert), Zusätzlich ist das letzte Bit von 0x0C zu lang, und zeigt, dass OOK so lange das letzte
nehm ich die gerne :D @fixxl: Ich hab meinen Testcase entsprechend geändert das unerwünschte Bit ist aber leider immer noch da. sieht jetzt in etwa so aus: [c] void sendFunc2(int debugPulses, byte byte1, byte byte2, byte byte3) { // send block of 3 bytes, pre-fill FIFO and change to TX
-
Thread
Suche Mentor für Entwicklung eines Audio-Messwert-Erfassers
wechselt der 3. Draht alle 4 Byte seinen Status, d.h. im SPI-Interrupt bräuchte ich nur den Pinstatus abfragen. Da nur 3 der 4 Byte wirklich Daten enthalten, könnte ich das 4. Byte grundsätzlich ignorieren und so z.B. auch RAM-Speicher sparen. > Du must somit nicht mehr jedes Byte einzeln von hand durch
, 24-bit Yes Yes Also auf Seite 22 sieht man beim I2S Timing Diagram, dass vor den 24Bit "Nutzdaten" ein Bit zum Vorspülen getrunken wird und nach den 24 Bit Nutzdaten wird auf der BCK-Leitung noch lustig
-
Thread
Arduino: page-write in I2C eeprom verliert sporadisch ein Byte
Speicher, weil keine Doppelpufferung benötigt wird. Und wenn noch viele andere Leitungen mit am I2C hängen, kann der EEPROM leicht gestört werden und falsche Daten schreiben. I2C kennt ja keine CRC. Ich speichere daher über einzelne Datenblöcke auch immer eine CRC mit im EEPROM.
einmal anschaut [code] 0101.0000 0x50 0101.1000 0x58 [/code] dann unterscheiden sie sich im 3. Bit. (7 Bit Adressierung) Laut Datenblatt des EEproms AT24C256 ist das "3. Bit" jedoch unveränderbar auf 0. [code] 1010. A2 A1 A0 R/W. bzw. 0101.0 A2 A1 A0 [/code] Die Frage lautet wo kommt die
-
Thread
ENC28J60 (Mikro-)Web-Server die Nächste
Dump des kaputten HTTP Headers mitschicken könntest. [pre] 0000 00 16 e6 d3 36 a2 00 03 6f 55 1c c2 08 00 45 00 ....6...oU....E. 0010 00 81 00 03 00 00 40 06 f8 c4 c0 a8 00 5d c0 a8 ......@......].. 0020 00 02 00 50 0f 85 00 00 00 e5 3f a4 1c 73 50 18 ...P......?..sP. 0030 05 b4 6c e5
Häng mal deine HttpD.c an.
-
Thread
PHILIPS VP5500 VoIP Telefon bei Pollin
16 RAM disks of 4096K size 1024 blocksize I2C driver Apr 7 2006 / 14:44:18 Initialize i2c-client-dbmx-codec module Philips Flash for MX21: probing 32-bit flash bus Amd/Fujitsu Extended Query Table v1.3 at 0x0040 number of CFI chips: 1 cfi_cmdset
S90dropbear # ./S90dropbear start Generating keys for the dropbear ssh server: Will output 1024 bit rsa secret key to '/etc/dropbear/dropbear_rsa_host_key' Generating key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwCaTiBj/VToR9+ZaCJ1z1Nb+3c78kc CYa5Jxcm9l5lK3zE61t
-
Thread
Atmega8 Timer1 Interrupt Routine wird nicht angesprungen
möchte eine PWM erzeugen. Am Ausgang OCA1 ist eine LED angeschlossen. Der AD-Wandler ADC0 soll im 10-Bit Modus laufen. Die Interrupt Routine wird nicht angesprungen. Ich finde den Fehler nicht. Wenn mir jemand helfen könnte dem wäre ich dankbar. [c] #define F_CPU 160000000 #include <avr/io.h
den Kommentar umgesetzt, und siehe da es funktioniert. Dabei habe ich der Übersicht halber noch einzelne Änderungen durchgeführt. Der neue C-Code lautet folgendermassen: [c] #define F_CPU 160000000 #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> volatile uint16_t buffer