-
Thread
Assembler lernen für Mikrocontroller-Programmierung
Hallo zusammen, bei der Assemblerprogrammierung lernt man ja jedes Bit des µC einzeln kennen. Habe das im Screnshot zu sehende Programm zum Festellen des Systemtaktes benutzt. Das Oszi zeigt eine Frequenz von 14,660kHz an PB4 ( Pin3 ), an. Dies mal 8 ergibt -> 117,280kHz
-128 bis 127 -> V gesetzt $C2-$FF = -62 - -1 = -61 liegt im Bereich -128 bis 127 -> V nicht gesetzt Das gilt dann auch für 16-bit, 32-bit etc. arithmetik.
-
Thread
ATmega2561 - USART
patronic wrote: > ja im ich möchte jedoch einen string senden können. In C? Ist doch kein Problem. Wenn du erst mal eine Funktion hast, die ein einzelnes Zeichen korrekt versendet, dann ist es doch trivial darauf aufbauend eine Funktion zu schreiben, die einen String
receiver and transmitter*/ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /*Set frame format: 8data, 2 stop bit */ UCSR0C = (1<<USBS0)|(3<<UCSZ02); } /*USART Transmit*/ void USART_Transmit(unsigned char data) { /*Wait for empty transmit buffer*/ while(!(UCSR0A & (1<<UDRE0))) /*Put data into
-
Thread
Temperatursensor an LPT
, aber ich frage lieber nach, weil der LPT ja nicht so sicher wie der COM Anschluss ist. Die einzelnen Ports werde ich dann mit VB oder C abfragen... Schönes Wochenende x86
Du mußt erstmal den Port auslesen, und dir dann das jeweilige Bit ausmaskieren: [c] a = inp(BASE); if(a & (1 << BIT#)) {...} else {...} [/c] BIT# = 3, falls deine Daten an D3 gehen, halt als Beispiel.
-
Thread
STM32Cube HAL UART Einstieg
einen Eindruck zu kriegen, wie sowas geht: https://www.mikrocontroller.net/attachment/316790/STM32F103C8T6.ZIP Im Prinzip hast du ja in main immer eine Grundschleife, in der sich der µC dreht, wenn es sonst nix zu tun gibt. Also etwa so: immerzu: mach dies mach das wenn X dann mach Y
nennst du "nichts Einfacheres"? Und du meinst, sowas sei eine Hardware-Abstraktion? Lies mal das: [c] char c; if (RxAvail(UART1)) { c = GetChar(UART1); Char_Out(c, UART1); } [/c] Bei sowas ist ne echte HW-Abstraktion dahinter. Das ist Code, der bei Vorhandensein ordentlicher LL-Treiber
-
Thread
1-Draht-Bus in BASIC
Tasteneingabe eines angesprochenen Slaves zum Master übertragen und dort verarbeitet werden. Die C-Control (Master) ist bereits vorhanden. Ebenso die einzelnen Softwarebausteine zur Tastenauswertung im Slave und zur Verarbeitung dieser Daten im Master. Was jedoch noch fehlt ist die komplette Bus-Verbindung
. Tatsächlich ist es aber so wie Du vermutet hattest. Also sternförmig verdrahtet. Paralleles Abfragen dürfte aber so wie so schwieriger sein, da ich ja nicht nur ein Bit, sondern mindestens ein Byte vom Slave zum Master senden muss. Jeder Slave überwacht 2 Tasten auf "Klick", "Doppelklick", "langes
-
Thread
3 Interrupts am Arduino Nano
if (PIND & bit(4)) // if it was high ISR_C; Serial.println("ISR"); //Kommt NICHT :( } [/c] ISR_A,B,C sind die separaten Methoden für die einzelnen Pins
OLED Display dar Serial.println("A: " + String(total_A) + " B: " + String(total_B) + " C: " + String(total_C)); } [/c] Erstaunlicherweise, haben die Zähler "total_A,B,C" auch plausibel gezählt obwohl ich mit den Bits um eins verschoben war, es scheint mir als ob die Maskierei gar nicht
-
Thread
Alles Rund um den MEDION LIFE P89626 NAS
PPPoL2TP kernel driver, V1.0 NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix NAND 128MiB 3,3V 8-bit) Scanning device for bad blocks Creating 7 MTD partitions on "NAND 128MiB 3,3V 8-bit": 0x000000000000-0x000000040000 : "stage1" 0x000000040000-0x0000003c0000 : "uboot" 0x0000003c0000-0x000000440000
dann ist zumindest das zuletzt genannte Kommando in der Lage irgendwo auf der Platte zu lesen: [c] #define CFG_64BIT_STRTOUL [/c]
-
Thread
mega8 - fragen bei assembler
da ich die pullups nicht benutzen will sollte das alles gewesen sein richtig?? die frage bei port c: das ist nur ein 7 Bit Port..wird der trotzdem so als wären es acht initialsiert?? der pin 6 soll als normaler ausgang aktiviert werden, nicht als reset..richtig so?? oder fehlt da noch was?? was fehlt
ihn als Ausgang zu verwenden. Solange sie gelöscht ist, kannst Du in die Steuerregister für Port C, Bit 6 programmieren, was Du willst. Ansonsten klar, Du mußt den Port natürlich im Ganzen ansprechen, Bit 7 ist offiziell reserviert, d. h. es wird als 0 gelesen und sollte als 0 geschrieben werden
-
Thread
Möchte Arduino mit RFM70-S verbinden!?
Befehle' aufnehmen kann? Nein. Das heißt, daß gerade etwas passiert ist und das Modul dies dem µC mitteilen will, dieser also schleunigst per SPI mal den Status abfragen soll, um herauszufinden, was jetzt passiert ist.
Weißt du was ein Register ist? Weißt du dass einzelne Bits in so einem Register spezielle Funktionen und Namen haben? (PRIM_RX z.B.). Im Datenblatt steht was diese Bits bewirken. Im Datenblatt steht wie man die Register schreibt und liest Im Datenblatt
-
Thread
Giess-o-mat mit AVR Version 2
wirklich Lust hätte. Hat mittlerweile schon jemand ein Board-Layout erstellt? Ich bin noch blutiger µC- und teils E-Anfänger und möchte den Code und die Schaltung gerne verstehen. Ich würde u.a. gerne das Layout um eine USB-Schnittstelle erweitern und irgendwie eine Web-Abfrage o.ä. implementieren, um
hi eine frage habe ich noch zu diesem projekt kann man da noch ein lcd display mit i2c anschliessen oder geht das hier nicht mehr so könnte man direkt an lcd die einzelnen werte der sensoren ausgeben
-
Thread
LPC935 EEPROM-Programmierung
kannst du keine Int Werte (16Bit) direkt speichern. Du musst diese erst in zwei einzelne Bytes aufteilen und getrennt speichern/abfragen. In deinem Beispiel schreibst du "DEEDAT = 511" was unsinnig ist, da du nur Werte zwischen 0-
Speziell zu der LPC900 Familie von 8051er Controllern kann ich dir das Buch auf www.c51.de empfehlen. Ich habe es mir damals selber gekauft und es erklärt sehr gut die Software sowie Hardware Aspekte dieser Controller. Es sind auch sehr viele Codebeispiele mit dabei um die einzelnen Funktionen
-
Thread
Differenzverstärker INA105
ich meine fast, die Aufgabe bekommt man sogar nur mit Spannungsteilern hin, wenn man statt des 10-Bit-MCP einen 12-Bit-Wandler nimmt...
fertige Chips, da verbindest du deine 15 Zellen einfach dran, und kannst dann bequem über SPI oder I²C alle Einzelspannungen abfragen. Ja, kosten ein paar €, und nein, fertige Arduino-Breakout-Boards bei Aliexpress findest du eher nicht. Beispielhaft mal das Datenblatt für den LTC6812-1 angehängt
-
Thread
CARRY schnell invertieren Assembler ATmega8 ?
>Und warum musst du es bitweise umdrehen? Nach 8 Bits ist einfacher. So einfach ist das nicht: Weil der MASTER vom 1WIRE Datenbus mur einzelne Bits sendet bzw. empfängt, speziell im Search-Modus, 2 Bits empfangen, danach ein Bit senden
#4409298: > So einfach ist das alles nicht, zumal der MASTER sehr schnell > hintereinander die Bits abrufen kann. Was ich beschrieb sorgt vor allem dafür, den zeitkritischen Teil der ISR zu entlasten. Im verlinkten Code hat an genau dieser Stelle die zeitraubende Abfrage einer Statemachine drin
-
Thread
Mit der Butterfly an den CAN Bus?
>In Bascom müsste ich mich kurz einarbeiten, C wäre evtl. für mich >leichter, da ich C++ behersche (mehr oder weniger). Und wenn du mit Bascom "arbeitest" gehst du uns damit auf den Keks... Da du C++-Kenntnisse hast, solltest du sie nutzen
sondern als Software-SPI. @Stephan: Software-SPI = SPI via expliziter Programmierung der einzelnen Portpins ohne Benutzung des SPI-Moduls des Controller, Bit für Bit, Zustand für Zustand. Ist eigentlich kinderleicht - vorausgesetzt man versteht die entsprechenden Signaldiagramme vom Datasheet.
-
Thread
Gitarreneffekte selber bauen
M4 ARM haben durchaus Befehle deren Resultat in 2 Register geschrieben wird. Das sind mithin 64 bit. [code] ldrd r2,r3,[r0,#0] smull r1,r2,r2,r3 ldr r1,[r0,#8] str r3,[r0,#8] [/code] Daran sollte es also nicht scheitern. Ich zweifle nur daran, dass ein C-Compiler da immer
passenden Zugriffssequenzn parat hat, obwohl ich aus reiner Bequemlichkeit auch so etwas schon in C geschrieben habe. Da war mit aber die Perfomance schlicht egal. [code] tmp = (((long long)co * (long long)s1) >> 30) - s2; [/code] Beim 56002 ist es halt bequemer, weil der 56 bit Akku
-
Thread
unauffällige Ferienausüberwachung
Wenn es nur um unbefugte Vermietung geht, Licht abfragen. Ist noch Platz im Sicherungskasten? Laufen da vielleicht gleich geschaltete Leitungen vom Licht durch? Oder Stromverbrauch: Versorgung für Licht mit der Spule eines ausgedienten FI-Schalters abfragen
mit Passwort herum und die werden sich garantiert einloggen. Einfach den Router aus der Ferne abfragen - man sieht sofort, ob jemand im Haus ist - weil eingeloggt.
-
Thread
einfache Grafikkarte mit 256x252 und 256 Farben für AVR
Dann bleibt nur noch der K6T4008C1B-DB55. Das Video kann ich leider nicht sehen, aber aus dem Teil könnte man doch ideal ein Oszi bauen. Noch einen parallelen A/D Wandler mit 8 bit. an PortD. und fertig
ich dachte jetzt ich nehme mir ein Bild, ändere die Größe auf 256X252 Pixel und speichere es als 8Bit-BMP wieder ab. Ohne jetzt den Rechner zu starten sehe ich schon so, das es (für einen µC) viele Bytes sind. Aber ich denke, einfacher geht es wohl nicht? Ich stelle mir das so vor, das man ein paar
-
Thread
AVR-Controller Eignung
gelegenheit.(THX für den Tip) Was mich derzeit aber brennend Interessieren würde ist die I2C Geschwindigkeit unter Basic. (Das Bascomdemo sauge ich heut Abend damit ich mal nen Eindruck bekomme welche Befehle mir da zur verfügung stehen.) Bei der CC1 hab ich mit nem PCF8574 (8-Bit Port einfach
) mit werten zu versorgen braucher ich schon satt über ne Sekunde. 8 Fühler will ich auch noch abfragen und das LCD am I2C soll ebenfalls versorgt werden was dann am Ende mit berechnungen so auf 10 Sekunden für einen kompletten Programmzyklus kommt. Da kann ich gleich per Hand regeln und die Werte
-
Thread
Hardware Programmierung mit Python
interaktiven Shell Python-Anweisungen ausführen lassen. Das ist für den Einstieg in einen neuen µC-Typ ganz praktisch, weil man damit erst einmal aller Features einzeln und interaktiv ausprobieren kann, bevor man beginnt, daraus ein ganzes Programm zu erstellen. Auch zum Debuggen ist das ganz
angefangen bei alternativen Interpretern wie Pypy bis hin zu der Möglichkeit, Python ganz oder nur einzelne Teile des Codes in andere Programmiersprachen zu übersetzen und dann in nativen Code zu übersetzen. Und dann gibt es natürlich immer noch die Möglichkeit, performancekritische Teile in C oder C++
-
Thread
Probleme mit Temperatursensor DS18B20
Wertigkeiten 8 4 2 1 1/2 1/4 1/8 1/16 enthält. Das obere Byte mit den Wertigkeiten <5 gleiche Sign Bits> 64 32 16 lässt Du dann entfallen. 20° -16 = 4 => LSB = 64 (1/16°) 64 / 2 = 32 Da meine DS18B20 gerne 1 bis 2°C mehr anzeigen, haut 40 - 50 hin.
dazu, dass der nachfolgende Befehl von allen ICs im Bus ausgeführt werden soll. Will man einen einzelnen IC ansprechen, so sagt das Datenblatt sende &H55 und danach die 64-Bit Adresse des ICs. In BASCOM würde das so aussehen: [code] Dim DS18B20-ID(8) As Byte 1wreset 1wwrite &H55 1wwrite DS18B20
-
Thread
Es geht einfachnicht in meinen Kopf rein.
r16,PortC ; Inhalt von Port C ins Register 16 sbr r16,192 ; Bit 8 und 7 setzen 128 + 64 sbis PIND,PIND5 ; Überspringe den nächsten Befehl, fals Bit 5 in PIND gesetzt ist cbr r16,128 ; Bit 8 löschen
@Holger P. Dein Code [avrasm] lds r16,PortC ; Inhalt von Port C ins Register 16 sbr r16,192 ; Bit 8 und 7 setzen 128 + 64 sbis PIND,PIND5 ; Überspringe den nächsten Befehl, fals Bit 5 in PIND gesetzt ist cbr r16,128 ; Bit 8 löschen
-
Thread
Wie funktioniert die Erkennung beim Hörstift TING?
wenn man zu C gehe muss. Bei den Code für B steht dann z.B. 6002: - $1 == 1? $1 := 2 P(gut_so) P(jetzt_zu_C) - $1 < 1? P(das_war_zu_voreilig) - $1 > 2? P(hier warst du schon) 3. Sorry, da musst du
12838; 6841/7160 are disabled. Audio Table entries: 770 Audio table repeated twice Checksum found 0xC1A64BA3, calculated 0xC1A64BA3 St_germain
-
Thread
SD-Card an MSP430F1612 (wieder mal.)
PowerUp CS_HIGH(); for(i=0;i<=9;i++) spiSendByte(0xff); return (mmc_GoIdle()); } [/c] 1) Muss es nicht im Kommetar heissen, dass P5.0 ein INPUT ist, denn in der Funktion mmc_ping (mmc.c) wird das erste Bit des Ports 5 abgefragt...also INPUT??? Ausserdem Wird ja per P5DIR |= 0x1A;
rein! Könnte Dir eventuell andere Variablen in Prog zerschießen! 2.) >Das sollen doch die einzelnen Bytes sien, oder? aber warum ZWEI stellen? >Nen Byte sind doch ACHT bit. mit 8Bit kanns'te Werte von 0 bis 255 darstellen. Die ZWEI Stellen sind im hex-Format und gehen von 0x00 bis 0xFF, das
-
Thread
"State Machines": Anzahl States minimieren oder maximieren?
Vielleicht mal nen Blick auf die Implementierung werfen. 1.Fall [c] { SetRelaisOn(); Wait3m(); int x= GetBrightness(); if (x >= Limit) DoSomething(); else DoSomethingElse(); } [/c] Irgendwie lässt sich das so ganz ohne Statemachine
komplexen Statemachines Die moderne Variante davon ist ein Summentype der alle States abbildet. [c] using sm = variant<State0, State1, State2, ...>; [/c]
-
Thread
Mega32 mit VS1011 und SD-Karte -> Es will einfach nicht
20*10mS = 200 mS delay(10000); // 10 mS // set SW reset bit buf[0] = 0x04; vs1001_write(0,1,buf); // set bit 2 for (i=0;i<2;i++) // 2*1mS = 2 mS delay(1000); // 1 mS //loop_until_bit_is_set(DREQ_PORT , DREQ_PIN); //wait
0x45 -> DREQ) - Immer 32 Byte von der Datei lesen, Bsync-Pin auf 0, SPI senden, Bsync auf 1, DREQ abfragen, neue Daten lesen ... Hab ich da irgendwo was falsch verstanden? Es kommt nämlich gar nichts, kein Knacken, nichts. Dann hab ich heute mal die FuseBits nochmal ausgelesen. Dachte eigentlich,
-
Thread
[C] Programmablauf funktioniert nicht richtig - Fehlerhafter Ablauf?
Programiermodus ist, soll die LED 3 (PB2) blinken und kein Umstellen der Servos mehr erlauben. Der Timer0 (8-Bit) dient dazu, die Taktperiode von 25ms zu generieren. Da es nur ein 8-Bit ist, musste ich mir etwas einfallen lassen, um auf 25000 Impule zu kommen. Der Timer1 (16-Bit) dient dazu, die Impulsweite
kann. Ich habe mich bei der Entwicklung an dem Code von dem Stefan Windgen orientiert und bei der 8-Bit versucht, die einzelnen Register aus dem Datenblatt zu lesen. Da mein Englisch aber für die Tonne ist, kann es sein, das ich den ein oder anderen Registereintrag falsch gesetzt habe. [c] TCCR0B
-
Thread
Serielle Schnittstelle
} [/c] Blackbird
data output (readable) |7|6|5|4|3|2|1|0| ports 278, 378, 3BC | | | | | | | `---- data bit 0, hardware pin 2 | | | | | | `----- data bit 1, hardware pin 3 | | | | | `------ data bit 2, hardware pin 4 | | | | `------- data bit 3, hardware pin 5 | | | `-------- data bit
-
Thread
SVPWM Ansteuerung eines BLDC
es geht besser als ich dachte. Trotz wild west Verkabelung habe ich nur ~5 Counts "rauschen" mit 10bit ADC. Jetzt kann ich auch mal mit der Vorwärts Clark und Park spielen. Habe mir noch INA213 (kosten nur 2€ etwas bei C) besorgt aber die passen nicht auf die SMD Adapter die ich eigentlich benutzen
voll wird Oder die FPU Einheit mit dem Rechnen nicht fertig wird, sich aufhängt, aber der Rest des uC's weiter läuft? Ist natürlich nicht optimal mit Floats zu rechnen, aber dafür ist das Programm für mich viel leserlicher und die Werte nachvollziehbarer. PWM läuft mit 12 Bit Auflösung. Mal schauen
-
Thread
myAVR PORT Expander
sollte wenigstens in etwa wissen, wo es lang geht. Man kann z.B. die jeweils 2 Ports auch als 16-Bit-Port benutzen; Je nach Anwendung kann das günstiger sein. um die Ports einzeln ansprechen zu können, würde ich twiInitPCA() z.B. so ersetzen (ich kann mangels Chip nichts testen): [c] #define
myavr workpad plus gibt es codebeispiele und auch die der TWI. aber zunächst zu deinem code: [c] #define ADDRESSMASK 0b00001110 // ??? #define PORTMASK 0b00000001 // ??? // DDR einzeln setzte, port=0..15; je 2 auf einem PCA9555 void twiInitPCA_DDR(uint8_t port
-
Thread
miniLa Software
notfalls hin zum Kühlkörper. Es haben sich bei mir auf meinen Bord max. Temperaturen von ca 53°C eingestellt. Wigbert
Eine statisch gelinkte wäre toll. Ich habe ein 64 Bit System, da ist das immer ein bisschen Geprügel...
-
Thread
RFM12 FIFO Empfangsproblem
Frage, warum ich nur die ersten zwei gesendeten Bytes empfangen kann. Ich vermute, dass der RFM12 16bit in den FIFO überträgt und di nächsten 16bit können nicht in den FIFO geschrieben werden. Kann es evtl. noch ein Timing Thema sein, dass ich den FIFO schon zu früh abfrage? Kann es möglicherweise
write(0x94A0); rfm12_write(0xC2AC); rfm12_write(0xCA81); rfm12_write(0xCA83); rfm12_write(0x9850); rfm12_write(0xE000); rfm12_write(0xC800); rfm12_write(0xC000); }[/c] Zum Interrupt: Ich
-
Thread
STm32Fxxx: I2C Hardware Experten gesucht
bleibt da hängen, wenn das EEPROM mit seinem internetn Zyklus befasst ist. Gruss, Christian [c] /* --------------------------------------------------------------- Schreibt ein Byte in eine einzelne Adresse Eingabe: Nr. des EEPROMs (0 und 1) 16 Bit Adresse 8
(I2C1, ENABLE); if (I2C_WaitForEvent(200, I2C_EVENT_MASTER_MODE_SELECT) != SUCCESS) return ERROR; // Adressiere das E2PROM I2C_Send7bitAddress(I2C1, EE, I2C_Direction_Transmitter
-
Thread
Ab wann lohnt sich ein 32bit Controller? Compilerkosten?
Zyklen long + long - Zeit 16bit 10 Zyklen - Zeit 32 Bit ??? Zyklen long - long - Zeit 16bit 5 Zyklen - Zeit 32 Bit ??? Zyklen [/c] Dann könnte ich den Zeitvorteil in etwa abschätzen. Uart / LCD wird nicht ausgeführt.
Versuch unternommen ein paar Controller zu vergleichen. Habe letztens auch mal einen PIC32 (80MIPS/32Bit/C32) mit einme PIC24 (40MIPS/16Bit/C30) vergleichen. Bei reinen 16 Bit Berechnungen war der PIC32 ca. doppelt so schnell, wenn man mal von den Spezialfunktionen der dsPICs absieht. Sobald dann aber
-
Thread
Analoges Projekt auf MC umrüsten. Frage zu PIN Zuweisungen.
mehreren LEDs programmiert, per Codierschalter die Geschwindigkeit einstellen, am Analogport ein Poti abfragen und alles schön einzeln abgespeichert. Dann, erst dann, eine reale Anwendung, die meine zuvor erarbeiteten Grundlagen benutzt hat. Nach vielen Jahren ohne µC, wegen beruflich anderer Aufgaben,
Ein Port (D) hat statt 8 nur 7 Bit. ciao gustav
-
Thread
Welches memcpy ist schneller?
dst++ = *src++; #endif } #else #pragma message("solution not implemented") #endif [/c]
Implementierung) nutzen? *) Siehe z.B. https://github.com/gcc-mirror/gcc/blob/master/libgcc/memcpy.c
-
Thread
Taschenrechner: ATmega1284p - 15x 7-Segmentdisplay
int96.html > > In Modulus(..) befindet sich die Routine zur Division von CInt96. Also das da: [c] Remainder.Zero(); for (int i=0; i<96; i++) { Remainder += tempDividend.GetBit(i); BOOL bBit = (Remainder >= tempDivisor); Quotient.SetBit(i, bBit); if (bBit
res = temp; } add >>= 1; // shift right the 'additional' bit } return res; }[/c]
-
Thread
ATmega8: Das Buch
gesetzt. Das passt nicht zusammen. Am besten diesen Abschnitt komplett löschen. "Man kann in C auch einzelne Bits manipulieren, nur wer braucht so etwas schon in halbwegs normalen Programmen? Schlicht niemand! Wer hat das Problem, dass er aus seinem PC auch noch das letzte bisschen Geschwindigkeit
Helmut S. schrieb im Beitrag #3938862: > "Man kann in C auch einzelne Bits manipulieren, nur wer braucht so etwas > schon in halbwegs normalen Programmen? Schlicht niemand! Wer hat das > Problem, dass er aus seinem PC auch noch das letzte bisschen > Geschwindigkeit
-
Thread
E2PROM Atmel AT24C512 - Was ist da anders?
, ENABLE); if (I2C_WaitForEvent(I2C_EVENT_MASTER_MODE_SELECT) != SUCCESS) return ERROR; // Adressiere das E2PROM I2C_Send7bitAddress(I2C1, E1_WR_ADR, I2C_Direction_Transmitter); if (I2C_WaitForEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) != SUCCESS) return ERROR; // Adresse als 2 x 8 Bit senden I2C_SendData(I2C1,upper_addr); if (I2C_WaitForEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED
-
Thread
Schwerpunkte in den Datenblättern
denn die SFRs von Timer, PWM, ... mit C zu tun? Das einzige, was du von C-Ebene dazu wissen musst -- dito für C++, Assembler, ist: - Wie wird ein SFR gelesen, geschrieben? - Wie setze / lösche / toggle ich einzelne Bits in einem Wert?
der zur Komponente gehörenden SFRs und Bedeutung der einzelnen Bits. Beim Lesen gehe ich dann in der Reigenfolge 1 - 3 - 2 vor. Lesen von 3 gibt schon mal einen sehr guten Überblick was die Komponente kann und wie diese tickt. Gory Details gibt es dann
-
Thread
C Katastrophen.
: int a[10]; Dann wird fleißig über diese Arraygrenze hinaus in der Gegend rumgeschrieben: a [c] = 0; Natülich zerlegt das in C den Speicherinhalt. Das ist aber ein Problem des C-Programmierers, der weiß nämlich, daß das passiert und wenn es nicht passieren darf, wird er eine Abfrage einbauen
c { gcc -Wall -fbounds-check -fstack-protector -D_FORTIFY_SOURCE=2 -I. -O5 \ -D_GNU_SOURCE -D__SMP__ -DLINUX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS \ -D_REENTRANT -std=gnu99 -lpthread -lncurses -
-
Thread
WTV020 Start - Stop - ohne AVR
Dir ist klar, was du willst, dem Leser nicht. - Wenn du mehrere Vorgänge parallel hast (Taster abfragen, Signal State Machine und LED blinken) bietet sich das in einzelnen Unterfunktionen an, die jeweils eine eigene State Machine abbilden. Das geht mit Hilfe von switch/case Stukturen. Klingt kompliziert
besten verarbeiten. „state“ kann nur maximal 3 annehmen, da reicht die native Datenbreite des AVRs mit 8bit vollkommen. Für „counter“ kann der Wert bis zu 3000 annehmen, da reicht 8bit nicht. Also nimmt man 16bit. Bei einem ARM Prozessor mit 32bit kann man in aller Ruhe alles mit 32bit machen, der Prozessor
-
Thread
Ergebnisse einer FFT zusammen fassen
Board von Texas Instruments. EK-TM4C123GXL mit einem ARM® Cortex®-M4F Based MCU TM4C123G. Der hat 2 ADC's. Der ADC hat folgende Daten: [c] -ADC resolution = 12BIT -ADC conversion clock frequency = 16Mhz -ADC conversion rate = 1Msps
c-hater schrieb im Beitrag #7224176: > Was ich verwende, sind sozusagen einzelne Bins einer FFT > (Goertzel-Filter). Das hat den Vorteil, dass man für jeden einzelnen Bin > getrennt die Bandbreite einstellen
-
Thread
???SMS vom Computer über Handy schreiben????
ein Siemens Handy finden was auch den Textmodus kann! Ich war felsenfest der Überzeugung dass mein C35 Textmodus kann. Doch es kam nur eine "0" bei der Abfrage :-( Weiss einer welches S das kann? Und nochwas, gehe ich recht dass man die Baudrate am Handy ändern kann? Gruss, Uwe!
so kompakt wie ich den code in c gebastelt hab wirst dus in basic warscheinlich nicht hinbekommen... lies dir das mal duch: http://www.nobbi.com/sms_pdu.htm für die einzelnen flags hatte ich mal auch irgendwo eine doku.. aber
-
Thread
Höhenmessung
mal Bescheid, von wo und was einer kostet. Ich spiele auch mit dem Gedanken. Ich würde dann mit I2C arbeiten wollen.
garnicht drauf gekommen, einfach mal bei Katalogversendern zu suchen ;-)) Wie steuert man aber ein I2C-Device mit einer 10Bit-Adresse mit einem AVR unter Nutzung des Hardware-TWI-Moduls an??? siehe auch hier meine Anfrage dazu: http://www.mikrocontroller.net/topic/58626 Ich mache das jetzt per Software-I2C
-
Thread
AVR TWI - Frage zu TWSTA
Hallo, ich habe eine Frage zu dem TWI START Condition Bit (TWSTA). Im Datenblatt (des ATmega324A) steht: > TWSTA must be cleared by software when the START condition has been transmitted. Wenn ich TWSTA wie im C-Code unten nach der Start Condition löschen
Hi Ich denke es ist einfacher TWCR mit einem 8-Bit Wert zu beschreiben, als einzelne Bits zu setzen oder zu löschen. Dadurch würde bei einem nachfolgenden Senden von SLA das Start Bit sowieso gelöscht werden, vermeide also TWCR |= ... und TWCR &= ..
-
Thread
Wiederstandsmessung mit ATmega16
Register wird dann am Port B ausgegeben. Kenn hier jemand ein kleines Programm in ASSAMBLER oder C?
als der Vorgegebene. PS. Könnt ihr ein Buch empfehlen, um AVR und Assembler zu lernen, oder ist C besser?
-
Thread
4" TFT für 7,97€
voltage entfernt ist, wird heller dargestellt. Wenn man nur wenige Farben darstellen möchte (z.B. 1-2bit pro RGB), dann kann man auch auf die Gamma Korrektur verzichten und die Invertierung in Software machen. Dazu könnte/müsste man das signal voltage / phase inversion control out Signal abfragen, das
die Hardwareseitige Verwendung von PHASE_INVERSION. Das geht nur in den µC, damit man entsprechend für ein schwarzes Pixel nun die Bits invertiert. Damit wäre allerdings, wie Bennedikt schon sagte, die Farben alle sehr blass und man bekäme keine schönen Kontraste. Außerdem
-
Thread
AVR als EPROM benutzen (C-Optimierung)
hören. Aber meine "Competition" war eher "schneller kann nur der Assembler-Mann". Und ich mag eher C++ als C.
nicht, was ihr so für Zeugs schreibt, bei mir ist > aber selten etwas so Zeitkritisch, dass es auf einzelne Takte ankommt. Ja, das "Problem" kenn ich. Mir liegt C auch eher als ASM und ich hatte bisher nur ein einziges Projekt wo es auf jeden Takt ankam.
-
Thread
Mehrere gleichzeitig per AVR messen lassen??
das ergebnis ab. erst aenderung AND 1, dann aenderung AND 2, aenderung AND 4, AND 8 usw. Diese einzelnen Abfragen speichserts Du und hast für Lüfter 0-7 je das dazugehörige Bit isoliert. Im SRAM machst Du dir acht korespondierende Variablen, die Du ebenfalls in dieser Schleife hochzählst. Nach 1000
Tau = R * C (Zeitkonstante) 50% = 0,7 Tau (50% Pegeländerung)