-
Thread
MINI-SPS mit AVR od. ARM
AVR oder PIC als Untergrenze herangezogen werden sollte, oder ob man sich nicht gleich auf mind. 16-Bit als Untergrenze einigt. Eine Überlegung wäre auch ob man nicht sowas wie den R8C/13 der dem nächsten Elektor-Heft beiliegt als gemeinsame (Referenz-)Entwicklungs-Plattform verwendet und parallel
Verfügung stellen möchtest oder doch? @mahlerp: Beschränkt man sich bei der Diskussion mal auf das µC Board bzw. einfachen IEC Code, dann braucht man auch nicht wirklich viel Speicher. Einen S5 Code kann man schon im Tiny laufen lassen, da man nur einen 1-bit Speicher für die Binären Opcodes und 2 Bytes
-
Thread
Gruppen Flags unterscheiden
Hallo Ich arbeite mit einem uC STM32F072C8T6 und bin gerade dabei mir die Funktion eines TSC näher anzusehen. Ich lese auf S 317 im Reference Manual: Bits 23:16 GxS: Analog I/O group x status These bits are set by hardware when
müssen demnach 3 Interrupts kommen. Aber das kann ich ja mal testen. > Das waeren insgesamt 3 Abfragen. Wo ist das Problem? > Es geht doch nur darum, ob das jeweile Flag GSx gesetzt ist, oder? Ja es ging mir darum, ob du das auch so verstehst wie ich. Ich frage im Interrupt die GxS bits einzeln
-
Thread
Eigene SoC-Software vor Duplizierung schützen
. Zwischenfrage: Kann man das Flash so nutzen, dass der Kunde seine Kunden-APP drin hat (also SoC-Software + eingebaute SoC-FPGA-firmware) und parallel meine beiden Versionen, also SoC-FPGA-firmware + allgemeine SW? ... also für den Fall, dass das SoC das ermöglicht (siehe die Einschränkung von
bietet zuviele Angriffsmoglichkeiten. Benutze das eeprom. Z.b. 256 byte. Das sind 8x 32byte oder 256 bit 32 byte für user ID(30 für ID, 1 für checksum, 1 für Rest checksum), 4 byte für unix-time, 4byte für Option, 2byte für Version. 16bit für auth, 16 bit checksum, 4byte system ID. Dann kommen auth
-
Thread
Einstieg in C
vielleicht zu Weihnachten mit Controllern anfangen kann. Was zum Teufel soll das debuggen bei Visual C mit der Controllerwelt zu tun haben? Bits setzen und löschen, Inputs abfragen und Interrupts kommen da ja wohl selten vor... Leider hat Dominik nicht geschrieben welche Controller er programmieren
welcher Programmiersprache man das bewerkstelligt, ist fast schon Nebensache. Die Register für die einzelnen Funktionen sind im jeweiligen Controller- Datenblatt aufgeführt. Ich würde mir ein einfaches C-Buch für PC (z.B. "C Programmierung mit einfachen Beispielen" von Jürgen Wolf) besorgen, mal die
-
Thread
LED Matrix und 4 Gewinnt
for Schleifen machen. Wo ich mir allerdings absolut nicht sicher bin, ist bei folgender Syntax: [c] Port_Zeile &= ~(1<<z); [/c] Wenn z=0 ist, dann steht da: [c] Port_Zeile &= ~(1<<0); [/c] Nimmt er dann vorm Port_Zeile das 0.Bit - also PB0?
also hier [C] Port_Zeile &= ~(bitMasks[ isrZeile ]); } [/C] wodurch du die Möglichkiet kriegst, die boolsche Negierung auch gleich noch mit ins Array reinzuziehen. [C] uint8_t bitMasks[] = { ~0x01, ~0x02
-
Thread
KEYPRESS.COM
nächsten seite "keypress" eingeben. Dan rechte Maustaste auf den Link, Eigenschaften, und bei Ziel " /mnt/c/wsl/keypress.sh" hinzufügen, danach sollte da "C:\Windows\System32\bash.exe /mnt/c/wsl/keypress.sh" stehen. Nun den Link in den Path verschieben, (z.B. nach C:\Windows). Jetzt kannst du das Script verwenden, einfach eine CMD öffnen, und "keypress.lnk a b c" eingeben.
-
Thread
Druck und Höhensensor MPL3115a2
Ja das Problem war, dass ich beim zusammensetzen des 12 Bit Registers die einzelnen Bytes auf long int casten musste. Ohne casten gab es halt immer einen Überlauf bei der Berechnung, was zu einem Fehlerhaften Ergebnis führte. [c] 338 // Druck
mal so lange dauert bis der Sensor abschmiert. Hi Marcel, leider verliere ich auch bei 10kHz I2C-SCL nach einigen Minuten die Verbindung (1 Abfrage/s. Da du oben für 'altitude' einen 'int' angegeben hast, nehme ich an, dass du dein Programm auf einem PC und nicht auf einem AVR laufen lässt. Ich
-
Thread
PTC-Widerstand mit Mikrocontroller nachbilden
Peter D. schrieb im Beitrag #7573955: > 64 Stufen (6 Bit) sollten für eine Heizung reichen. Ich würde auf 3 Bit und 8 Stufen tippen. Wenn man die Stufen geschickt wählt, kann man damit immerhin von -15°C bis 20°C in 5K Schritten abdecken. Und arg viel mehr
Mann könnte auch z.B. ein X9C102 (siehe https://cdn-reichelt.de/documents/datenblatt/A200/X9C104_SO.pdf) verwenden. 5V Versorgung durch ein DC-DC isolieren, ebenso die UP/Down Signale
-
Thread
AVR-Programmer-Software für standalone FT232R
Verfügung stellen. Bei bedarf würde ich auch gerne an dem Projekt mitwirken, .net programmiere ich in C#. Hast du das Projekt in VB oder c# realisiert? Wie oben schon angedeutet würde ich das ganze evtl erstmal als StandAlone zum laufen bringen und anschließen in AVRStudio integrieren. Weiter könnte
@Umpa Lumpa Weil mich jede Abfrage eines Busystatus mindestens 0,1 Sekunde kostet und damit alles wieder sehr langsam wird. LG Christof Rieger
-
Thread
Reichelt: 2-Kanal Farb-DSO für 350€ :)
Oszilloskope sind keine Präzisionsinstrumente. Zur Bildschirmauflösung: Dieses Gejammer von Ralph ist l-ä-c-h-e-r-l-i-c-h. Diese Dinger haben allesamt 8-Bit Wandler. Ob dir das Oszilloskop frei erfundene Zwischenwerte beim Verbinden benachbarter Punkte malt, damit es schöner aussieht, oder du eine Stufe siehst
Ich hab seit drei Tagen auch ein UT2042C. Aber ich finde keinen Treiber für den PC um die Signale abzurufen. Kennt da einen was? Der Hersteller meint den dürfen sie nicht einzeln raus geben.
-
Thread
R8C13 Programmierung
irgendwas mit i gibt es in C nicht. Es gibt 2 Möglichkeiten: - Den Port mit einem Struct in ein Bitarray zerlegen. - Den gesamten Port einlesen und einzelne Bits markieren: if (p1&(1<<i)) Schau mal auf http://www.m16c.de/
studiert habe, kommt der interne daten speicher wohl eher nicht in frage. ich werde mich mit einem 24C01 beschäftigen, da ich dort auch einzelne bytes lesen und schreiben kann, ohne vorher ganze seiten löschen zu müssen.
-
Thread
AVR Interrupt-Verhalten
gesetzt, Welcher Zähler? Es gibt auf dem AVR keinen derartigen Zähler. Ein Ereignis setzt ein Bit und wenn Interrupts zugelassen sind, triggert dieses gesetzte Bit letzten Endes den Aufruf der zugehörigen ISR. Die Reihenfolge in der diese Bits ausgewertet werden beginnt jedesmal wieder von vorne
beeindrucken, dass dein mit 4Ghz getakteter PC (unter Windows) ab und zu ein Päuschen einlegt. Auf deinem µC bist du alleine auf dem nackten Silizium. Da gibt es kein Betriebssystem oder einen Virenchecker oder Abfragen von Mails oder einfach nur Speicher aufräumen, welches dir Rechenzeit unter dem Hintern
-
Thread
5 Zeiten mit ICP messen -> Problem mit den Timerwerten (ATmega8 und C)
solltest du _auswerten_ (abfragen), um die RS485 wieder auf Empfang schalten zu können. Das Bit wird (vom Controller) gesetzt, sobald das letzte Bit den Puffer verlassen hat und kein neues im UDR steht. Soviel zum Quelltext.
STK500-Besitzer schrieb: [c] UCSRA|=(1<<TXC); // vorangegangene Übertragung ist zu Ende [/c] > Du brichst von dir aus die Übertragung ab? Nein, er löscht das Flag. > TXC solltest du _auswerten_ (abfragen),
-
Thread
AVR und C++ - ein Versuch
if (check.isHigh()) led.setLow(); else led.setHigh(); } } [/c] Die einzelnen Pin-Anweisungen sind jetzt in C und C++ identisch (auch in der lss-Datei. Für mich eine Basis, den Rest daran anzupassen :)
interruptsPerSecond) { if (!ticker) { ticker = this; // only the first call shall setup the 16bit timer! setupTimer(interruptsPerSecond); } }; [/c]
-
Thread
Interrupt Unterschiede beim 8-Bit Timer vom Atmega 128
Option dadurch offen gehalten, dass eben jedes einzelne Bit seinen eigenen symbolischen Namen hat. Und die lange Variante würde eben auch diesen Fall problemlos abdecken, deine hingegen würde dann Mist bauen.
hat sich diese Option dadurch offen gehalten, > dass eben jedes einzelne Bit seinen eigenen symbolischen Namen hat. > > Und die lange Variante würde eben auch diesen Fall problemlos abdecken, > deine hingegen würde dann Mist bauen. Ja, das ist mir bekannt. Dafür
-
Thread
SPI Anfang Oszi
SPI1C1 = 0x50; schreibst du dann SPI1C1 = (1 << Bit6) | (1 << Bit4); Kannst natürlich auch "SPI1C1 = (1 << 6) | (1 << 4);" schreiben. Das kommt aufs gleiche raus. Aber das mit Bitx zu schreiben, finde
es hier so heißen: > SPI1C1 = (1 << Bit6) | (1 << Bit4); > > oder so: > > SPI1C1 |= (1 << Bit6) | (1 << Bit4); > > Ich würde sagen Letzteres, da die Oder-Verknüpfung angewendet werden > muss. Nach Reset sollte das Register
-
Thread
Wird heutzutage auch im Komsumerbereich auf Bitflips geachtet und sicherer programmiert?
Problem ... Z.B. durch natürliche Hintergrundstrahlung. > Insb eine Fehlerkorrektur in einem einzelnen > Register bringt dir gar nichts - dann kippt halt ein anderes Bit. Um das zu vermeiden genau dafür wäre die Fehlerkorrektur ja dann da. Der Wert würde mehrere Bits einnehmen, das wäre nicht
Hast Du dafür auch Belege? SRAM kann man überhaupt nicht vergleichen mit DRAM. Ich hab mal einem AT89C2051 >10s die VCC kurzgeschlossen, der SRAM war noch komplett erhalten. Ich wollte über den SRAM eine Kaltstart/Warmstart Erkennung programmieren, da der AT89C2051 keine Bits zur Erkennung der Resetquelle
-
Thread
Foucaultsches Pendel
hoch, dass dies keine Rolle spielt? Du unterschätzt massiv die Geschwindigkeit der Teile. Dein µC kann die Eingangsschieberegister so schnell abfragen, dass sich zwischen 2 Abfragen das Pendel um keinen ganzen Millimeter bewegen kann. Wahrscheinlich noch nicht einmal einen Zehntelmillimeter.
Wäre es jetzt overkill hier PCF8574 (oder die 16-Bit SMD-Variante PCF8575) vorzuschlagen? Sind I2C Expander und können aber auch einen Interrupt auslösen bei Änderung. Meine Idee: 3 PCF8574 in "Input mode" schalten, sprich die Ports auf H setzen. Über
-
Thread
Zeigt her Eure Kunstwerke! Gesperrt Bilder
Ralf Greinert schrieb: > TPIC6C595 gibt es aber leider nicht als DIL ... doch! TPIC6C595 *N* http://de.farnell.com/texas-instruments/tpic6c595n/8bit-shift-register/dp/1470497
Mal was ganz kleines ... SOT-23-6 auf DIL Adapter Es handelt sich um einen MCP3421 18-Bit AD mit I2C
-
Thread
Entwicklung eines RAM mit Interface - Probleme mit der Synthese/Impl.
zwischen C2000 und FPGA als synchron betrachten. Kein Einsynchronisieren nötig, keine Latches, wenige übersichtliche Constraints, nur ein einzelner Quarzoszillator auf der Leiterplatte. Marcel schrieb im Beitrag
Schluss zu sein) nicht erreichbar sein. Man sollte da nicht so optimistisch sein. Wir reden hier vom C2000 EMIF im 16bit ASRAM-Betrieb. Hier hat das netterweise jemand theoretisch durchgerechnet: http://e2e.ti.com/support/microcontrollers/c2000/f/171/t/704812?TMS320F28379D-Theoretical-maximum-read-and-write-speed-of-the-EMIF-connected-to-ASRAM
-
Thread
Max(a,b) möglichst effizient
h := b; end if; if (h>c) then m <= h; else m <= c; end if; end process; -- Macro Statistics -- # Comparators : 3 -- 32-bit comparator greater : 3 -- # Multiplexers : 1 -- 32-bit 4-to-1 multiplexer : 1 -- Maximum combinational path delay: 12.886ns -- Number of Slices 80 process (a,b,c) begin if (a>b) then if (a>c) then m <= a; else
-
Thread
Hausbus auf Ethernet über UDP Broadcast
Philipp C. schrieb im Beitrag #3037893: > Wie realisierst Du bei Dir die Kommunikation? Sprichst Du einzelne > Knoten direkt per IP an und baust eine TCP Verbindung auf? Und hast Du > da dann ein spezielles
fehlerhafte Daten. Die Daten sollten somit immer validiert werden. zB: habe ich vor einer Minute 22C gemessen können es jetzt nicht -20C sein!
-
Thread
Atmel ist unter "Profis" nicht gerade beliebt - Warum?
|= (1 << LEDBIT); /* setzt Bit 4 an PortB auf 1 */ _delay_ms(200); PORTB &= ~(1 << LEDBIT); /* loescht Bit 4 an PortB */ } return (0); } [/c] Und das wird daraus: [avrasm] 0000004a <main>: #define LEDBIT
brne .-4 ; 0x64 <main+0x1a> _delay_ms(200); PORTB &= ~(1 << LEDBIT); /* loescht Bit 4 an PortB */ 68: c4 98 cbi 0x18, 4 ; 24 6a: f5 cf rjmp .-22 ; 0x56 <main+0xc> 0000006c <_exit>: 6c: ff cf rjmp .-2 ; 0x6c <_exit> [/avrasm]
-
Thread
Timing Multiplexen
Ich lade nachher ein Foto hoch, bin derzeit noch auf Arbeit. Die Abfragen in der ISR sind für eine Uhr. Es soll letzendlich eine Binäruhr werden. So wie ich jetzt multiplexe möchte ich es auch lassen, da die latch(es?) 4 bit groß sind.
nebeneinander liegende LED. Die können nur entweder ein oder aus sein. D.h. von einem uint8_t kann jedes Bit wunderbar eine LED abdecken. Daher definier ich: uint8_t ledMatrix[4]; 4 Bytes. In jedem Byte sind die unteren 6 Bit für jeweils 1 LED zuständig. [C] uint8_t ledMatrix[4]; uint8_t actLine
-
Thread
Seqentiell oder parallel
prozess ist der ablauf sequentiell oder paralellel? angenommen ich programmieren 2 Undgatter a UND b = c x UND y = z werden diese parallel synthetisiert oder sequentiell? wenn abghängigkeiten bestehen ist es klar dass sie seqentiell sind: a UND b = c c UND y = z mfg
()-Abfrage ignoriert. Bei der steigenden Flanke werden dann die vorherigen Werte (a,b,c,l,m,n) zu neuen Werten berechnet (a,l,z). Der obige Prozess ist dann in der Hardware exakt gleich mit [vhdl] process
-
Thread
stm32 HAL UART Receive_IT(.) sendet nur 1 Byte
Daten über die HAL_UART_Receive_IT() Funktion zu empfangen. Leider kommt im Speicher nur das erste Bit an welches versende. Hier der Quellcode: In der main.c: uint8_t a = 0; char docklight[10]; int main(void){ while(1){ HAL_UART_Receive_IT(&huart3,&docklight,strlen(docklight));
In der _*_it.c brauchst du nichts zu ändern. Füge im die main.c die Funktion HAL_UART_RxCpltCallback ein. In dieser kommt jedes Zeichen einzeln an und du kannst auf Zeilenende auswerten oder einen Puffer mit einer
-
Thread
erst programmieren, dann schalten
benötigt somit nur - 1x Daten-Ausgang - 1x Clock - 1x Latchen und die Daten werden so seriell vom µC ausgegeben bis alle 104 Bits gesendet wurden und dann ein mal gelatcht und die 104 Ausgänge werden geschrieben.
send(schieberegister1) send(schieberegister2) ... LE=1 LE=0 }[/code] Ich würde in µC für jedes Schieberegister eine Variable erstellen, die mit 0 initialisiert wird und abhängig von der Schalterposition in diesen Variablen einzelne bits Setzen und löschen. Am ende jeden Schleifendurchlaufs
-
Thread
USB RFID Tag Leser
Hallo, hier gibt's einen RFID Tag Leser, der 64 Bit 125 kHz Tags ausliest und die darin gespeicherten Daten (40 Bit "netto") über die USB Schnittstelle ausgibt. - Auf der Platine integrierte PCB Antenne - RFID Reader Chip EM 4095 - µC ATMega 16,
Hat jemand schon mal den Fehler gahabt: LED leuchtet immer grün, es scheint, er hängt sich in der [c] em4095_read_tag(tag) [/c] im [c] do { if (bit_is_set(TIFR, TOV0)) { timeout--; TIFR |= 1<<TOV0; //Clear Overflow Flag } } while ((!flag) && (timeout > 0)); [/c]
-
Thread
7-Seg Pins ansteuern
viel einfacher, wenn Du Dir das chinesische Verilog-Beispiel genau anschaust: Hier wird ein 16 Bit-Zähler benutzt, von denen Bit 15, 14 und Bit 13 für deine CASE-Abfrage verwendet werden können. Du lässt diesen 16 Bit-Zähler einfach mit dem 50MHz-Takt hochzählen. Die unteren 13 Bit vom Zähler "takten" dann bei jedem Überlauf dieses 13 Bit-Zählers (Bit 12 bis Bit 0) den 3 Bit-Zähler (Bit 15 bis Bit 13). Das heisst, Du hast automatisch einen Vorteiler von 2 hoch 13, also von 8192. Dadurch zählt dann dein Zähler für die CASE-Abfrage mit
-
Thread
TWI: Quartz notwendig?
Stück notwendig? So aufwendig (auch im Sinne von Prozessortakten) ist es nun auch wieder nicht, den 8 Bit-Wert für die Ausgabe am Schluss auf zwei IO-Ports aufzuteilen (z.B. Bits 0-5 auf PB0-PB5 und Bits 6 und 7 auf PC0 und PC1, dann ist das schnell erledigt: PORTB = (PORTB&0xC0)|(tmp&0x3f); PORTC = (PORTC
Hallo, zur ursprüngleichen Frage zurück. TWI / I2C ist eine Synchrone Datenübertragung. Solange Du die Minimalabständer der Zustandsänderungen der einzelnen Signale zueinaner einhälst, ist das Timing ziemlich unwichtig. Gruß Tom
-
Thread
Logic Element (LE) programmieren
Ich bin neu in Sachen FPGA Programmierung - ich habe nur Kenntnisse im allgemeinen Programmieren - C, C++, Java etc. Da ich eine leistungsfähige Plattform brauche habe ich mir ein Developer Board von Altera besorgt - mit Cyclone II FPGA. Diesen möchte ich nun programmieren - Tutorials erfolgreich
Nachbar-Pixel zugreifen, indem du bei IMG_IN den Index rauf oder runterzählst. Und das FlipFlop als einzelne architecture zu implementieren, kannst du dir so auch sparen, da die FF über die if-Abfrage im process automatisch generiert werden. Denke nicht in einer einzelnen Zelle, die mit ihren Nachbarn kommuniziert
-
Thread
Video Format Converter - FPGA
Ramon F. schrieb im Beitrag #2936197: > Jetz fällt mir aber auf, das ich pro Taktzyklus 18 Bit Input habe aber > nur 16 Bit Input für den Speicher habe. Wie sieht's mit einer Reduktion auf 5:6:5 aus? Würde Dir vielleicht 'ne Menge Kopfweh ersparen...
Dir auch mal den Schaltplan vom Xilinx SP605 anschauen (xtp067.pdf). Dort wird ein Chrontel CH7301C verwendet. Duke
-
Thread
Zum verrueckt werden: DSP TMS320F28335 von texas instruments
[c] //Init: Uint16 A0,A1,A2,A3,A4,B0,B1,B2,B3,B4; AdcRegs.ADCTRL1.bit.RESET=1; InitAdc(); AdcRegs.ADCTRL1.all = 0; AdcRegs.ADCTRL1.bit.ACQ_PS = 4; AdcRegs.ADCTRL3.bit.SMODE_SEL
event bit 7-4 0000: reserved bit 3 0: INTEN, 0 = disable interrupt bit 2-0 000: INTSEL, don't care */ [/c] in der ISR: [c] A0 = AdcMirror.ADCRESULT0
-
Thread
ATmega via LAN / Telnet ansprechen?
vorzugsweise in C. Grüße AVRli...
kann, das war ein guter Hinweis! Lies dir erst mal in Ruhe das Datenblatt durch. Da sind zu den einzelnen Funktionen ausreichend (Pseudo-)C Beispiele drin. Etwas Literatur über Ethernet kann auch nicht schaden. MfG Spess
-
Thread
Anfänger in C und welcher PIC (evtl. uno32) ist geeignet ?
deswegen ist deine Bekanntheit mit PIC16x auch kein Argument dafür, bei Microchip zu bleiben. C ist überall C. Außerdem haben PIC24 (16 Bit) außer dem Namensbestandteil PIC genau gar nichts mit den 8-Bit PICs zu tun. Und die 32-Bit PIC sind in Wirklichkeit MIPS Cores. > Das Kurzzeit-Ziel: Dem
Beitrag #3922524: > Be Ti schrieb im Beitrag #3922415: > >> Das Langzeit-Ziel ist PIC24 mit 16 bit, weil die 16 >> bit-Berechnungen da am besten aufgehoben sein werden ... >> Das Ganze dann in C > > Mit Verlaub, aber das ist Unsinn. Wenn du in C programmierst, dann macht > der C-Compiler die
-
Thread
[C] binäre Darstellung von double -Zahlen
die Adresse um 1 erhöht wird. Würdest Du [c] double *pD = &dWert; [/c] machen, dann würde *pD einen Double liefern und bei pD++ die Adresse (in den meisten Fällen) um 8 erhöht werden. Du könntest auch [c] union { double d; unsigned char u[8]; } wert; wert.d = 1.2345; [/c] machen und dann mit [c] wert.u[0] ... wert.u[8] [/c] die einzelnen Bytes abfragen. Dadurch überlässt Du dem Compiler die Pointer-Geschichte.
-
Thread
GNUBLIN www.gnublin.org
Treiber sendet nur für die *letzte* message, die ihm übergeben wird das STOP bit. Wenn ich ein I2C write/read Kommando [code]root@gnublin:~$ i2cget -y 1 0x48 1 b[/code] an den Treiber schicke, werden 2 Linux I2C messages an i2c_pnx_xfer() übergeben. Die erste enthält das I2C
ob der I2C pnx Treiber richtig arbeitet. Wenn die I2C engine mal im Nirwana ist, kann dieser sie bis jetzt leider nicht zurückholen. Mein workaround im Moment ist, nach jeder message ein STOP bit zu senden.
-
Thread
Wofür Propeller von Parallax ?
und Gruppen von 4 Pins haben je einen eigenen Spannungsversorgungspin erhalten, so dass man diese einzeln entkoppeln kann. Trotzdem erreicht der ADC "nur" eine Genauigkeit von etwa 13.5 Bits für absolute Spannungsmessungen. Für dynamische Signale, wie Audio, geht die Auflösung aber bis 18 Bits. --
c-hater schrieb im Beitrag #6528065: >> Während ein Prozessor z.B. über die Schnittstelle Daten einliest, kann >> ein zweiter parallel schon anfangen die Daten in einzelne Datensätze zu >> zerlegen
-
Thread
was spricht eigentlich gegen die xmega? Gesperrt
altes Modell, den würde ich heute bei einer neuen Schaltung nicht mehr einsetzen wollen. Ein 8-Bit AVR kann natürlich 16Bit verarbeiten. Wenn man damit allerdings in Assembler rechnen will, dann wird das etwas kniffliger, daher besser die Hochsprache C nehmen. Bei einem 16 oder 32Bit µC kann man
glatt übersehen. Das ist doch mist, da braucht man wieder einen Spannungsregler ( 12V => 5V = 16-Bit ADC => 3,3V = µC ). Bernd_Stein
-
Thread
Wozu übertrieben schnelle Microcontroller?
ja soviel "natürlicher" wäre, > längst durchgesetzt haben. Das ist so wie mit den > dummen 32vs.8Bit Prognosen: Lächerlich! An vielen Stellen, vor allem z.B. auf dem PC hat sie sich durchgesetzt. Python, C++, C#, Java und noch viele mehr - alle dort gängigen Sprachen sind primär oder sogar vollständig
*** [Makefile:69: build/src/test_01_blink.o] Fehler 1 [/code] Bei anderen Controllern mit PORT C (z.B. HCS08) gibt es kein PORTC Register. *portpin_set_output(PORT_C, 8);* Würde entweder PTC8 auf Output setzen oder PTC0, wenn Port C nur 8 Bits breit ist. Da die Pin-Nummer ja eine Variable
-
Thread
uint64_t im ATmega8
2 Ideen, die vielleicht helfen könnten: 1: Union benutzen und auf die einzelnen Bytes zugreifen 2: Auf Variable Var verzichten [c] union { uint64_t Datensatz; unit8_t Bytes[8]; } for(j=0; j<8; j++) { for(k=0; k<8; k++) { if (Bytes[j] & (1<<k)) { machewas; } else { machewasanderes } } } [/c]
-
Thread
Ansteuerung Schrittmotor mit ATmega8 macht Probleme
for (b2=0;(b2<130);b2++) { } PORTB=0b00001010; //3.Schritt for (c=0;(c<130);c++) { } PORTB=0b00000010; //3.Halbschritt for (c2=0;(c2<130);c2++) { } PORTB=0b00000110; //4.Schritt for (d=0;(d<130);d
Das Problem sind ja anscheinend nicht einmal die Zeiten... Ich habe probeweise mal den Wert der IF-Abfrage auf <1 heruntergesetzt. Der Motor dreht durch bis in den mechanischen Anschlag und stoppt gar nicht mehr. Eben so als gäbe es diese IF-Abfrage überhaupt nicht. Setze ich hingegen die IF-Abfrage
-
Thread
DOGM-204 Problem mit Steuercodes
= 0b0101_0111 ; (0x57) Booster on, Kontrast C5 und C4 .EQU DSP_INIT_CONTRAST = 0b0111_0010 ; (0x72) Kontrast C3:C0 .EQU DSP_INIT_FCTSET3 = 0b0011_1000 ; (0x38) Function Set, 8 Bit, RE=0, IS=0 .EQU DSP_INIT_DSP_ON = 0b0000_1100 ; (0x0C) Display on, Cursor off, blink off [/avrasm] Die einzelnen Zeichen werden in einen Buffer geschrieben und dann per Interruptroutine zeichenweise auf dem SPI ausgegeben. Wie gesagt, die Textausgabe
-
Thread
Wasserpegelanzeige
Hi Wolfgang schrieb im Beitrag #5024041: > Mit einem Absolutencoder kann man so selten abfragen, wie man möchte. Wo wir wieder beim 13bit GrayCode landen :) (okok - 13bit sind wohl nicht nötig) Selbst bei Starkregen wird sich der Pegel wohl nicht im cm-Bereich bei sekündlicher Abfrage
10186_10123_142,searchweb201603_2,ppcSwitch_5&btsid=4d91f6cd-b03b-4bb2-9af0-dbc2115a118f&algo_expid=6c4d57c8-82f8-4f08-8054-9e84097d2768-11&algo_pvid=6c4d57c8-82f8-4f08-8054-9e84097d2768
-
Thread
Grundstruktur zum Taster einlesen und auswerten
mal ganz gut aus, wenns dazu noch funktioniert ist ja alles bestens. nur irgendwie stören mich die c/C++-kommentar im asm-code ;-)
eor itmp,tas ;nur Änderungen werden H and tz0,itmp ;Prellzähler unveränderter Tasten löschen (Bit0) and tz1,itmp ;Prellzähler unveränderter Tasten löschen (Bit1) com tz0 ;L-Bit zählen 0,2,->1, 1,3,->0 eor tz1,tz0 ;H-Bit zählen 0,2,->tz1 toggeln and itmp,tz0 ;Änderungen nur
-
Thread
ARM7: Start geglückt aber noch Fragen
hindert dich daran, auf ARMs die I/O-Register als [c] extern struct { unsigned bit0:1, bit1:1, bit2:1, ...; } ccr; [/c] zu definieren. Dann geht auch da [c]ccr.bit1 = 1;[/c]
crazy-smiley> Habe das alles mal umgestrickt. Funktioniert soweit. Was nicht mehr funktioniert ist die Abfrage des PLOCK Bits in einer While Schleife, ob die PLL gelockt wurde. Das bleibt immer Null. Vorher hats geklappt nach der alten Methode. [c]while ( !( SCB_PLLSTAT & PLOCK ) );[/c] Mit [c]while
-
Thread
The Siemens S65 132x176, 65536 color display with AVR
mit 24Bit Integer statt mit 32 Bit Integern in C. Es macht also aus Sicht der Performance und Resourcenverbrauch sehr wohl einen gewaltigen Unterschied aus. Es gibt aber auch Nachteile: 1.) C ist portabler
Height relative to the coordinates X,Y filled with BkColor. 2.) full color images, each pixel is 16 Bit [c] struct bitmap { uint8_t Width; uint8_t Height; uint8_t Bits_Per_Pixel; uint16_t BkColor; uint16_t Pixels[Width*Height -1]; } [/c] - width, height see above - Bits per Pixel
-
Thread
anfänger frage zu mikrocontroller programmierung
Hi, du solltest mal mit Google nach nem C-Tutorial suchen und das AVR-C-Tutorial auf dieser Seite durcharbeiten. PINB & 0x01 bedeutet, daß das Port Eingangsregister mit 0x01 "verundet" wird. Also werden alle Bits, bis auf das erste (PB0,was
inputpoller(IOINPUTPIN01,HIGH) == true) // Taster an Pin 1 abfragen output(IOOUTPUTPIN03,HIGH); // LED an Pin 3 rinschalten } return 0; // Korrekte Semantik beim Aufruf von main() } [/c] > danke schon mal im voraus
-
Thread
Funktionsgenerator 7706 - Sweep reparieren
. Der Unregelmäßige Takt spricht etwas für Software SPI und 9 bzw. 11 µs passt auch auch etwa zur µC Geschwindigkeit. 20 Pulse passt aber nicht zu den 74HC... Schieberegistern: da sollen es eigentlich immer vielfache von 8 Pulsen sein (U600 könnte auch 7 Bits (notfalls 5) gebrauchen). Ein Teil könnte
dort dann wohl zum Sweepboard. Auf dem CPU-Board sitzt neben der CPU auch noch ein XC9572XL-7VQ64C im TQFP64-Gehäuse mit JTAG-Interface. Der wird wohl als Frequenzzähler genutzt. > Wenn die Daten für den 12 Bit AD sind, dann wohl als 4 Pulse für den > FPGA (um zu zeigen das es Daten für den
-
Thread
Bytearray bitweise shiften
zwingend in Bit 0 schieben und verarbeiten, das geht auch anders. Z.B. so. [c] uint8_t shiftarray_left(uint8_t cnt, uint8_t c_in, uint8_t *data) { uint8_t c_out, tmp; data += (cnt-1); for (; cnt > 0;
Verbesserungsvorschläge keine Ironie - liebe ich dieses Forum Dann vielleicht ohne manuelle Carry-Bit-Auswertung wenn es 16-Bit-Register gibt? [c] uint8_t shiftarray_right(uint8_t cnt, uint8_t c_in, uint8_t *data) { uint16_t s; while(cnt-->0) { s = (c_in<<8)|*data; c_in = *data;