-
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
Probleme bei der Usart initialisierung mit dem ATmega8515
AtMEGA: USART_Transmit: sbis UCSRA,UDRE rjmp USART_Transmit out UDR,r16 rjmp loop //16-Bit-Zähler mit Flankenerkennung... ... //Motorsteuerung //Abfragen der Schalter ... .. . ERZEUGT MIR FOLGENDEN FEHLERCODE: X:\Bla\BlaBla\AtMEGA8515\Programmname\Programmname.asm(65): error:
Spess53 schrieb im Beitrag #3308970: >> sbis r16, 0x03 ;If (R16, bit1 == 3) > > Ein Bit kann nicht 3 sein. Der nächste Befehl wird übersprungen, wenn > Bit3 von r16 1 ist. und der Befehl muss dann auch sbrs/sbrc heissen, wenn man auf einem Bit im Register prüfen
-
Thread
LCD im 4bit Modus initialisieren, funktioniert nicht, C, Atmega8
einem Problem mit dem ich nicht weiter komme. In Sachen Elektronik habe ich wenig Erfahrung, aber C/C++ ist mir nicht völlig fremd. Ziel ist es, ein LCD mit KS0066 kompatiblen Treiber im 4bit Modus mit einem Atmel Atmega8 anzusteuern. Der Betrieb im 8bit Modus ist mir bereits gelungen, aber warum
wie lange die einzelnen Kommandos zur Ausführung benötigen (Execution Time), und auf S. 4 des Datenblatts gibt es den Hinweis, dass die Wartezeit länger als die Execution Time sein oder man das Busy-Flag abfragen muss.
-
Thread
UV-Laserdrucker
ATTiny2313 besser - oder meine Schaltung war "besser". Egal, jetzt geht es wieder :-) Habe [c] OCR0B = 0x00; // Ab 0 wird das Ausgabe-Bit gesetzt [/c] durch [c] OCR0B = 0x01; // Ab 1 wird das Ausgabe-Bit gesetzt [/c]
// source size is 32bit DCH1DSIZ=4; // destination size DCH1CSIZ=4; // 32bit per transfer request [/c] Viele Grüße
-
Thread
Wert des ADC an USART ausgeben
UCSRC richten; Datenformat einstellen: 8 Datenbits, 1 Stopp-Bit */ UCSRB |= (1<<TXEN); // Sender aktivieren } /* ### Initialisierung des 16-Bit Timer1 - 9-Bit PWM-Mode - Fast-PWM - Vorteiler von 1024 --> 15,625 kHz
0; // Variable 'ADC0_interrupt' zurücksetzen } } return 0; } [/c]
-
Thread
Assembler Programm funktioniert im Simulator aber nicht in der Praxis
Programms wieder aus. 2) Du vergleichst immer den kompletten Port-Inhalt, obwohl dich doch nur eine einzelnes Bit interessiert. Ganz allgemein ist für dich jetzt also der Zeitpunkt gekommen, wo du dich ganz dringend damit beschäftigen musst, wie man Aktionen auf nur einzelne Bits beschränkt, sowohl beim
Pullup bleibt nun dauerhaft an. 2.Da bin ich gerade dabei mich einzumummeln, ist mir gelungen, einzelne Bits zu manipulieren aber die direkte Abfrage halt nicht. Deshalb habe ich über die summen der einzelnen Bits gearbeitet. Danke für deine Tipps. Beim kurzen Überfliegen, denke ich werde ich mich
-
Thread
Iban, die Schreckliche
diese Fragen! Ist google heute wieder kaputt? http://de.wikipedia.org/wiki/IBAN#Berechnung_der_Pr.C3.BCfsumme
Siehe die roten Zeichen hier im Beispiel: http://de.wikipedia.org/wiki/Iban#Berechnung_der_Pr.C3.BCfsumme
-
Thread
TCP/IP: Frage zur Datenübertragung / Protokoll PC <-> AVR
habe ich nur serielle Kommunikation eingesetzt. Dort hatte ich ein simples Protokoll mit Start ID (8 Bit), Parameter ID (8 Bit), Nutzdaten (32 Bit) und einer Checksumme (16 Bit). Die Länge ist immer fix gewesen und funktioniert auch ganz gut in meinem Haus. Z.B.: Parameter 1 -> Temperatur 1 Parameter
Temperatur 2 Parameter 3 -> Spannung usw. Zur Auswertung der Daten und zur Steuerung habe ich in C# ein kleines Tool geschrieben. Nur muss der PC immer an sein und sich in der Nähe meiner Platine befinden. Die einzelnen Parameter werden nacheinander zyklisch abgerufen. Daher nun der Versuch via Ethernet
-
Thread
Mega8 Port.Pin Zustand abfragen wenn gegen GND vs.VCC
Hi Spess, So sind die Pins angelegt. //Definition der Port Aliase Relais1[@PortD,5] : Bit; Relais2[@PortD,6] : Bit; Relais3[@PortD,7] : Bit; Relais4[@PortB,0] : Bit; //ACHTUNG RelaisStatus muß negiert werden RelaisStatus1[@PortB,4] : Bit; RelaisStatus2[@PortB,3] : Bit
; {------------------------------------------------------------------------------} begin SetBit(Relais1,false); SetBit(Relais2,false); SetBit(Relais3,false); SetBit(Relais4,false); // SetBit(RelaisStatus1,false); // SetBit(RelaisStatus2,false); // SetBit(RelaisStatus3,false)
-
Thread
Verständnissproblem sequeziell/parallel
(signed(x2)*signed(y2)); > b:=not b; > result3 := std_logic_vector(signed(x3)*signed(y3)); > c:=not c; > wait on t;--t ein external Trigger > end process; > > process 2 begin > wait on (a and b and c);-- a,b,c - shared variable > result4 <= std_logic_vector(result1*result2); > result5
Änderung des Zustandes aufgerufen, man kann ja auch auf Vektoren triggern, dann wird jede Änderung von einzelnen Bits detektiert. Das hatte ich auch bereits mal erfolgreich verwendet. Auf den Trigger will ich deswegen warten, weil die Multiplikation nur dann stattfinden soll, wenn beide Signale aktuell sind
-
Thread
Cyclone: C ohne Buffer-Overflows
unübersichtlicher. Zusätzliche Kosten entstehen vor allem dadurch, dass Cyclone versucht, jede einzelne Funktion inhärent sicher zu machen, was evtl. dazu führt, dass Sicherheitsabfragen eingebaut werden müssen, die man in C guten Gewissens weggelassen hätte. Aber das gute Gewissen trügt eben manchmal
meckern und auch nicht eigenmächtig weitere Abfragen einzubauen. Leider nicht möglich ist eine selektive Deaktivierung der Compiler-Überprüfung in einzelnen Programmabschnitten (für die dann der Programmierer verantwortlich ist) bspw. mit einem Spezialkommentar
-
Artikel
ZPU: Softcore Implementierung auf Spartan-3 FPGA
Entwicklungsumgebung: Xilinx ISE WebPack 10.1 CPU: ZPU von Øyvind Harboe (opencores.org) stackbasiert 32 Bit breit 8 Bit Opcode klein, einfach, übersichtlich per GCC-Toolchain (ZPUGCC) in C / C++ programmierbar integrierter Programmspeicher (BlockRAM) Bus: Wishbone-Bus 32 Bit Peripherie: Interrupt-Controller
auf dem Board. Eine Abfrage der Adressen der Schalter und Taster liest den Zustand der Schalter (8 Bit) bzw. Taster (4 Bit) ein. Ein Senden eines 8 Bit Wertes an die LED-Adresse schaltet die LEDs. Ein Senden eines 32 Bit Wertes
-
Thread
Assembler-Code - STK500 - Codeverbesserungsvorschläge :)
Man kann auch einzelne Bits testen, bzw setzen und löschen. http://www.mikrocontroller.net/topic/15116 cpi r16, 0b11111110;vergleiche Tasterkombination mit NUR Taster 0 gedrückt Da gibt es einen Befehl: sbrs
klein an, und natürlich ist simple LEDs an und aus machen nicht DAAAAS Metier wo man unbedingt nen µC braucht, aber wie gesagt, irgendwomit muss man ja anfangen. und nun zu deinem Code. Ich würde in deiner Loop direkt abfragen, ob auch beide Tasten gedrückt sind. Also quasi so: [avrasm] loop:
-
Thread
ARM Eval Board gesucht
. I2C mit Audiodaten? Liegst du da richtig I2C hat 10kHz oder 400kHz Baudrate da sind allgemein eher nur Kontrollfunktionen möglich. Du meinst wahrscheinlich I2S. Falk Brunner schrieb im Beitrag #3276583
. >I2C mit Audiodaten? Liegst du da richtig I2C hat 10kHz oder 400kHz >Baudrate da sind allgemein eher nur Kontrollfunktionen möglich. >Du meinst wahrscheinlich I2S. Ja, Buchstabendreher ;-) Falk Brunner
-
Thread
Serielles LCD/Keypad Interface
können. Bei jeden Datenbyte zum LCD werden die MUX Eingänge nach der Reihe umgeschaltet so dass die C0-C3 Eingänge nacheinander zwischen jedem LCD update gelesen werden können. Da der ROW Treiber die ROW Leitungen nur einzeln auf Masse legt macht es nichts aus wenn mehr als eine Taste gedrückt wird und
| | LCD #3 | | LCD #4 | | ----------Keys--------Keys----------Keys---------Keys--(Column Bits Data) R0C0 R0C1 R0C2 R0C3 R1C0 ... R1C1... Nach senden von 16 LCD Daten-Nibbles hat man die gesamte Keypad gelesen Die Komplexität der Steuerroutine hielt sich
-
Thread
Lagerverwaltung Part-DB V0.3+
Hi, Getestet hatte ich das mit der neusten Chrome Version 55 und dem IE11 unter Win10 64 Bit. Die Version die ich heruntergeladen hatte müsste das commit 12c136f gewesen sein. Im Anhang auch mal eine Grafik dazu was ich meine. Die Oberen Menüpunkte der Kategorieren sind wohl als "selectable
das so in der Art eig. noch nie gemacht mit einem Template-Engine. Normalerweise schreibe ich ja uC-Programme in C ;). Mfg, Tropaion
-
Thread
Multiplex+ICP
Hier steckt der Fehler. Beim Mega88 steckt das entsprechende Bit nicht im TIMSK, sondern im TIMSK2. [C] TIMSK2 |= ( 1 << TOIE2 ); [/C]
Wenn die Anzeige 'wild' aussieht, dann hab ich mich wahrscheinlich hier [C] 0b11101001, // 'E' [/C] bei den Bits vertan.
-
Thread
Wie stark sollte man bei der Mikrocontroller Programmierung kapseln? Gesperrt
mach es Dir doch ganz einfach und ich behaupte mal, der Unterschied zwischen objektorientierter C und C++ Programmierung ist gar nicht so groß. Wenn du C++ gelernt hast, weißt du, dass C++ auf dem Sprachkonstrukt von C aufsetzt. Soll heißen: Klassen sind nix anderes als Strukturen mit Daten
Initialisierung, daß main nicht ge-call-t werden muss sondern reinlaufen > kann, daß while(1) keine 16 bit 1 pushen muss... Sagen wir so. Der Linker könnte diese Teile rauswerfen. Und entsprechenden Startup code massgeschneidert bereitstellen. Ja, könnte er. Und? Kratz mich das, wenn der µC nach Anliegen
-
Thread
Programm funktioniert.aber wieso?
werth = werth | 0b00000001; } wertl=wertl<<1; wertl = wertl & (0b11110111); //4tes bit invertieren auf 0 PORTA=werth; //Ausgabe an PortA = Highbyte PORTC=wertl; //Ausgabe an PortC = lowbyte // PORTA=counter; // PORTC=0; //**********************
Was ich auf die Schnelle sehe: [c] uint8_t status; //status des Programms [/c] muss "volatile" sein, da es in "main" und einer ISR benutzt wird.
-
Thread
Atmega8 C Relais ansteuern
Ausgangsportpin unabhängig von den anderen Portpins auf wahlweise 0 oder 1 schalten kann. Denn so etwas [C] PORTB = (1<<0); [/C] artet ganz schnell in einen Albtraum aus, wenn man ständig über alle möglichen Schaltzustände an diesem Port Buch führen muss. Bit auf 1 setzen [code] PORTB |= (
Erlenen von C nicht herum. Dabei geht’s dann aber nicht mehr um dünne Heftchen und einzelne (einfache) Operationen.
-
Thread
Automower G3 mit USB Diagnoseport fernsteuern?
Hi David, Zeit/Datum stellen: 02[04] 80 0c 28 00 -> 03[04] 00 0c 28 00 zeit auf 12:40 02[09] 81 df 07 08 08 04 00 00 00 -> 03[06] 00 df 07 08 08 04 datum aud 8.8.15 formatbyte: bit0 1-12h/0-24h, bit1+2 0-JMT/1-MTJ/2-TMJ, 2015
.....02-15-0c-00-00-00-e2-ff-0a-00-d9-03-00-aa-00-b4-03 [/code] Weiß z. B. jemand, wie man die im Robi eingestellte Uhrzeit abfragen kann?
-
Thread
IP-Adresse vergessen
shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=710 aber in der Beschreibung steht nichts von 32bit-AVRs, sondern nur fuer 8bit-AVRs.
/index.php?module=artikel&action=artikel&id=710 > > aber in der Beschreibung steht nichts von 32bit-AVRs, sondern nur fuer > 8bit-AVRs. Man verlässt sich natürlich nicht auf die Beschreibung irgendeines x-beliebigen Internet-Shops, sondern auf die Angaben des Herstellers, der das Teil entwickelt
-
Thread
Ein sachlicher Vergleich Pascal <-> C
für leute die immer noch glauben der vergleich ist sinnvoll: [...] Unions gibt es nur in C. Es sind Bitfelder mit denen man die einzelnen Bits eines Bytes ansprechen kann. [...] soviel zu seinen Kenntnisse in C.
Paul Baumann schrieb im Beitrag #3265543: > C ist ein Sammelsurium aus einzelnen Nüssen, Bits und Inbusschlüsseln > -aber die Knarre fehlt. Da muss man eben mit den Fingern fummeln :-) Im Ernst: C hat so wenige Befehle, dass man sich das binnen
-
Thread
Verständnisfragen zur Tasterentprelllung Version von Peter Danneger
nicht nur einmal... Vielleicht hilfts dir auch weiter, von allen beteiligten Variablen nur ein einzelnes Bit (bei dir das zweite) zu betrachten. Und schau nach, ob dein Code für invertierte Tasteneingänge gedacht war (Interner Pullup im µC, Taster nach GND)
printf("\nct1: %X", ct1); printf("\nCount für Bit 1: %d", ((ct1 & 0x02)*2 + (ct0 & 0x02))/2); [/C] dann siehst du den Zählerstand des 2-Bit Zählers für deine 'Testtaste' besser. [C] uint8_t i, key_state, KEY_PIN, key_press; static uint8
-
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
grafisch mit Blöcken programmieren
Ingenieurs nichts zu tun. Warum werbt ihr dann laut eurer Homepage damit daß der Kern eurer Sprache mit C geschrieben ist. Warum ist eure Sprache nicht mit eurem eigen grafischen Tool geschrieben? So wie die meisten C Compiler auch mit C geschrieben sind. Die kleine Welt in der die Sprache Sinn machen kann
Einarbeitung). Der Zwang auf Assembler wegen knappen Ressourcen sehe ich eigentlich nicht mehr , bei µC bekommt man ja schon unter 10 € einen 32-Bit Cortex M-3 mit 512 kB Speicher und einer 72MHz Taktung usw..., klar hat man dann auch andere Probleme (komplexe tools) D.h. wenn es um den Programmieraufwand
-
Thread
C Code ich verstehe den Fehler nicht
status_bcd = BCD_Verarbeiten(BCD_Auslesen()); //Jetzt kann ich den Status des Schalters abfragen } } [/c] [c] //IOVerarbeitung.h //Wert von BCD-Schalter auslesen und in eine Dezimalzahl konvertieren uint8 BCD_Auslesen(void) { buffer = PTGD; buffer = (buffer & 0xf);
status_bcd = BCD_Verarbeiten(BCD_Auslesen()); //Jetzt kann ich den Status des Schalters abfragen } */ } [/C] Fehler da? Wenn nicht, dann wieder einen Teil mit dazu. [C] interrupt VectorNumber_Vtpm2ovf void Timer_ISR() { static uint8 ct0, ct1; uint8 i; SRTISC_RTIACK
-
Thread
Der S3BUS, Eure Meinung ist gefragt
Ich brauch was simples. Die Karten im S3BUS bekommen über den Busstecker eine Adresse, die für I2C und CAN Adressierung verwendet wird. SPI ist ja ohnehin sternförmig ausgeführt. Die Karten identifizieren sich und Ihre Eigenschaften und Ihre Softwareversion über eine I2C Abfrage. Die Software der
kommunikationsbereit ist. Eine HDMI Verbindung nutzt auch 4 verschiedene Schnittstellen (LVDS Sync Data, I2C, Ethernet und einen 1 Bit Fernsteuerungsbus), weil jede seine Stärken hat. VG Leisten haben deutlich mehr Pole als ich benötige und würden mir die Möglichkeit nehmen die zentralen Komponenten auf
-
Thread
Hilfe zu Interruptverhalten ATMEGA8 gesucht
[C] TIMSK &= (0 << TOIE2); [/C] so werden keine Bits gelöscht. [[Bitmanipulation]] > Deaktiviert wird der Interrupt mit GICR &= (0 << INT1); Du hättest genausogut [C] GICR = 0; [/
[C] TCNT1H = 0xC0; TCNT1L = tmr1l_preload; [/C] wenn du solche Dinge hast, in denen 2 Register zusammengehören und logisch gesehen ein 16 Bit Register bilden, aber aus technischen Gründen
-
Thread
Probleme bei der Initialisierung eines LC-Displays in C
Ausgabe funktioniert nicht. Ich programmiere mit MPLAB IDE v8.88 einen PIC16f887, PORTB dient als 8-Bit-Datenausgabe. Anbei mein C-Programm in txt.-Datei. Vielen Dank schonmal im Voraus für eure Mühe.
vorsorglich mal gelöscht. Das mit dem "while(Button_LCD_Reset != 1)" verstehe ich nicht ganz. Bin noch C-Neuling^^ Ich mache ja auch eine LCD-busy-Abfrage. Frägt das dann was anderes ab ?
-
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
Uart als Sensorbus?
kannst ist einen Master und einige Slaves. Der Master schickt erst die Adresse des Sensors den er abfragen will, und liest dann die Bits ein die der Sensor schickt. Der Sensor wartet einfach auf eine Pause, gefolgt von seiner Adresse, und schickt dann seine Daten. Auf Wunsch kannst Du sogar noch Kollisionsdetektion
nämlich ein CAN Transceiver. Diese Ferengi-Lösung erfordert Prozessorzeit zur Behandlung jedes einzelnen Bits, zur Berechnung von Checksummen etc, ist lahm, kompliziert zu Programmieren und vermutlich deswegen fehleranfällig - wenn einem das die 1.10€ wert ist... CAN ist alles andere als gemurkst, sondern
-
Artikel
Der Multiplex Sensor Bus (MSB)
Bit im gesamten 16 Bit Wort) hat eine spezielle Funktion. Es ist das Alarm-Flag. Der eigentlich Wert ist also um ein Bit nach links verschoben. Durch ein gesetztes Alarm-Flag, teilt der Sensor mit, dass
lediglich auf GND ziehen oder loslassen. Dies erledigen zwei defines. Ein weiteres define übernimmt das Abfragen des Pegels. MB_Bitlen enthält die Zeitdauer für ein Bit in µS. UART. Da der Tiny85 keinen HW-UART besitzt muss er in Software nachgebildet werden. Das Senden eines oder mehrerer Bytes auf den Bus
-
Thread
Signalwechsel ATMeg
die Austastung und setz sich nach weiteren Y Takten zurück, geht so was? Die Umschlatung der einzelnen Frequenzen will ich lösen in dem ich die Werte für ICR1, Ocr1A, OCR2 als Variable definiere, Tasten abfrage und die Variale beim dücken der Taste entsprechend übergebe. Das ist aber erts der näschte
Hallo mue_c liest Du noch mit? ich komm nicht weiter.
-
Thread
LED mit Encoder ansteuern
Ich möchte gerne mit einem Drehencoder einzelne PIN's auf einem Port hochzählen. Wie bei einem LED-Kranz. Wobei immer nur eine LED leuchten soll. Das sieht momentan so aus: [c] #include <avr/io.h> #include <avr/interrupt.h> #include <avr
Was mir jetzt noch fehlt ist das der Zähler nur von 1 bis 4 zb. zählt. Ist ja kein Problem [C] val1 += encode_read1(); while( val1 > 3 ) val1 -= 4; while( val1 < 0 ) val1 += 4; [/C] val1 muss natürlich ein signed int Typ sein. Einer mit 8 Bit, also ein int8
-
Thread
VGA FPGA Selbstbau-DSO
nach RAM aus, aber?! Klar man kann den RAM Inhalt auch per UART an den Rechner schicken oder abfragen oder so und das dann da plotten, aber wieso mit gtkwave? Wenn, dann würde ich bei einem 8-Bit ADC immer 1 Byte je Sample schicken und das dann mit gnuplot einfach plotten - oder sehe ich das falsch
kostet mir derzeit zu viel. Ein richtiges DSO werde ich nicht machen weil ich das mit einer CPU und C nicht will und ohne soetwas GUI und Messungen keinen Spaß machen. Vielleicht hole ich mir mal einen dicken Artix, ein Board mit dem 200er, gutem VGA (viele Bits) oder HDMI und einem ADC wäre was.
-
Thread
Anfängerfrage zum negieren
if(flag) ist wahr wenn flag eine ZAHL ist die nicht 0 ist. Was macht "C" mit "!flag". Werden dann einzelne Bits der Zahl flag geändert?
schrieb im Beitrag #3226351: > if(flag) ist wahr wenn flag eine ZAHL ist die nicht 0 ist. > Was macht "C" mit "!flag". Werden dann einzelne Bits der Zahl flag > geändert? Das ! ist ein logischer Operator. Der Ausdruck !flag ist wahr, wenn flag = 0 ist und falsch, wenn flag ungleich 0 ist. Für die
-
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
Bewertung des Zufallsgenerators für einen Spielwürfel
und beim > Drücken den aktuellen Wert abzufragen? Nichts wenn man vom timer nur die letzten bits nimmt. Du kannst auch beim Programmstart (uC einschalten) irgendeinen Timer starten und immer rum zählen lassen und wenn du eine Zufallszahl brauchst, eben dessen Wert nehmen. So lange da eine
kein "brennen", runterfallen, ...) Lothar S. schrieb im Beitrag #3223838: > mit so 'nen kleinen uC Das Programm wird in ASM im einfachstem Fall keine 100bytes verbraten... was die "Größe" des uC jetzt auf den Zufall für einen Einfluss haben soll ist auch ein ungeklärtes Mysterium.
-
Thread
PIC Assembler auf- abzählen
rückwärts zu zählen und hin und her. Ich habe probiert mit BTFSC/BTFSS zu arbeiten, kann man auch 8 Bit gleichzeitig abfragen? Außerdem habe ich schon probiert mit dem CARRY Bit im Statusregister zu arbeiten... Bitte um unterstützung. [avrasm] Main incf 0x20,1 movf 0x20,0 movwf PORTB
Ralf G. schrieb im Beitrag #3220438: > btfsc STATUS,C ; Wenn Carry-Bit=0 überspringe nächsten Befehl So wird das nix. Druck Dir TABLE 7-2: PIC16CXXX INSTRUCTION SET aus und lege es Dir auf den Tisch. Und dann schau nach, welcher Befehl das C
-
Thread
Strommessung am Kabel
Hi, eine evtl. vorhandene Betriebsleuchte abfragen? Über LDR o.ä.?
drauf habe. Damit sollte es vermutlich auch gehen und dann hätte man sogar einen Stromdetektor samt 32bit Auswerte-MC für <10 EUR. Leider stecke ich aber noch ziemlich in den Kinderschuhen bzgl. ARM-Programmierung und man scheint einige Wochen investieren zu müssen, um diese 32bit Riesen-Käfer in den
-
Thread
Struct Array sortieren
und dessen Sortierung. Ersteres hängt stark von der Zielplattform ab und der verwendeten Sprache (c/c++). Zweiteres, hängt davon ab wie dein Key aussieht mit dem du sortieren willst. Also lässt sich das mit den Angaben pauschal kaum beantworten. Grüsse, René
Sortierung. > > Ersteres hängt stark von der Zielplattform ab und der verwendeten > Sprache (c/c++). Ich möchte auf einem Atmega644 dieses Array befüllen lassen. Rene H. schrieb im Beitrag #3215378: > Zweiteres, hängt davon ab wie dein Key aussieht mit dem du sortieren > willst. Meinst
-
Artikel
USB IO Expander
zufriedenstellend möglich. Aus diesem Grund habe ich mich bewusst auf den niederfrequenten Bereich (einzelne Funktionen bis 100kHz) beschränkt, da alles andere nur Kompromisse gewesen wären. Ein wesentlicher Punkt war jedoch ein vollständige galvanische Trennung vom PC. Dies vereinfacht die Arbeit mit dem
nach dem FIFO-Prinzip arbeitet (First-In-First-Out). Es werden zwei Varianten verwendet, eine die 8 Bit Daten speichert und eine für 16 Bit breite Daten. Pattern Modul. Dient der Generierung von Mustern am Ausgang, sowie dem Timer-gesteuerten Einlesen der Eingänge. Die Funktionalität ist als Zustandsautomat
-
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
C oder Pascal
Ich habe mit der freien Mega8-Version von AVRCo angefangen und nachdem der uC ausgereizt war die Profiversion gekauft .... 100% Hobby ! @nicht jetzt: es gibt 64Bit-Variablen
@ W.S. (Gast) >Und was wird irgendwann mal aus einem 128 Bit Integer? >long long long int? Ey maaaan, led me dell you this way [reggae] Ive been coding C a lalalala long a lalalala long a lalalala long long le long long long C'mon [/reggae]
-
Thread
ADC ATMega16
<<ADEN); // ADC aktivieren[/c] Auch hier gilt wieder: Holzhammermethode. Was passiert bei der oberen Zuweisung genau? Schau ins Datenblatt auf S. 219. Dort steht, was die einzelnen Bits bedeuten. Wie eine Zuweisung aussehen sollte
die Summe der beiden Register ADCL und ADCH zu, was Unsinn ist, weil du damit die Wertigkeit der einzelnen Bits durcheinander bringst. In C solltest du dich nicht mit ADCL und ADCH herumschlagen, sondern result einfach ADC oder ADCW zuweisen, weil der Rest vom Compiler erledigt wird. Das ADIF-Flag
-
Thread
Warum gibt es kein Bit-Array in C?
[35]; [c] set_bit(char *data, int bitnummer) { int index, mask; index = bitnummer / 8; mask = 1 << (bitnummer % 8); data[index] |= mask; } [/c] Löschen und Abfragen geht genau
. Ich finde wie Flipsi oder Michael S1 es gezeigt haben (Bit-Field oder Array mit Makro) ist es gut nachvollziehbar. Man kann die Bit-Field Version ja noch mit Michaels Indizierung erweitern: [c]#define BIT(x) bytes[x>>3].bit##(x&0x7)[/c] Geht natürlich