-
Thread
Altium Panel - V-Cut oder Stege?
JLCPCB nicht aus, machen die für sowas kein eignes Panelizing? Andere Hersteller machen sowas, und setzen dann auch die Stege selbst.
Tracks senkrecht durchgegangen, Bild 05 und 06, und die Haltestege erzeugt. Am Ende noch die Mouse Bites angedeutet. Was man vorher noch machen sollte ist den Nullpunkt der Platine auf seiner Lieblingsecke setzen und vorm Panelizer die Einzelplatine auch auf einen sauberen Nullpunkt setzen. Das erleichtert
-
Thread
Pollin LCD Displays
Und noch ein Hinweis : Oben schreibst Du, dass Du das Display im 4-Bit-Modus betreibst. Da liegt die Fehlermöglichkeit der Nibblevertauschung nahe. Eh klar : Zuerst das High-Nibble, dann das Low-Nibble. Zwischen zwei 4-Bit-Zugriffen muss typisch ein Delay von mindestens
seit dem mach ichs IMMER, wenn ich 4 bit mode nutze. ansonsten evtl. mal größeres delay (nachdem du dem display gesagt hast das es auf 4 bit spielen soll)
-
Thread
STM32F4xx - Backup Ram verliert Inhalte
Christian J. schrieb im Beitrag #4370703: > BRE laesst sich erst setzen, wenn das EWUP Bit gesetzt wurde. Zufall > dass ich das rausgefunden habe. Warum sollte das so sein? Steht das irgendwo im Datenblatt?. Waere ja unpraktisch, wenn man den WKUP-Pin nicht braucht
braucht (oder PA0 fuer was > anderes braucht). k.A. Ist jedenfalls so, BRE lässt sich bei mir nur setzen, wenn vorher EWUP gesetzt worden ist. Tja... Sag mal, gibt es da ein Standardverfahren diese Bits zu setzen, außer den PeriphLib Funktionen?
-
Thread
Drehregler an uC - geht das?
es ist spät in der Nacht, also ADC-Bits sollte ADC-Ports heißen und ADC0 - ADC7 Poins sollte eigentlich ADC0 - ADC7 Pins heißen - sorry.
das nun schon oft gesehen habe. Kann mir das bitte mal einer erklären. PINC ist der Inhalt des 8Bit Registers, das den Zustand von PORTC anzeigt. Diese 8 Bit werden mit (1<<PINC0) logisch bitweise verundet. aber was stell der Ausdruck (1<<PINC0 dar)?
-
Thread
Displayausgabe
|= (data>>(4-LCD_DB)); // Bits setzen lcd_enable(); } //////////////////////////////////////////////////////////////////////////////// // Initialisierung: muss ganz am Anfang des Programms aufgerufen werden. void lcd_init
Datenbyte an das LCD void lcd_data( uint8_t data ) { LCD_PORT |= (1<<LCD_RS); // RS auf 1 setzen lcd_out( data ); // zuerst die oberen, lcd_out( data<<4 ); // dann die unteren 4 Bit senden _delay_us( LCD_WRITEDATA_US ); } ////////////////////////////////
-
Thread
Rechnen mit Assembler
macht man am besten mit fixed-point arithmetik. Dein Wertebereich ist 0,8..4V, d.h. Du brauchst zwei Bit um die Vorkommazahl darzustellen. Das wiederrum läßt 14-bit für die Kommastellen einer 16bit Zahl übrig. Die Auflösung ist damit 1/2^14. Also: 0,032 = 525/2^14 0,8 = 13107/2^14 Wenn Du
Und darauf achten, dass immer eine geradzahlige Anzahl Bytes in einer Zeile steht, da der Flash 16 Bit breit adressiert ist. Um darauf zuzugreifen, muss man zuerst den Z-Pointer auf den Anfang der Tabelle setzen. Da das Lesen byteweise erfolgt, muss der Pointer auf den doppelten Wert der Adresse gesetzt
-
Thread
bit im byte ansprechen mit winavr-c
hallo ich möchte von einer variablen "byte" und variablen "bit" ein bit rausfischen bzw setzen. in fastavr geht es so: variable n.6=1 oder variable bit=n.5. wie kann ich so etwas in winavr-c realisieren. mfg pebisoft
gibt es auch variablen "bit" in winavr-c mfg pebisoft
-
Thread
ATmega - Bitoperationen
Frage zum Beschreiben von Registern. Das gesamte Register zu beschreiben (0b01010101) oder einzelne Bits des Registers zu setzen bzw. löschen ist ja kein Problem. Wie kann man aber auf einfachste Weise mehrere Flags auf einmal bearbeiten, ohne das gesamte Register zu beschreiben. Z.B.: R = 0b11001010
NN schrieb im Beitrag #3139639: > oder einzelne Bits des Registers zu > setzen bzw. löschen ist ja kein Problem. Der Vorteil der |= bzw &= Schreibweise besteht darin, dass das was mit einem Bit geht auch mit mehreren Bits in einem Aufwasch geht.
-
Thread
Mais-CPU veröffentlicht 32bit Softcore
Opencores hatte ich auch nicht das Gewünschte gefunden. Dann habe ich mal angefangen. Erst mit 8bit und dann mit 32bit. Würde mich freuen, wenn sich hier aus dem Forum Erfolgsmeldungen auftauchen. Bin auf Rückmeldungen schon gespannt, lasse mir zum Ersten mal richtig unter die Haube schauen.
pins 5 / 281 ( 2 % ) Total virtual pins 0 Total memory bits 135,680 / 3,981,312 ( 3 % ) Embedded Multiplier 9-bit elements 8 / 532 ( 2 % ) Total PLLs 0 / 4 ( 0 % ) FMAX (TimeQuest): 92.09 MHz
-
Thread
GLC-Display T6963 - Probleme mit Grafik Bereich!
LCD_PutPixel(unsigned char x, unsigned char y, unsigned char Set) { unsigned int XY; unsigned char bitByte; XY=0x200; Und wiso gibt es so viele Pixel setzen Routinen ?
Displays bildet den Speicher (der auf dem Display selbst vorhanden ist) direkt auf dem LCD ab. Ein 0-Bit entspricht dann weiß, ein 1-Bit entspricht schwarz (sofern nicht der Reverse-Mode eingeschaltet ist). Um nun einen Pixel zu setzen, mußt Du also im Speicher des Displays den Zustand eines Bits ändern
-
Thread
Hilfe um 8 Bitfelder in uint8_t umzuwandeln (ESP32)
1; uint8_t bit3:1; uint8_t bit4:1; uint8_t bit5:1; uint8_t bit6:1; uint8_t bit7:1; } Input; uint8_t Byte; } Input_ut; int main() { Input_ut Test; Test.Byte=0; //Bit 0 setzen und ausgeben Test.Input.bit0 =1; printf("%d\n", Test.Byte); //Ausgabe: 1 //Bit 7 setzen und ausgeben Test.Input.bit6 =1; printf("%d\n", Test.Byte); //Ausgabe: 65 (64+1) return 0; } [/c]
-
Thread
Starthilfe Programmierung
Du welche Motoren alle für 8s laufen sollen (z.B. könnte in einem bestimmten Register jeweils ein Bit für einen Motor gesetzt werden, wenn die Taste weniger als 0,5s gedrückt wurde; um die betreffenden Bits zu setzen könntest Du einen zweiten Timer Interrupt verwenden). Für jeden Deiner Motoren zählst
Hi! Mit einem 8 Bit Timer ist bei 4MHz eine max. Verzögerung von 65,563 ms für einen TOV = Timerüberlauf zu erreichen. Du must nur den Vorteiler (TCCR0) auf 5 (Bit0+2=1)setzen dann wird der Timer aller 256 mys um 1 erhöht
-
Thread
Werte aus zwei Ports "vereinen"
hat mir auch das Tutorial von Kampi ganz gut geholfen): [c]wert = PORTD.IN; // Lese Port D, Bit 0...5 = Taster 0...5, sind "0", wenn Taster gedrückt wert |= (1 << 6); // Bit6 in wert auf 1 setzen wert |= (1 << 7); // Bit7 in wert auf 1 setzen if(!(PORTR.IN & 0x01)) // Wenn PR0 = 0 (SW6 gedrückt) { wert &= ~(1<<6); } // Setze Bit6 in wert = 0 (LED6 an) if(!(PORTR.IN & 0x02)) // Wenn PR1 = 0 (SW7 gedrück) { wert &= ~(1<<7); } // Setze Bit7 in wert = 0 (LED7 an) PORTE.OUT = wert; // Port E schreiben
-
Thread
74HC595 am Atmega8 => Verzweiflung
gar nicht erwähnt: Ich habe vorhin Delays in meinen Code gebastelt. Sah dann etwa so aus: - Ein Bit für Serielle Leitung setzen, Serialclock Low - 1 Sekunde warten - serielles Bit halten, Serial Clock High - 1 Sekunde warten - nächstes Bit für Serielle Leitung setzen, Serialclock Low - 1 Sekunde warten - serielles Bit halten, Serial Clock High - 1 Sekunde warten ... nach jeweils acht Bit habe ich den Storage Clock getaktet. Dabei wieder zwischen allen Bitveränderungen eine lange Wartezeit. Das fehlerverhalten
-
Thread
MSP430xG46x TimerB Capture Compare Register Funktion
es zumindest für mich keinen Sinn machen. Richtig ~ negiert, &= ist das logische UND. Damit wir BIT1 mit 0 UND verbunden somit wird BIT1 0. Ich will damit nur sicher gehen das der PIN als Eingang definiert ist. Ich würde an deiner Stelle meinen Code eins zu eins für TimerB übernehmen und schauen
klar geworden ist. Gut das wir darüber geredet haben *g* Ich werde mich gegen Mittag nochmal ran setzen. Bis dahin muss ich erstmal Labeln :(
-
Thread
DCF77 ausgefallen
Hardware-Ausfall bei Meteotime irgendwann am Nachmittag auch so aus. Aber ich bin auch dafür, dass man die Bits sinnvoller nutzt. Selbst eine 14-Bit Minuten-Marke wäre schon nützlicher ;)
mit der Wettermaschine" beliebig den Luftdruck von 1013mbar auf 1009mbar oder sogar noch tiefer setzen. Und niemand sieht's kommen (und wieder gehen). Ein wahrlich untragbarer Zustand. Die fünfzehn '0' Bits sind eine geheime Nachricht aus dem kämpfenden Untergrund, dass die Normalbevölkerung NULL
-
Thread
Massive IO Porterweiterung - Stabilität des IO - mehrfaches SPI
der Umsetzung siehst. Dir ist wahrscheinlich nicht klar, dass das Lesen der Eingänge und das Setzen der Ausgänge über SPI *sehr schnell* geht. Wenn sich in der kurzen Zeit zwischen dem Erfassen der Eingänge und dem Setzen der Ausgänge etwas ändert, wird das natürlich nicht sofort erfasst, sondern
und auszugeben. > Dir ist wahrscheinlich nicht klar, dass das Lesen der Eingänge und das > Setzen der Ausgänge über SPI *sehr schnell* geht. Wenn sich in der > kurzen Zeit zwischen dem Erfassen der Eingänge und dem Setzen der > Ausgänge etwas ändert, wird das natürlich nicht sofort erfasst,
-
Thread
Programmvorschlag
dann ist das trotzdem noch zu viel Rechenleistung die benötigt wird. Was also ein Weg wäre ist, ein Bit verändern, prüfen ob das was aktuell da ist sinnvoll ist, wenn nein nicht nur ein weiteres Bit zu ändern, sondern gleich viele Bits. Also große Schritte zwischen zwei Bildern wenn der Inhalt keinen
Gustl B. schrieb im Beitrag #6640428: > Was also ein Weg wäre ist, ein Bit verändern, prüfen ob das was aktuell > da ist sinnvoll ist, wenn nein nicht nur ein weiteres Bit zu ändern, > sondern gleich viele Bits. Angenommen, du könntest tatsächlich erkennbare Muster/Bilder
-
Thread
8051 & Seiko L2432 mit HD44780A00 Chip
BIT LCD_Port.3 ;LCD_D5 BIT LCD_Port.2 ;LCD_D6 BIT LCD_Port.1 ;LCD_D7 BIT LCD_Port.0 ;LCD_buffer
hoffe dir ist schon klar das man pro Datenbyte/Befehl das High und Low- nibble senden musst. Also im 4-Bit-Modus. Und jweils dann das Enable setzen und wieder rücksetzen. Das Busyflag würd ich jetzt als Anfänger noch nicht abfragen, weil wenn die Busyflagabfrage nicht richtig funzt bleibt der µC in dieser
-
Thread
ausgänge sperren logik
) und 10 ODER-Gatter mit je zwei Eingängen (3 ICs) erledigen die Arbeit. Am µC sind zwei mal 4 Bit notwendig.
Bei jedem Durchlauf der Hauptschleife: 1. Eingangsbild lesen 2. Verarbeiten 3. Ausgangsbild setzen Wenn dann im Ausgangsbild mehr als 2 Bit gesetzt sind, Notabschaltung. Tipp: einem i++ kann man vertrauen. Und wenn nicht, rettet die Sicherung.
-
Thread
Anritsu MS8604A Fehler
der Organisation der Speicherzellen (8-Bit Row, 5-Bit Column) warum es zwei Einbrüche gibt. Aber das ist erstmal nur eine Vermutung.
ausgelesen und den Inhalt dem Dieter geschickt. Aber in zwei der Karten sitzen Eproms ebenfalls mit 16bit breite Datenwörter welche nicht 40 Pins haben sondern 42 Pins. Die bekomme ich fürs verecken nicht in den Sockel gesteckt. Die Methode die einzelnen überstehende Pins auf 0 oder 5V zu setzen ist
-
Thread
Handbetriebenen Drehgeber ohne Timer auswerten
herum bei geänderter Drehrichtung. Das reicht als Indikator. Vorgehen: die Schalterstellung als 2-Bit-Folge bei Änderungen in eine 8-Bit-Queue schieben und die Queue für die Drehrichtungserkennung nutzen. Wenn ich das obige Beispiel nehme, enthält die Queue als Ergebnis die Bitfolge xx000111 (Shift
encoder_temp = encoder_queue; // queue bits into a temporary variable if (encoder_temp & REVERT) { // if reverse bit (bit 6) is true... encoder_temp = ~encoder_temp; // ...reverse the temporary variable
-
Thread
Wie addiert man digitale Audiosignale?
, empfiehlt es sich einen akkumulations buffer zu verwenden, der den overflow aufnehmen kann 8->32 bit int. die addition sollte mit vorzeichenbehafteten integern erfolgen. also, wenn die quelle in 8 bit unsigned samples vorliegt: (sample buffer s zuerst auf 0 setzen. i ist sample index.) [c] int
Bit verwenden müsste.
-
Thread
Jumbo-LED Uhr
Anzeige nötig, oder? Der Look-Up-Table braucht ja auch nur 7-8 Einträge bei einer Datenbreite von 4 Bit.
neue hex file geladen und ausprobiert funktioniert leider nicht . kann es sein das ich zuerst die bits setzen muss damit es geht?
-
Thread
LCD über GPIOs ansteuern
GPIOC->BSRR = (0xFF << 16) | (data); [/c] Irgendwas mach ich hier noch falsch, wenn ich die Bits [0, 7] setzen möchte... Wenn data z.B. 0x30 ist, dann ist das dritte und vierte Bit gesetzt...
articles/Interrupt#Interruptfeste_Programmierung > Irgendwas mach ich hier noch falsch, wenn ich die Bits [0, 7] setzen > möchte... Wenn data z.B. 0x30 ist, dann ist das dritte und vierte Bit > gesetzt... Zählst du die Bits von links nach rechts? 0x30 setzt das 5. und 6. Bit von rechts. Die übrigen
-
Thread
ATtiny 85 PWM timer0 reset nach sei();
z.b. CTC mode und OCR0A interrupt - mit _delay_ms() an diversen Stellen gehofft, dass irgend ein bit "zu langsam" gesetzt wird - mit while(!(register & (1 << bit)){} das setzen aller bits abgewartet - timer0 als CTC zu configurieren funktioniert problemlos (Überprüfung der Hardware und meines Verständnisses
der Lage bist, das selbst aus dem DB zu extrahieren: es geht (in deinem Fall mit PB0) um die COM0Ax-Bits. Die musst du passend setzen für deinen TimerModus und deinen Anwendungsfall. Details, wie genau, entnimmst du aber bitte dann doch selber dem DB. Ich bin kein DB-Vorleser.
-
Thread
Interruptroutine bei Lpc2294 startet nicht
_0_MASK); PLLCFG = PLLCFG | ((PLL_M-1)<<PLLSTAT_MSEL4_0_BIT); // PSEL setzen.... PLLCFG = PLLCFG & ~(PLLSTAT_PSEL1_0_MASK); PLLCFG = PLLCFG | ((PLL_P-1)<<PLLSTAT_PSEL1_0_BIT); // PLL aktivieren aber noch nicht connekten PLLCON =
IRQ interrupt VICIntSelect&= ~(1<<TIMER0_IRQ); // Benutze slot 0 für timer 0 interrupt, Bit 5 = 1 => Slot aktivieren VICVectCntl0=(1<<5) | TIMER0_IRQ; // Enable timer 0 interrupt VICIntEnable = (1<<TIMER0_IRQ); // Setze die Adresse der ISR für slot 0 VICVectAddr0 =
-
Thread
GCC Präprozessor soll Anzahl der Einsen in einem Byte ermitteln
Servus, ich habe ein Byte zur Zuweisung von Funktionen das ich vorab im Code setzen/ändern möchte. Im Programm soll eine Schleife so oft laufen, wie Einsen in dem Byte stehen. Wie kann ich per Makro o.ä. die Anzahl der gesetzten Bits in einem Byte rausfinden?
Hommel schrieb: > Servus, > ich habe ein Byte zur Zuweisung von Funktionen das ich vorab im Code > setzen/ändern möchte. > Im Programm soll eine Schleife so oft laufen, wie Einsen in dem Byte > stehen. > Wie kann ich per Makro o.ä. die Anzahl der gesetzten Bits in einem Byte > rausfinden? Bits zählt
-
Thread
Taster entprellen
> Timer-Tick und startest von dort Deine Applikationen. > Die ISR besteht dann nur noch aus dem Setzen des Timer-Ticks, das wäre > dann ein Einzeiler. D.h. ich setze in der ISR eine Variable auf einen bestimmten Wert und setze in die Main Funktion eine if- Abfrage auf den entsprechenden Wert. In
Timer-Tick und startest von dort Deine Applikationen. >> Die ISR besteht dann nur noch aus dem Setzen des Timer-Ticks, das wäre >> dann ein Einzeiler. > > D.h. ich setze in der ISR eine Variable auf einen bestimmten Wert und > setze in die Main Funktion eine if- Abfrage auf den entsprechenden
-
Thread
Übertragung von High- und Low-Signalen zwischen zwei AVR
dann einfach gezielt die Bits, die man nicht haben will, auf 0 zu setzen oder ein wenig zurecht zu schieben, bis sie an den gewünschten Positionen sind. soviel zum Thema > Fehler in den Programmen sind ausgeschlossen
. Das gelesene um 5 Bits nach rechts verschieben. Dann liegen die 3 inetressierenden Bits ganz unten im Byte. Mit einer Verundung mit 0x07 (binär: 00000111) alle nicht interessierenden Bits auf 0 setzen. Übrig bleibt eine Zahl
-
Thread
Schrittmotor Bit Folge
Hi, ich habe einen BiPolaren Schittmotor und würde ihn gern über bascom und Pollin Schrittmotortreiber ansteuern. Habe ne weile gegoogeld aber keine ordentliche Bitfolge gefunden wie ich die Ports schalten muss. Der motor Klemmt an PB0-3. Mfg Stefan
-
Thread
Welcher Treiber zu 7 Segment LED mit Common Anode
> Stellen werden dann üblicherweise gemultiplext. Das spart Leitungen. Oder man nimmt einen 8 Bit Port und hat 4 Bit für BCD die auf einen BCD to 7 Seg Dekoder gehen und 4 Bits für das Multiplexing von zB. 4 Stellen. Da mit kommen Anfänger schneller zum Ziel als sich mit den Bitmustern für die Anzeige
Stellen werden dann üblicherweise gemultiplext. Das spart Leitungen. > > Oder man nimmt einen 8 Bit Port und hat 4 Bit für BCD die auf einen BCD > to 7 Seg Dekoder gehen Das ist dann im Prinzip eine Variante von "man hat die Daten schon parallel als BCD vorliegen". > und 4 Bits für das Multiplexing
-
Thread
Mikrocontroller Ports schalten nicht
//RC0 einschalten } } [/code] habe bisher nicht viele pics benuzt. nur 32bit er. ich würde dir auch empfehlen das setzen und löschen der pins mit xxxSET und xxxCLR zu machen. so packst du nicht immer den gesamten port an
#3133817: > Soweit ich es verstanden habe muss man das OSCTUNE Register > > auf 0b01001111 setzen. Bin mir aber nicht sicher. Mit Bit#6 (OSCTUNE.PLLEN) schaltest du auf PPL-Betrieb - wenn du mit internem Oszillator im 4MHz o. 8MHz Mode arbeitest. Die restlichen Bit "tunen" nur die Frequenz
-
Thread
Fragen zu meinem Batterietester
DDRC = (1<<PD1) | (1<<PD2) |(1<<PD3); // Kanal waehlen kein bit = kanal ADC0, (1<<MUX1) = ADC1 usw... ADMUX = (1<<REFS1)|(1<<ADLAR); // Refs0 u. Refs1 Referenzspannung // ADLAR bits linksbündig setzen // AVCC with external
+---+---+---+ 9 8 7 6 5 4 3 2 1 0 Ist keine 10-bit Genauigkeit gefragt, kann diese Zuordnung aber auch geändert werden: Durch Setzen des ADLAR Bits im ADMUX Register wird die Ausgabe geändert zu: ADCH
-
Thread
LCD (4bit-mode) am PCF8574
dreh noch durch!!! die initialisierung war falsch :-( wie wird so ein vermalledeites display im 4 bit mode initialisiert?
. Richtig wäre: E 128 ; oder 1<<7 RW 64 ; oder 1<<6 RS 32 ; oder 1<<5 Zum Setzen und Löschen von Bits in einem Byte solltest Du mit den AND und OR Operatoren arbeiten und nicht mit + und -! Sonst bekommst Du ein Problem, falls die bits aus irgendwelchen Gründen vorher schon gesetzt
-
Thread
megaAVR 0-Series Programmierung
Du nutzt ihn in deinem Fall, um das Bit 6 in einem Register zu setzen. Beispiel: "PORTF.DIRSET = PIN5_bm;" schreibt 0x20 in das Register DIRSET des PORT F, um die Direction des Pin 5 von Port F auf auf 1 zu setzen (das müsste "Input" sein
Landolt es angemerkt hat. Hier aber noch eine kleine Info: Das Register DIRSET dient speziell dem setzen der Bit im Register DIR. Es ist eine Vereinfachung, um schnell ein Bit im Register DIR setzen zu können. Als Pendant dazu gibt es das Register DIRCLR, mit dem man im Register DIR das entsprechende
-
Thread
200 MSPS zu je 8 Bit puffern -> welcher Speicherbaustein
Wartezyklen (CL u.a.) hat - je schneller getaktet, desto mehr. Ich würde auf eine Busverbreiterung setzen, also ein CPLD o.ä., das vier oder acht 8-Bit-Werte auf einmal in eine Speicherbank schreibt. Gruß - Wolfgang
Wartezyklen (CL u.a.) hat - je schneller > getaktet, desto mehr. Ich würde auf eine Busverbreiterung setzen, also > ein CPLD o.ä., das vier oder acht 8-Bit-Werte auf einmal in eine > Speicherbank schreibt. > > Gruß - Wolfgang Weißt du was Wolfgang - vielleicht hast du recht. Ich müsste einen RAM
-
Thread
200 LED Matrix mit nur 8 LEDs
Zum Zweiten vereinfacht sich die Farbdekodierung. Angenommen unser Pixel besteht aus 6 Bits in einem Byte die wir nutzen möchten. Von den 6 Bits jeweils 2 Bit pro Farbe -> RGB. Macht 64 Farben insgesamt. Nun machst du folgendes PORTD zb. benutzt 6 Pins. In zweiergruppen sind diese Pins
zusammengeschalteten PINS ist auf Ausgang der andere auf Eingang geschaltet. Wenn wir DDRD also so setzen das PD0, PD2, PD4 auf Ausgang ist und PD1,PD3,PD5 auf Eingang und wir ein Farbbyte auf PORTD ausgeben dann werden die Bits 0,2 und 4 am Ausgang anliegen. Also die Farbbits R0,G0,B0. Wenn wir DDRD so
-
Thread
Brauche Hilfe bei Projektarbeit
Kanal 1 ausgewählt temp = temp - 260; // Offset von 1,27V abziehen (1,27V entsprechen 260 Bit) press = press - 48; // Offset von 0,232V abziehen (0,232V entsprechen 48 Bit) // Druck und Temperatur übertragen // Timer programmieren, um Wartezeit von 10s zu realisieren
ups, hab gerade gesehen das AVRs beim setzen von TXEN das von alleine machen. Hmmm ...
-
Thread
LCD-Display an ATMega8 funktioniert nicht
temp1) { unsigned char temp2 = temp1; LCD_PORT |= (1<<LCD_RS); // RS auf 1 setzen temp1 = temp1 >> 4; temp1 = temp1 & 0x0F; LCD_PORT &= 0xF0; LCD_PORT |= temp1; // setzen lcd_enable(); temp2 = temp2 & 0x0F; LCD_PORT &= 0xF0;
// RS auf 0 setzen temp1 = temp1 >> 4; // oberes Nibble holen temp1 = temp1 & 0x0F; // maskieren LCD_PORT &= 0xF0; LCD_PORT |= temp1; // setzen lcd_enable
-
Thread
RS232 allgemein
ready // -------------------------------------------------------------- // Basisadresse setzen LDR r0, =USART_BASE ready: LDR r1, [r0, #USART_US_CSR] AND r1, r1, #BIT1 CMP r1, #BIT1 BNE ready // Wert an Basisadresse + Offset schreiben ldr r8, =(0x6A & 0x1FF) // sollte
init_usart0: // -------------------------------------------------------------- // Basisadresse setzen LDR r0, =PIO_BASE // zu schreibender Wert LDR r1, =(BIT5 | BIT6 | BIT21 | BIT22) // Wert an Basisadresse + Offset schreiben STR r1, [r0, #PIO_PDR] // zu schreibender
-
Thread
ADC lässt sich mit cbi ADEN nicht ausschalten
Hi Der ATMega16 hat 5 Mux-Bits ->cbr r16, $1F > sbr r16, 0 ;Kanal 0 unnötig. Warum machst du zum Mux-Setzen nicht *ein* Unterprogramm. MfG Spess
entspricht: ori r16, 1<<3 Also wäre "sbr r16, 0" => "ori r16, 1". Damit würde man Kanal 1 setzen nicht 0.
-
Thread
STM32 Umfang
WRITE_REG usw. sind eigentlich Makros und stammen aus der stm32f10x.h Header Datei [c] #define SET_BIT(REG, BIT) ((REG) |= (BIT)) #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) #define READ_BIT(REG, BIT) ((REG) & (BIT)) #define CLEAR_REG(REG) ((REG) = (0x0)) #define WRITE_REG(REG,
H. schrieb im Beitrag #5727071: > aber ich habe schon einige male (nicht bei > ST) erlebt, dass Bits verrutscht waren. Beim STM32F373 war (ist?) das Conversion Done Bit des SD-ADC falsch definiert (als Overrun Bit) sodass man das erste Ergebnis verpasst und ggf. einen Zeitversatz erhält... Ob das
-
Thread
Poti steuerung
Steve Uffelmann schrieb im Beitrag #3639532: > da aber das Register des ADC 10 Bit hat und die PWM nur 255 Werte komm > ich nicht klar wie ich das PWM Register durch das ADC Register setzen muss Du schmeißt du unteren zwei Bit vom ADC weg. Dann bleiben noch 8 Bit zur Steuerung
Hi Dann Bei der ADC-Initialisierung das ADLAR-Bit setzen und nur ADCH auslesen und an OCR übergeben. MfG Spess
-
Thread
PWM Versuche mit Bascom
Tastenzustand vorheriger Tastenzustand = jetziger Tastenzustand end if PS: Bei einer 8 Bit PWM sind 30 Stufen schon etwas heftig.
In der Schleife ein ein Bit setzen, wenn Du den Taster drückst. Wenn Das Bit 1 ist, die Schleife immer wieder ausführen. Wenn der Taster erneut gedrückt wird UND das Bit immer noch 1 ist, das Bit auf 0 setzen und die Schleife
-
Thread
Atmega32 16x2 LCD
veränderst du auch die anderen Steuerpins Gleiches gilt hier auch für den RS-Pin: Du schaltest mit der Bit-Zuweisung den kompletten Port und damit alle anderen Steuerbits. Das ist, gelinde gesagt, eine ganz dumme Angwohnheit. Bits in einem Register/Port setzt man so: [c]Register |= (1 << myBitToSet);[
nicht wieder mit der Rundumschlagmethode! Du willst die 3 Pins auf Ausgang setzen. Die 3 und nur die 3. Die restlichen Bits im DDRB bleiben unangetastet!
-
Thread
RISC/V kommt in Schwung
Möglichkeiten für Scheduling. So könnte ein Compiler Instruktionen anderer Befehle zwischen die der 64-Bit Addition schedulen; Bei einem Core mit Flags ist das oftmals nicht möglich. Und für einfache Sprungbefehle kann man ein Flag in einem Register setzen (SLT) und abhängig davon springen. Cores ohne
Hatte ich die Flags schon erwähnt ???????? Nichtmal die Möglichkeit, im Speicher atomic ein Bit zu setzen. Es gibt eine ganze Menge, was dieses Ding nicht kann. Es ist nicht besser, weil es neuer ist.
-
Thread
Port wechseln für LCD-Display
|= (data>>(4-LCD_DB)); // Bits setzen lcd_enable(); } //////////////////////////////////////////////////////////////////////////////// // Sendet ein Datenbyte an das LCD void lcd_data(uint8_t data) { LCD_PORT |= (1<<LCD_RS); // RS auf 1 setzen lcd_out(data); // zuerst die oberen, lcd_out(data<<4); // dann die unteren 4 Bit senden _delay_us(LCD_WRITEDATA_US); } ////////////////////////////
-
Thread
AVR Bootloader in C - Artikel
4)) << 4; break; ... [/code] da beim Record Typ 2 stellt die Offset-Adresse den oberen Teil (Bit 4-19) einer 20 Bit-Adresse dar, daher die Verschiebung um 4 Bit nach links. Ich habe es im Wiki geändert. Im Anhang die aktuelle "main.c" @Jan: Bitte testen...
gibt es eine Extended Fuse. Allerdings kann die nicht den Wert 0xF8 annehmen, da sie nicht so viele Bits nutzt. Wenn ich mich richtig erinnere, waren es nur die unteren drei und da sind 0xF8 und 0x00 gleich. Somit funtioniert es auch, wenn ich die Fuses auf 0xF8 setze, weil die Fuses, die gesetzt werden
-
Thread
FPGA dazu geeignet?
Mehmet K. schrieb im Beitrag #4997560: > Was ich braeuchte: > - 32-bit I/O tri-state faehig (Bus) > - 12-bit Inputs für Adress- und Steuer-Signale Wieso ein 32 Bit Bus für nur 64 IO? Ich würde da eher auf eine parallele SPI Schnittstelle gehen, so wie bei SD Karten
RS485-SPI Kombination: http://www.deathbylogic.com/2014/10/spi-over-long-distances/ Wieviele bits brauchst du pro Ausgang? mit 1/0/Tri sind 2 Bit notwendig. Wenn du dann noch pro 128 bit eine 16 Bit Prüfsumme mitlieferst pro Ausgangsmodul wärst du bei 2304 Bit pro Testmuster. Bei 512 Kbit/s hast