-
Thread
Frontplattendesign für "8 bit Computer"
32 Taster, in Kombination mit 32 LEDs verwenden, welchem Prinzip arbeiten wie ein Schieberegister. Bits setzen Bits einspielen.
in das 1. > bis 4. Bytes des 32-bit-Wortes reinfalten. Du meinst das 32 bit Wort in den Akku hineinfalten, nicht "den 8 bit Akku in den 32 bit wert hineinfalten". "Hineinfalten" impliziert nämlich dass etwas großes in etwas kleiners
-
Thread
Wie perfekte ADC Werte 16Bit
Hallo, wie ist das optimale Design für 16 Bit z.B an einem STM32 Wenn ich die Versorgungsspannung mit einem Schaltregler realisiere und dahinter eine hochstabile Referenz. Was ist mit VDDref? Geht man dort einfach mit der hochgenauen Referenz
Hallo, 16 Bit ist noch nicht so kritisch. Wenn man von 3,0V Messbereich ausgeht dann haben wir 3,0V / 65536 = ca. 46 µV je Bit und eine Dynamik von 96 dB. Jetzt mußt Du nur Wissen wie hoch der PSSR Deines ADC ist
-
Thread
UART-Interrupt Problem
<< MOTOR_RUNNING ); // Bit setzen break; .... } .... int main() { .... while( 1 ) { if( Control & ( 1 << MOTOR_RUNNING ) ) { ... } } } [/C] Ganz normale Bit-Setz, Bit-Lösch und Bit-Abfrage Operationen, wie sie in jedem Programm zu Hauf vorkommen. Nur war bei dir wahrscheinlich Bit setzen bzw. Bit löschen meistens auf einen Port bezogen um damit einen Portpin zu schalten. Aber
-
Thread
3x3 LED-Matrix-Multiplexing - Software tuts nicht
cnt001 % 3][cnt002] == 1) { PORTD |= (1 << (cnt002)); //wenn '1' im pattern-Array, Bit-# setzen } else ; } cnt001++; } int main (void) { DDRB = 0x07; // ZEILEN - 0b00000111 DDRD = 0x3F; // SPALTEN -
missverstanden. > if(zeile[zeilennummer] & (1<<i)) Dazu hätte ich aber noch eine Frage: Wo landen die Bits, die ich da setze?
-
Thread
64-Bit Integer Beschleunigung
sind und es mehrere Sicherheitsstufen gibt. Wir übertragen z.B. (wirklich nur ein Beispiel) eine 8 Bit Folge als 11 Bit Wort, die Matrix aus 10 Worten mit einem 11 Bit FEC, der selber mit 7 Bit geschützt ist -> 128 Bit. Dann wird eine Anzahl von z.B. 8 solcher Pakete mit 2-4 Worten an Rauschinformationen
es mehrere > Sicherheitsstufen gibt. Wir übertragen z.B. (wirklich nur ein Beispiel) > eine 8 Bit Folge als 11 Bit Wort, die Matrix aus 10 Worten mit einem 11 > Bit FEC, der selber mit 7 Bit geschützt ist -> 128 Bit. Dann wird eine > Anzahl von z.B. 8 solcher Pakete mit 2-4 Worten an Rauschinformationen
-
Thread
APA102-2020 Multiplexen
überlegt, allerdings erhöht sich dadurch die Anzahl der Operationen erheblich. Bei meiner Idee setze ich immer nur 2 Ports vom MCU (kann ich ja jeweils in einer Operation setzen) und Takte dann mit der Clock Line die Daten raus. Bei einem Schieberegister müsste ich erst die Daten an allen 32 Ausgängen
Schnittstelle des mc statt Pins zu toggeln. > > Bei 512 Leds benötigst Du: > > (512 + 2) Frames * 32 Bits/Frame / 512 kbits/s = 32,125ms > Bei 512 LEDs sollte der Endframe >=256 bit sein. Start- und LED-Frames sind 32 bit. 32 Bit fuer den End Frame gelten nur bis 64 LEDs.
-
Thread
Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom
Ferner funktioniert das Abspeichern der letzten Einstellung nicht. Kann es richtig sein, dass bei dem Setzen der Fuses EESave nicht gesetzt werden muss? Meine Fuse Bit Einstellung : High = 0xC9, Low = 0xEF . Ansonsten scheint alles zu Laufen. Gruß Klaus
Ocr1bh = &B0111_1111 : Ocr1bl = &B1111_1111 'Register fuer Tastverhaeltniss (16 bit Wert 50%) Ist ja schon das Fast-PWM aus dem Atmel Mega8 Datenblatt. 16 bit Variable über die Taster ändern und dann in High- und LowByte aufteilen und in die beiden Register schreiben... &H00
-
Thread
Hilfe bei PWM benötigt
der hat sogar genau den gleichen t0 sowie t1, t0 mit 8bit, t1 mit 16.
Hi >welcher modus ist das dann??? fast pwm mit 8 bit oder? Das hat nichts mit dem Mode zu tun, sondern wird mit den COM-Bits im TCCRxA-Register eingestellt. MfG Spess
-
Thread
Atmega88 ADC Code OK?
Bist du dir da sicher? Es handelt sich nämlich um einen 10 Bit Wert, der in ADCL und ADCH ausgegeben wird, wenn ich das richtig verstanden hab. Im Datenblatt auf Seite 253 steht das. Daher muss ich ja auch das Bit ADLAR im ADMUX Register setzen, um festzulegen
Hi >ADMUX = 0xff;//.......................// Alle Bits von ADMUX auf 0 setzen >ADCSRA = 0xff;//......................// Alle Bits von ADCSRA auf 0 setzen Was soll das denn sein? MfG Spess
-
Thread
LCD DEM16217
Initialisierung nötig sind und in welcher Reihenfolge diese abgearbeitet werden müssen. Ziel ist der 8-Bit Modus. Programmierkenntnisse in C sind vorhanden. Als Mikrocontroller setze ich den ATmega8515 ein. Vielen Dank für Euere Hilfe im Voraus, Christian :) P.s: Dies ist mein erste Versuch
, in der Funktion LCD_command eine entsprechende Umsortierung noch nachzurüsten. Das Löschen und Setzen von einzelnen Bits kannst du dir allerdings in deinem Code sparen, denn auch in deinem Code müssen alle 8 Datenpins an ein und demselben Port angeschlossen sein. D.h. wenn diese Annahme nicht mehr
-
Thread
AVR Uptime und PowerUps zählen
Oben wurde schon ausführlich dargestellt, dass man Bits nicht einzeln setzen kann, weil vor jedem Schreibzugriff das gesamte Byte gelöscht wird. Aber ich seh grad: >Ich möchte einen Betriebsstundenzähler der mind. 50 Jahre reicht. D.h. >ich muss bis
Naja, setzen kann man einzelne Bits nicht, das geht immer nur mit dem gesamten Byte. Aber löschen kann man sie einzeln. Und zwar indem man die Zellen vor dem schreiben nicht löscht.
-
Thread
Parität Bits Prüfen
Hallo, ich lese Daten (EM Tags) in Bytes ein, wobei nach jedem vierten Bit ein Paritätsbit übertragen wird. Die Paritätbits speichere ich und mache anschließend die Prüfung. Speichern [c] if (data_bit_counter > 40 && data_bit_counter <= 45) { if(bit) {
eigentlich fast alles ok aus :) Tust Du aber *paritybits* im ersten Teil auch irgendwann auf 0 setzen. Ich seh nur das die Bits gesetzt werden.
-
Thread
Schematic + Board
hmmmmm , wenn ich das jetzt richtig verstehe bekommst du 6 bit über dein SPS. eines dieser 6 bit lässt du weg damit du daraus die Betriebsspannung generierst. Dann fügst du einem Mega128 die verbleibenden 5 Bit zu um diese dann wiederum als 8 Bit auszugeben
Damit sollte ich meines wissens nach auch debuggen können. Sollte ich an die ISP Stellen noch LEDs setzen? lG
-
Thread
Bits anschalten richtig verstanden?
Verknüpft ond dem DDRB zugewiesen. Aber wäre es nicth besser, erst zu lesen? Falls ich noch andere Bits verwende, die unverändert bleiben sollen? Sorry, ich finde das in C ein bischen kompliziert. In Assembler kann ich einfach "SBI DDRB,7" machen, in Bascom "DDRB.7 = 1" ..
In C kannst Du auch statt SBI DDRB,7 // Setze Bit 7 in DDRB auch DDRB |= (1<<7) // Setze Bit 7 in DDRB statt CBI DDRB,7 // Loesche Bit 7 in DDRB auch DDRB &= ~(1<<7) // Loesche Bit 7 in DDRB machen. Die Dinge
-
Thread
EMV-Problem am AVR
r18,0 ; dann setze Timer(Zähler) zurück sbrc r17,0 ; Wenn Time out bit gesetzt, rjmp A_01 ; dann spring zu A_01 sbis PIND,3 ; Auslösetaste auf Patine wenn betätigt, ori r17,0b00000001 ; dann setze Time out bit sbis PIND,3 andi r17,0b11110111 sbic PIND,4 ; Überwachungseingang wenn 0, rjmp A_01 ; dann spring zu A_01 sbrs r16,0
-
Thread
PIC steuert LED sehr seltsam
TRISB BCF STATUS,RP0 ;auf 1. Registerbank zurückschalten BSF PORTB,1 ;Bit1 auf PortB setzen =1 > RLF PORTB,F den Sinn verstehe ich nicht, warum soll PortB rotiert werden? Vorm Rotieren das C-Flag setzen / beachten > > > Jetzt geschieht etw. seltsames: >
beschreiben. Dann schaue Dir mal den RRF/RLF-Befehl genauer an. Der Inhalt des C-Flags wird nach Bit0/7 rotiert und der Inhalt von Bit7/0 nach C. Deshalb sollte man vor einer Rotation C entsprechend setzen oder rücksetzen. Um Bits oder IO-Pins zu setzen, gibt es bessere Wege, siehe die anderen Kommentare
-
Thread
PIC18F1220 (C-Code) Port (einzelnen Pin) abfragen
UNBEDINGT das LATx-Register benutzen? Read-Modify-Write-Zyklen. PORTA|=0x01; heißt: PORTA lesen Bit setzen LATA(!!!) schreiben (PORTA ist ja read-only, Schreibzugriffe auf PORTA landen tatsächlich in LATA) Heißt: LATA wird abhängig von externen Zuständen modifiziert. Das kann dazu führen, dass
bei Open-Collector-Schaltungen. Bei LATA|=0x01; heißt das: LATA lesen Bit setzen LATA schreiben. Heißt also: In LATA wird unter Garantie nur Bit 0 geändert, sonst nichts. Das ist auch das Verhalten, das ich erwarte. fchk
-
Thread
while( ) >>> mit Bedingungen
Was spricht eigentlich gegen die Verwendung der Makros "bit_is_set" bzw. "bit_is_clear"? [c]bit_is_set(PINB, PB5)[/c] Könnte doch einige Verwirrung vermeiden. Und wenn man partout den Programmablauf unterbrechen will gibt es "loop_until_bit_is_set" bzw. "loop_until_bit_is_set".
-
Thread
Woher Speicher im Bereich von 1 MB < x < 16 MB
Nö, den Refresh macht die selber. Man muss dabei aber aufpassen, der Refreshcounter ist da nur 7 Bit breit. Damals muste man aufpassen wenn man da 64Kbit Steine anschliessen wollte. Es gab welche mit 7 Bit und welche mit 8 Bit Refresh. Wenn man 8 Bit Refresh RAMs hatte musste man mit einem zusaetzlichen
sich auf den Speichermodulen alter Unix-Workstations. Ich sehe da z.B. 18 Stück M5M416400xxx (4Mx4Bit) auf einem 32MByte-Modul (32Mx36Bit).
-
Thread
Eingänge setzen beim AT90CAN128
&= (1<<PIN7); if ( PIN7 == 1) { DDRB = (1<<DDB7); PORTB = PORTB & ~(1<<PB7); //Led setzen //PORTB |= (1<<PB7); //LED löschen } } return 0; } vllt könnt ihr mir sagen wo da der Fehler liegt?! thx für antworten ;)
per software ansteuern!? Mit nem Debugger kannst Du zur Laufzeit die Register für den Taster setzen, anonsten macht das wenig Sinn...
-
Thread
STM32 - Servoansteuerung
Bernd schrieb: > TIM2->DIER = 0x0002; Da sind noch mehr Bits drin.
/1200)/frequency)-1; // load cont auto reload register with period value bit_on(TIM1->CR1, DIR); // DIR direction down bit_on(TIM1->CR1, URS); // only over/underflow generates an interrupt bit_on(TIM1->DIER, UIE); // Update
-
Thread
Zahlenschloss mit mega8 problem
Bit 0x08 definitiv 0 ist. 0 und 0 = 0, ebenso wie 1 & 0 = 0. Präge Dir mal folgende Kurzschreibweisen ein: [c] // Bit 0x08 setzen (1) PORTA &= 0x08; // Bit 0x08 löschen (0) PORTA &= ~(0x08);
. > [c] > // Bit 0x08 setzen (1) > PORTA &= 0x08; Falscher Operator, muß |= sein.
-
Thread
Verständnisfrage zu Bitoperatoren
Variablen gleich die Werte zuzuweisen > sodass der Portpin high ist? Weil man die restlichen 7 Bits nicht verändern will, sondern nur das eine Bit auf 1 setzen will. @ Joe. B Logisches Oder würde ich hier lieber nicht schreiben, besser bitweises. Logisches Oder ist in C nämlich ||. Servus
kann man diesem Bit dann nicht den Wert 1 zuweisen? Das ist dann das Gegenteil: Das bit auf 0 setzen. Und das geht mit einer & OPeration PORT &= ~( 1 << Bit );
-
Thread
1-Wire Temperatursensor DS18S20 mit Atmega8 Ansteuern
bleibt der Port als Ausgang konfiguriert. Laut pdf muss der Port aber hochohmig werden -> Eingang. Setze doch PORTD Bit 7 nach dem Reset auf 0 und Schalte *NUR* noch DDRD Bit 7. Was soll das machen? Bzw. was steht in r7? [avrasm] Schreibe0: [...] out PORTD,7 ; Sensor 1µs Recovery Time [/avrasm
mit dem andi so gemeint hast: [avrasm] in r24, PIND ; Lese PIND andi r24,0b10000000 ; Bit 0-6 null setzen or r25, r24 ; Wert von Pin 7 in r25 schreiben lsr r25 ; Eine Stelle nach rechts schieben [/avrasm]
-
Thread
Ein DSP - aber 2 Multiplikationen. David Copperfield?
geringere Frequenzen geht das kompakter. Bei den hiesigen Zahlen sähe es so aus: a*b als 10 Bit in LUT: 111 a*a als 10 Bit in LUT: 90 a*b als 16 Bit in LUT: 292 a*a als 16 Bit in LUT: 261 a*b als 24 Bit in LUT: 626 a*a als 24 Bit in LUT: 575 Gilt für 100MHz mit einem Wrapper, dass
sein sollte. Das kriege ich aber aus der Xilinx-Synthese momentant nicht raus: a*b*c*d mit 16 Bit = 64Bit : 1876 LUTs a*a*a*a mit 16 Bit = 64Bit : 1843 LUTs Beides über physische Resynthese.
-
Thread
Interrupts im Avr-Studio simulieren
-Bit setze funktionierts... Hab ich was vergessen, oder muss das so sein?????? Für Antworten vielen Dank im voraus.
ACHTUNG WICHTIGER HINWEIS! Bei neueren Controllern wird durch das Setzen eines Bits N im PINx Register das Bit N im PORTx Register getoggelt! Man darf wohl annehmen, dass sich der Simulator ähnlich verhält! Also bitte meine Info nicht für In-Circuit-Debugging anwenden
-
Thread
RS FlipFlop nicht verstanden
beantwortet. Also zuerst frag ich mich: was macht ein RS FlipFlop? Die Antwort lautet "er speichert ein bit". Okay. Ich habe mir dazu diese Erklärung hier angeschaut: http://schulen.eduhi.at/pts_perg/halbleiter_digitaltechnik/projekt5/p5_3b.htm Ich setze set auf 1 und Q geht auch auf 1. So, jetzt ist
Direkt bedeutet für mich: ich setze Q auf 1: Q <= '1' Dadurch habe ich ein bit gespeichert, eine 1. Indirekt bedeutet für mich: ich setzte zuerst set auf 1: set <= '1' wodurch dann über einen umständlichen Apparat Q auf 1
-
Thread
Wie findet man möglichst genau die Frequenz des internen RC-Oszilators heraus ?
;LED_Weiß Portpin als Ausgang sei ;Globale Interruptfreigabe I-Bit (Bit7) im... ;...SREG (Status Register) setzen. ;----------------------------------------------------------------------------- ;Hauptprogrammschleife ( HPS ) ;-----
Du möchtest maskieren und gezielt bits auf ›0‹ setzen. Das ist gut. Schau dir mal an was: [c]uint8_t x = ~ 3 << 3;[/c] ergibt. Schau dir dann an was: [c]uint8_t x = ~(3 << 3);[/c] ergibt. Nimm das was eher deiner Intention entspricht
-
Thread
DMX - Empfängerbau mit PIC - erste Schritte
einschalten IH_Check_9th_bit clrf IH_Timer_Count ;löschen des Timer counters btfss RCSTA,RX9D ;Ist das 9. Daten-Bit=0? (Breaksignal) goto IH_Wait_Break ;Ja, dann starte den Zustandsautomaten IH_Check_SW_Overrun
[pre] ;UART initialisieren Bank1 movlw .3 movwf SPBRG ;Datenrate=250000 Bit/s bsf TXSTA,BRGH ;Hohe Datenrate bcf TXSTA,SYNC ;asynchroner Modus Bank0 bsf RCSTA,RX9 ;Bit9 wird mit ausgewertet bsf RCSTA,CREN ;keine Pause zwischen den
-
Thread
Timer 8 Bit, Interrupt
Hallo Leute, Ich beschäftige mich im Moment ein wenig mit dem Timer +Interrupt. Jetz hab ich mit den GCC ein Programm geschrieben. In diesem soll nach einer gewissen Zeit einfach alle LEDS 1 setzen. Problem: *Er kommt nicht in den Interrupt*. Der Quelltext: ------------------------------------------------------------- [c] #include <avr/io.h> #include <avr/interrupt.h> int Zeit; ISR(TIMER0_OVF_vect) { Zeit++; } void main() { Zeit = 0; DDRD = 0xFF; PORTB = 0xFF; TIMSK |= (1<<TOIE0); TCCR0 |= (1<<CS00)|(1<<CS02); sei(); for (;;)
-
Thread
DS1820 an ATtiny25 in C, Massive Timingprobleme
++; _delay_us( 1 ); } DDR_DS18S20_DQ = 1; // auf Ausgang setzen PORT_DS18S20_DQ = 1; // high return cnt_wait; } void putc1wire( uint8_t c ) { for( uint8_t iBit=0; iBit<8; ++iBit ) { if( c&1 ) { // 1 schreiben // Leitung
60 ); DDR_DS18S20_DQ = 1; // Ausgang _delay_us( 1 ); // Sicherheitsabstand zwischen zwei Bits return ret; } int main( int nargs, char **args ) { // Pin DQ erstmal als Ausgang und high setzen: DDR_DS18S20_DQ = 1; PORT_DS18S20_DQ = 1; DDR_DS18S20_VCC = 1; // VCC
-
Thread
8 Bit Berechnung schnell, schneller am schnellsten
Hier reichen aber 8*8 bit mit 8 bit Ergebnis. Also 8 add 8 shift und 8 vergleiche plus evtl etwas nacharbeit.
denn jetzt für ein Controller und was für ein Datenformat brauchst du bei der AddPixel Funktion? 8Bit oder 16Bit? 8,16-Bit, integer, festkomma?
-
Thread
Assembler Befehl
, sondern weiß nur, daß die "PDP11 inspiriert" sind, aber ein kurzer Blick ins Internet verrät: Bit.b Bit Test eines Byte-Werts, AND der beiden Operanden, Status setzen, Ergebnis verwerfen (Op1 & Op2) Bis.b. Bit setzen eines ByteWerts, Op1 |= Op2
; lässt Zero Bit in Ruhe Befehl 3 ; lässt Zero Bit in Ruhe BIS.B ... ; lässt Zero Bit in Ruhe JZ ... ; reagiert auf den Ausgang von Befehl 1 !!! [/
-
Thread
[STM32] CMD0 liefert immer 0xFF zurück
in der LIB bzw. der stm32f10x.h, quasi eine Geschmacksfrage: Im jeweiligen BSRR sind die unteren 16 bit für das Setzen und die oberen 16 bit für das Rücksetzen des jeweiligen bits zuständig. Also kann man alles mit dem BSRR machen und braucht das BRR gar nicht. Die Unterscheidung erfolgt über die defines [c] #define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ #define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ [/c]
-
Thread
Atmega via Ethernet flashen
war tatsächlich nur eine 16 bit addition zu sehen. (ich verwende avr-gcc 4.3.2). Mit den casts werden 32 bit addiert, und das flash vollständig programmiert! BINGO! Gruß, Dirk. PS kenne mikrocontroller.net schon einige Jahre,
ich den Bootloader auf einem AVR-NET-IO von Pollin. Das Board arbeitet einwandfrei. Als Compiler setze ich unter Debian avr-gcc 4.3.2 ein. Ausgecheck mittels svn habe ich Rev. 51. - Mikrocontroler Atmega 32-16PU - Die Fuse-Bits sind wie folgt gesetzt: [c] avrdude: Device signature = 0x1e9502
-
Thread
PIC oder AVR, was ist besser
kein Gegenargument ein wo die Vorteile davon liegen könnten: Diese dämliche Eigenschaft der FuseBits beim AVR! Man kann sich beim AVR selbst aussperren, so das man über ISP nicht mehr in den IC reinkommt. Dies kann passieren wenn man einen Fehler beim setzen der FuseBits macht oder aber auch einfach
meist, manchmal muss man aber trotzdem den µC aus der Schaltung ausbauen und in einen eigenen Sockel setzen. Sehr toll bei SMD oder ungesockelten µC! Bei PICs kann dir das niemals passieren. Eine andere, aber hier nicht wirklkich tragische, Falle ist dann noch das JTAG Bit - denke aber das man hier mit
-
Thread
Bitdatenstruktur optimieren
der Bits Flags des Segments setzen: "n fehlen noch". Zur Ermittlung der Segmentgröße würde ich da mal einen Problelauf ohne Segmentierung genauer ansehen.
> Beim Schreiben der Bits Flags des Segments setzen: "n fehlen noch". > Zur Ermittlung der Segmentgröße würde ich da mal einen Problelauf > ohne Segmentierung genauer ansehen. So in etwa ist es gedacht. Nachdem alle Blöcke
-
Thread
Ähnlicher (gleicher) ersatz für 80c537
A/D 4*12bit D/A, 64 I/O und 64k Flash+4k RAM oder den C8051F4 mit 100MHz, http://www.analog.com/ hat den ADUC824/834 mit 24bit A/D, 3 x 16 bit A/D, 12 bit D/A, PWM und 62k Flash, 4k EEPROM, 2k RAM und http:
/community/mcu/8-bit/forum
-
Thread
PAL Kopieren
ausgangszustand++){ for (int n = 0; n < 10; n++){ //for-schleife um ausgänge zu setzen if (bitRead(ausgangszustand,n) == 1){ //ausgänge setzen wenn bin wert an stelle n=1 ist digitalWrite(ausgange[n], HIGH); } else{
Wincupl formatierte ausgabe Serial.print("/t'b'"); for(int i = 0; i<10; i++){ //jedes bit einzeln schreiben Serial.print(bitRead(ausgangszustand, i)); } Serial.print("/t=>/t'b'"); for(int i = 0; i<8; i++){ //jedes bit einzeln schreiben Serial.print
-
Thread
LED_Laufschrift mit Mega 32 und MAX 7219
soweit alles, ich kann ja eigentlich fast alles machen ausser des flash programmieren, fusebits setzen,
funktioniert folgendermaßen: LOAD wird von HIGH auf LOW gelegt. Mit jeder Low-High-Flanke des SCK wird ein Bit über MOSI in die Schieberegister eingelesen bzw. 1 Bit weitergeschoben, bis alle 48 Bit übergeben wurden. Danach wird LOAD wieder auf HIGH gelegt und mit der Low-High-Flanke von LOAD werden die Daten
-
Thread
kurzer Denkanstoß zur Pin Ansteuerung per Uart im ATMega
Man könnte ihn natürlich auch über selbigen Weg abfragen, wenn wirklich notwendig. Warum für ein Bit ein ganzes Byte verschwenden? Bit7 = Port; Bit6 = on/off; Bit5-0...... Oje, halb vier, egal wird schon passen ;)
schrieb im Beitrag #4740521: > Reicht doch wenn ihn der ATMega kennt! :) > (...) > Warum für ein Bit ein ganzes Byte verschwenden? > Bit7 = Port; Bit6 = on/off; Bit5-0......
-
Thread
Werden Atmels 8-Bit-Mikrocontroller teurer?
Werden die 8-Bit-Mikrocontroller von Atmel gerade teurer oder täuscht mich das? Wo kauft Ihr Eure Atmel-Controller günstig ein?
Hallo, ich setze derzeit auf den ESP8266, Spottbillig, ordentlich Performance,... schönes Teil. Ansonsten ARM(ATMEL, ST,... ) aber die Architektur interessiert mich eh weniger. Die Architektur hat im Embedded Umfeld
-
Thread
PWM mit Timer0 & 2 mit ATmega168PA läuft nicht
Du hast bei den COM Bits die Option "Clear OC0A on Compare Match" (COMxx1) gewählt. Ich nehme an, dass du stattdessen "Toggle on Compare Match" (COMxx0) verwenden wolltest.
OCRnA festgelegte Frequenz mit Tastgrad 0.5 möchten, einfach (1 << COM0A0) (statt (1 << COM0A1)) setzen.
-
Thread
Fragen zum Unterschied SREG und sei() ?
nichts anderes, als das entsprechende Bit im Statusregister zu setzen bzw. zu löschen. D.h. du musst dich aus Sicht eines C-Programmierers nicht mehr mit einem Statusregister (was ist das?) rumschlagen und welches Bit dort zu setzen ist, sondern
> ausschalten? Das ist nicht notwendig Kommt drauf an. Wenn in irgendeiner ISR ebenfalls auf 16-Bit-Register des Timers zugegriffen wird, ist das sogar sehr notwendig. > so erfolgt das Update des 16-Bit OCR Werts > (wie auch der aller anderen 16-Bit Werte) intern auf einmal - dazu wird > vom
-
Thread
Neues Oszilloskop gesucht
bezahlen will. BTW: Vor dem RTB hab ich ja ein Hameg HMO2022 genutzt. Auch da waren die Hameg 8Bit schon viel besser wie Rigol 8Bit die damals eher wie 6Bit aussahen. .-) Deshalb meinen Rat sich das alles mal live anzuschauen. Vielleicht sind die eigenen Ansprueche ja geringer und dann kann man
> Und, wie ist der Preisquotient, RTB/Rigol? 2Bit :) Vanye
-
Thread
Hilfe bei Programmierung in Mplab
MAIN CALL ADC ;Schleiferspannung des Poti in Binaerwert CALL DIV16_8 ;(16Bit : 8Bit Ergebnis 8Bit) movf f_divlo,w ;nomierten ADC-Wert kopieren movf PulseWidth ;ISR-Vergleichsvariable fuer Pulsbreite CALL Out_7Segment ;Duty Cycle 0-99 in LED-Anzeige
> CALL ADC ;Schleiferspannung des Poti in Binaerwert > CALL DIV16_8 ;(16Bit : 8Bit Ergebnis 8Bit) > movf f_divlo,w ;nomierten ADC-Wert kopieren > movf PulseWidth ;ISR-Vergleichsvariable fuer Pulsbreite > CALL Out_7Segment ;Duty Cycle 0-99 in LED-Anzeige
-
Thread
Falsche Zeichen per UART
schrieb im Beitrag #4421829: > Mit 4800 Baud funktioniert es, aber ich schaue mir auch mal das > U2X-Bit und die Header-Datei an. Setz das Bit einfach und du hast 9K6.
Mein grosses V. schrieb im Beitrag #4421839: > Setz das Bit einfach und du hast 9K6. Jepp... läuft alles! Aber um den Lerneffekt zu erhöhen: wie komme ich auf die maximal sinnvolle Baudrate in Abhängigkeit von der CPU-Frequenz? Mal abgesehen, dass
-
Thread
Frage zu Software-SPI
kurzem habe ich eine SPI in Software umgesetzt. Die Frage, die ich habe betrifft spezifisch das setzen/löschen der Bits auf dem Data-Port während des Sendevorgangs. Hier im Forum sehe ich fast immer die Lösung, mit einer Maske zu arbeiten, die dann in jedem Schleifendurchlauf geshiftet wird um somit
0x17, 1 ; 23 32: 98 e0 ldi r25, 0x08 ; 8 for( i = 8; i; i-- ){ // 8 bits SPI_MOSI = 0; 34: c1 98 cbi 0x18, 1 ; 24 if( b & 0x80 ) // high bit first 36: 87 fd sbrc r24, 7 SPI_MOSI = 1; 38: c1 9a sbi 0x18
-
Thread
Entprellen in C, schlanke Routine
2-Bit-Variablen (8 Zähler) interpretiert. Dabei ist Bit 0 jedes Zählers in ct0 und Bit 1 jedes Zähler in ct1. Die Bitposition ist dann sozusagen die Zählernummer und entspricht der Bitposition des Port-Eingangs
das schieberegister "taktet" den taster ein. es wird eine 0->1 flanke erkannt, sobald das letzte bit (in dem falle bit 7) 0 und alle anderen bits 1 sind. eine 1->0 flanke sobald das letzte bit 1 und alle anderen 0 sind. irgendwelche zwischenzustände ändern nichts am taster-zustand (was in dem falle
-
Thread
Bestimmte Ausgänge von Ausgangsport manipulieren
Bit 7 setzen: P1OUT |= 0x80; Bit 7 löschen: P1OUT &= ~0x80 Bin mir nicht sicher, prüf mal nach ob das Sinn ergibt.
= übersehen. Exklusiv-Oder ist dein > Freund! :) Ja ist er auch, aber nicht hier. Mit EXOR setze ich ja nur, unabhängig von Bit6 das Bit von Bit7, jedoch wird dadurch nicht Bit6 gelöscht.