-
Thread
erster Mikrocontroller
beliebt, da sie auch mit externem EPROM laufen konnten. Ich hatte dann auch 1993 die ersten AT89C51 mit Flash-Programmspeicher gekauft.
ist seine Sache. Es wäre doch schön wenn mann ihm 'sagen' könnte, "Hey ATtiny, ich brauche für 10ms einen Ausgang auf PB4, aber nur, wenn du ein Signal an PB1 für länger als 3ms bekommst!"q Was ist so schlimm daran, wenn es alle können? Nur weil dann einige nicht mehr was besonderes können?
-
Thread
Microchip PIC18F und ESP8266 Verbinden/einrichten
Code dazu. [c] void init_uart(void) { unsigned char config = 0; unsigned int spbrg = 51; // 51 laut DBlatt bei 8Mhz TRISCbits.RC6 = 0; //UART transmitter pin is set as output TRISCbits.RC7 = 1; //UART receiver pin is set as input config = USART_TX_INT_OFF
= 3; // } for(int i = 0 ; i<50; i++) { __delay_ms(20); } } } [/c] [c] void init_uart(void) { unsigned char config = 0; unsigned int spbrg = 51; // 51 laut DBlatt bei 8Mhz RCSTA1bits.SPEN = 1; TRISCbits.RC6
-
Thread
Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?
das macht 30 Mikrosekunden. Bei 117 LEDs sind das nicht > mur rechnerisch, sondern auch praktisch 3,51 Millisekunden. gerechnet habe ich das auch, aber ich habe 2 Libs in Arduino versucht fastLED.lib und ws2812.lib beide brauchen rund 300ms für den Farbwechsel, gemessen am Oszi an CRTL_LED_
macht 30 Mikrosekunden. Bei 117 LEDs sind das nicht >> mur rechnerisch, sondern auch praktisch 3,51 Millisekunden. > > gerechnet habe ich das auch, aber ich habe 2 Libs in Arduino versucht > > fastLED.lib und ws2812.lib > > beide brauchen rund 300ms für den Farbwechsel, gemessen am Oszi an
-
Thread
Problem mit dem Senden über RS232
Hi >UBRRL = 0x51; Das ist 81D, du brauchst aber für 9600Bd 51D (0x33). MfG Spess
kann. Kannst aber erstmal auch mit delay arbeiten, bei 9600Baud braucht ein Zeichen etwas mehr als 1ms. Ausserdem fehlt bei dir noch eine Klammerung: int main (void) { UBRRH = 0; UBRRL = 51; UCSRC = 0x86; UCSRB = 0x18; while(1) {UDR = 's'; delay_ms (2); } return 0; }
-
Thread
IRMP - Infrared Multi Protocol Decoder
4: pulse = 6, pause = 10] 0 8.667ms [bit 5: pulse = 6, pause = 26] 1 10.800ms [bit 6: pulse = 5, pause = 27] 1 11.867ms [bit 7: pulse = 4, pause = 12] 0 12.933ms [bit 8: pulse = 5, pause = 11] 0 15.067ms [bit 9: pulse = 4, pause = 28] 1 16.067ms [bit 10: pulse = 5, pause = 10] 0 18.200ms [bit 11: pulse = 6, pause = 26] 1 19.267ms [bit 12: pulse = 6, pause = 10] 0 20.333ms [bit 13: pulse = 6, pause = 10] 0 21.400ms [bit
-
Thread
for Schleife
<49) // ISR alle 10ms, 50x = 0,5s
Stellen im Prg nutzen. Um die Zeiten Nutzen zu können sind 500ms sehr schlecht, 10ms weitaus besser.
-
Thread
PPS5330 Labor-Netzteil hack
von t und U (siehe Tabelle). Spannung Zeit =============== 1.0V = 824us 2.0V = 1.334ms 3.0V = 1.845ms 4.0V = 2.355ms 5.0V = 2.866ms 6.0V = 3.376ms 7.0V = 3.887ms 8.0V = 4.398ms 9.0V = 4.908ms 10.0V = 5.419ms 20.0V = 10.527ms 30.0V = 15.639ms
https://youtu.be/6rm5Og6tHkc Spannung Zeit =============== 1.0V = 824us 2.0V = 1.334ms 3.0V = 1.845ms 4.0V = 2.355ms 5.0V = 2.866ms 6.0V = 3.376ms 7.0V = 3.887ms 8.0V = 4.398ms 9.0V = 4.908ms 10.0V = 5.419ms 20.0V = 10.527ms 30.0V = 15.639ms
-
Thread
Windows 10, was mich gewaltig stört
schrieb im Beitrag #7445199: > andauernde Belehrung und > Verunsicherungen der Benutzer seitens MS und der erhobene Zeigefinger > stört mich sehr. Dann benutz es einfach nicht, oder heul den MS-Support voll. Deine Trollerei nervt.
im anderen Thread) Und jetzt ist MS schuld, weil du dein Windows absichtlich sabotiert hast? Oder ist MS schuld, weil der Dialog oben eine "Trotzdem installieren"-Schaltfläche bietet, die für dich wohl besser nicht vorhanden wäre?
-
Thread
Projekt: Virtuelle Instrumente an serielle Schnittstelle
Dip-Schalterstellung. Es ergibt sich, wie oben im Bild zu sehen ist, eine ziemlich kurze Latenz-Zeit von nur 3,3 ms (schwankt allerdings bei mehreren Messungen so zwischen 2 ms und 4 ms). Ebenfalls sieht man daran, dass die Verabeitungszeit für dieses Dip-Schalter-Instrument im PC ca. 2.2 ms dauert. Für andere
Haupt-Menue Generator) Erzeugt Sinus, Sinus mit überlagertem Rauschen und Rampe mit Zyluszeiten von 1 ms, 10 ms, 100 ms und 1000 ms. Es können mehrere Signale gleichzeitig erzeugt werden. Funktionen: Start, Stop, Settings - Dämpfungsfaktor für alle Analog-Instrumente Linear oder Low-Pass (0,1
-
Thread
wireless JTAG Debugger
Präsenz schaltet bei allen mir bekannten OS die schnellen Connection Intervalle frei, d.h. Du hast ~10ms statt 50ms Intervalle und kommst so auf ca. 10kByte/sec netto (bei NRF51 Modul). Ich hatte mal das versaloon Protokoll für die R0ket mit 32k Flash / 8k RAM portiert: https://github.com/turboj/versaloon-r0ket
schaltet bei allen mir bekannten OS die schnellen > Connection Intervalle frei, d.h. Du hast ~10ms statt 50ms Intervalle und > kommst so auf ca. 10kByte/sec netto (bei NRF51 Modul). Ich hatte schon vor, da ein richtiges Produkt draus zu machen. Das Projekt wäre eh, vor allen Software-lastig und
-
Thread
RIP: Morgen wird der Support von Windows Vista eingestellt
oder nicht. DOS sowieso. > > Im Profibereich war NT bis einschließlich 3.5 war auch scheiße. 3.51 und > 4 gingen so - wenn man Treiber bekommen hätte. Also fasst du so ziemlich alles von MS vor XP mit SP als Schrott zusammen? Inkl. Win2k. "3.51 und 4 gingen so" Und Win10 ist toll? Einzig
wenns dann man läuft ist man der Held, weil man eben bis auf Zeit nix dafür bezahlt. Im Gegensatz zu MS's teuren Serverlösungen.
-
Thread
Initialwert von globalen Variablen zur Laufzeit verwenden
void sendUART(const char *varName, int val){ uart_puts(varName); char buffer [30]; _delay_ms(20); sprintf(buffer," = %d\n",val); uart_puts(buffer); _delay_ms(20); } [/c] Ausgabe: ######## Test ######## global_i = 3 global_i = 6 i_from_flash = -32 Edit: Von euren Antworten
(buffer); _delay_ms(20); } /* UART send function for uint32_t in hex format*/ void sendUARTHex(const char *varName, uint16_t val){ uart_puts(varName); char buffer [30]; _delay_ms(20); sprintf(buffer," = 0x
-
Thread
Tasten entprellen
quasi als Echtzeit wahrgenommen. Taster prellen meistens so um die 10ms, falls also mal einer etwas länger prellt und dies von der Routine erkannt wird, erhöht sich die Entprellzeit um weitere 10ms, auf 50ms. Das ein Taster viel länger als 10ms prellt kommt sicherlich
unbearbeiteten Timer/Counter0 Überlauf zu nutzen, der bei einem Teiler von 256 eine Zeitbasis von 4,1ms erzeugt, was einer Entprellzeit von ca. 16ms entpricht, wenn alles gut läuft und sich halt im 4ms Abstand erhöht, falls ein Preller erkannt wird. Ich weiß eine 4,1ms Zeitbasis ist nich so dolle für
-
Thread
Linux ist Mist - mal wieder (Xubuntu) Gesperrt
MS-Software. Es gibt genug Alternativen.
ersetzen MS-Office vollständig und können, man sollte es kaum glauben, MS-Officedateien lesen und schreiben, ältere Dateiformate sogar besser als es das aktuelle MS-Office kann.
-
Thread
globaler counter funzt net wie erwartet
//Beep low setzen } /*Interupt von Timer*/ ISR(TIMER0_OVF_vect) { if (sys_ms_Inkr >= MS_INKR){ sec_takt++; sys_ms_Inkr = 0; } else { sys_ms_Inkr++; } TCNT0 = 256 - CM_Val; } /****************************/ /* MAIN
***********************/ int main(void) { //INIT ioinit(); sec_takt = 0; sys_ms_Inkr = 0; sei(); while (1) { cbi(BEEP_PORT,1); _delay_ms(100); sbi(BEEP_PORT,1); _delay_ms(100); if(sec_takt == 1){ sbi(BEEP_PORT,BEEP_PIN);
-
Thread
Wie DCF77 mit PRN im Eigenbau verwenden?
800 Sek Filter gehen und auf die bins auf 50-80 reduzieren und dies mal testen. Derzeit: Jede 1ms: if(sample_dcf_pin()) inp++; // averaging Jede 10ms: if(inp<=10/2) inp=0; idx++; if(idx>=100) idx=0; // average > samples/2 ? if(inp) { if (bin[idx]<300) bin[idx]++; } // bound add/sub else { if (bin[idx]) bin[idx]--; } Jede max_val-noise_val<noise_thresh oder 550ms nach max_id Errechnen von max_val, max_id (bin) und noise_val. Ausrechnen, ob es ein kurzer ,langer Impuls, sync_mark oder undefiniert ist. Dies wird dann in einem Array abgelegt und dann
-
Thread
Arduino Micro SPWM
-42,-43,-43,-43,-44,-44,-45,-45,-45,-46,-46, -46,-47,-47,-47,-48,-48,-48,-49,-49,-49,-50,-50,-50,-51,-51,-51,-52,-52,-52,-53,-53,-53,-54,-54,-54,-55,-55,-55,-56,-56, -56,-57,-57,-57,-58,-58,-58,-59,-59,-59,-60,-60,-60,-60,-61,-61,-61,-62,-62,-62,-63,-63,-63,-64,-64,-64,-64,-65,-65,-65, -66,-66,-66
60,-59,-59,-59,-58,-58,-58,-57,-57,-57,-56,-56,-56,-55,-55,-55,-54,-54,-54,-53,-53,-53,-52,-52,-52,-51,-51,-51, -50,-50,-50,-49,-49,-49,-48,-48,-48,-47,-47,-47,-46,-46,-46,-45,-45,-45,-44,-44,-43,-43,-43,-42,-42,-42,-41,-41,-41,-40, -40,-40,-39,-39,-38,-38,-38,-37,-37,-37,-36,-36,-36,-35,-35,-34,-34
-
Thread
Hilfe bei HC-06 Bluetooth
if (rec_char == 'a') { Field[0]=0; Field[1]=255; //grün update_PWM(); _delay_ms(1000); } else { Field[1]=0; Field[0]=255; //rot update_PWM(); _delay_ms(1000); } } [/c] Gruß, Bernhard
ob der UART frei ist? Irgend ein Flag beachten? Ein Zeichen bei 9600Baud benötigt immerhin knapp 1ms! (zur Not, nach der Zuweisung ein delay von einigen ms rein) Wenn das nix hilft, dann ist die Baudrate falsch.
-
Thread
Checksummenberechnung. Versteh's nicht.
0xFF, 0xF5, 0xFA, 0xDC, 0x4E }; uint8_t alloff[15] = {0x33, 0xCD, 0xD7, 0xD2, 0xFC, 0xF2, 0x5F, 0x51, 0xD7, 0xCD, 0xFF, 0xF5, 0xFA, 0xDC, 0x8E }; uint8_t filler[15] = {0x3F, 0xFC, 0xE9, 0xFF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1 };
Zur erklärung de pulseview files: 9ms lo 5ms hi ist sync. dann ist 3ms hi = 0, 1 ms hi = 1, getrennt immer mit 1ms lo. Da sprechen 2 geräte mit etwas unterschiedlichem timing. Die 0xDX ist die WP, die 0x3X ist tastatur/display
-
Thread
Zündschaltung Simson
geht hier um die Zündschaltung, nichts anderes ! Ja aber es ist komisch, dass deine stirbt. Die KR51/52 hatten einen Unterbrecher, die KR51/2L eine CDI, die den Kontakt nurnoch für den ZZP nimmt. Soweit ich aber entsinne, braucht die mehr Wumms, und nicht weniger. Mit fällt damit keine Kombination ein
hier um die Zündschaltung, nichts anderes ! > > Ja aber es ist komisch, dass deine stirbt. Die KR51/52 hatten einen > Unterbrecher, die KR51/2L eine CDI, die den Kontakt nurnoch für den ZZP > nimmt. Soweit ich aber entsinne, braucht die mehr Wumms, und nicht > weniger. Mit fällt damit keine Kombination
-
Thread
KFZ Transientenschutz
>> schon vorher über Widerstände verheizen. > Das hatte ich am Anfang auch mal überlegt. Zb einen 51 Ohm Widerstand, > der 0,6W aushält. Ich würde max 100mA ziehen, dann würden bei dem 5,1V > abfallen (0,51W). Wenn sich die Lichtmaschine oder der Generator abschaltet, dann gibt es in aller Regel
) einen Strich durch die Rechnung macht. Beim BUZ11 sind in diesem Diagramm noch Linien für DC, 100ms und 10ms eingezeichnet. Beim Diagramm des IPD50N06S4L-12 leider nur bis 1ms.
-
Thread
Timer, Interrupt
====// #include <stdio.h> // Standard Ein-/Ausgabefunktionen #include <at89C51cc03.h> // CC03er-Grundregister #include <at89C51cc03.h> // 8051er-Grundregister #include <reg51.h> #include <irq52.h> //======================== Definition
====// #include <stdio.h> // Standard Ein-/Ausgabefunktionen #include <at89C51cc03.h> // CC03er-Grundregister #include <at89C51cc03.h> // 8051er-Grundregister #include <irq52.h> #include <reg51.h> //======================== Definition
-
Thread
DS89S450 lässt keine Unterprogramme aufrufen
vom Type int. Das koennte Probleme bereiten .... Probiers mal so: [c] void wait(unsigned long ms) { unsigned long i=0; int j=0; for(i=0 ; i<ms ; i++){ for(j=0 ; j<1106 ; j++){ } } } [/c] PS: Und formatier deinen Code mal ordentlich, das hilft
spezifiziert wird, wo sie abgelegt werden sollen. Guckst du da: http://www.keil.com/support/man/docs/c51/c51_le_memmodels.htm http://www.keil.com/support/man/docs/c51/c51_le_memtypes.htm Du kannst sowohl für einzelne Variablen als auch komplette Code-Module sagen, dass sie sich in einem anderen Speicher
-
Thread
AVR SDK / API gesucht
1<<TOIE0); sei(); while(1){ // PORTD=sekunden; // PORTD |= (1<<0); // _delay_ms(100); // PORTD&= ~(1<<0); // _delay_ms(100); ; } } ISR( TIMER0A_OVF_vect ) { help++; if(help%2) PORTD |= (1<<1); else PORTD |= ~(1<<1); } [/c] Das ist der Code, den ich
ATmega1284P mit 16Mhz #include <avr/io.h> #include <avr/interrupt.h> #include <stdint.h> uint16_t ms; ISR(TIMER0_COMPA_vect) { ms--; if (ms == 0) { ms = 1000; PORTD ^= (1 << PIND5); } } int main(void) { ms = 1000; DDRD = (1 << DDD5); /* Timer0 (1ms) */
-
Thread
DCF-Uhr from Scratch
und Seite 9: > Die Output-Delay-Time ist 50ms bis 100ms, > die Logisch 0 Pulse sind 40ms bis 130ms lang, > die Logisch 1 Pulse 140ms bis bis 230ms lang. Ja, 2023 hatte ich an einem Pollin-Modul die Impulszeiten gemessen, siehe dort: https
wp-content/uploads/2016/05/da6181B.pdf >> Siehe Seite 3 und Seite 9: >> Die Output-Delay-Time ist 50ms bis 100ms, >> die Logisch 0 Pulse sind 40ms bis 130ms lang, >> die Logisch 1 Pulse 140ms bis bis 230ms lang. Typischer Fall von falscher Interpretation. Ja, die Impulsdauern schwanken abhängig vom
-
Thread
Dybkowski AT89S8253 Flasher Platinen-Aufbau
Hi, Danke für die schnelle Antwort!!! In der Library hab ich keinen AT89C51ED gefunden. Ich hab jetzt einen AT89C51-24JC (AT89C51-*) im PLC-44 version genommen. Aber wie sag ich Eagle, dass der auf einem Sockel sitzt? Sonst kann ich ja nicht routen. Ok, ich habe jetzt die
> In der Library hab ich keinen AT89C51ED gefunden. Ich hab jetzt einen > AT89C51-24JC (AT89C51-*) im PLC-44 version genommen. Aber wie sag ich > Eagle, dass der auf einem Sockel sitzt? Sonst kann ich ja nicht routen. Eagle benutze ich
-
Thread
Was macht hier die Z-Diode
Michael schrieb: > Dann will ich mal fürs obige Beispiel rechnen, Andrew kanns ja offenbar > nicht: 51V Eingangsspannung, 24V Ausgangsspannung...macht bei mir einen > Unterschied von geschätzten 27V...und 27V ist ja deutlich mehr als 35V Dann will ich mal deine Rechenkenntnisse auffrischen: 51V rein
http://www.national.com/ms/LB/LB-47.pdf
-
Thread
Robuste Datenkommunikation für beliebige Kabel und Topologien nach Vorbild CAN
eine logische "0" ein langer. Die maximale Datenrate ergibt sich durch die Länge der Pulse (default 4ms und 8ms) und die Pausenzeit dazwischen (default 2ms). Siehe angehängte PDF-Datei. Es wird für einen Arduino insgesamt also eine 3-adrige Leitung benötigt (5V, Gnd, Signal). Im System ist nur ein Pullup
Hi Bad U. schrieb im Beitrag #5077213: > Bei Pulsdauer 4/8ms hast Du genug Zeit den > Controller per Interrupt beim Flankenwechsel zu wecken. Das 1-wire-Protokoll läuft in µs, nicht ms - hatte mich auch etwas ausgebremst, daß Das so flott sein muß. Unterm
-
Thread
Linvor Bluetooth Modul antwortet Atmega8 nicht wie erwartet
PORTB-LEDs anzeigen long_delay(2000); } // } } void long_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } [/c] Ich habe dann auf meinem Breadboard 8 LEDs angebracht. Da der Atmega8 nur an Port B 8 Ein- und Ausgänge hat, die unglücklicherweise teilweise auch für
} } // Delay Funktion, um Pausen in den Programmablauf einzubauen void long_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } [/c] Sonst hat noch das erste von mir verwendete Android-Terminal-Programm, mit dem ich die Daten an den Controller gesendet habe, ein wenig Probleme
-
Thread
Anfrage zur Bandbreite eines Oszilloskopes
Abtastrate? Das ist entscheidend. Um ein 60-MHz-Signal gut darstellen zu koennen brauchst Du mind. 600 MS/s, besser mehr. Mein Tektronix hat bei 60MHz ein GS/s Abtastrate. Gruss, Michael
Hallo Michael, die Abtastrate ist 250 MS/s.
-
Thread
AD-Wandler von AT89C51: Impulsbreite mit zwei Potis einstellen
Rechtecksignal soll ueber zwei Trimm-Potis einstellbar sein. Der Bereich der Einstellung liegt zw. 1ms - 256ms, sowohl fuer die negative (t_n) Impulsbreite als auch fuer die positive (t_p) Impulsbreite. Wobei t_n + t_p die gesamte Impulsbreite formen, sollen sie jedoch unabhaengig/getrennt betrieben
Ich habe es rausgenommen. Es funktioniert ein Stueck weit. Aber ich bekomme: -maximum 250 ms anstatt 256 ms, was die hoechst positive Impulsbreite anbelangt -minimum 0 ms anstatt 1 ms, was die niedrigst positive Impulsbreite anbelangt Noch einen Hinweis von euch, bitte? Ich habe mein
-
Thread
Drehzahlmesser 4 mal 7-segment mit 90S2313
wird der Timer1 bei Prescale 256 mit 34,72 ys getaktet. Bei 6000 Upm hast du eine Impulszeit von 10ms. Das sind dann 288 Impulse in 10ms. Das hochgerechnet ergibt 9,99936ms, das sind dann 6000,384 UpM. Das sollte eigentlich reichen.
wie schnell aktualisiert das Display dann die anzeige? es hat dann schon eine 'refreshrate' von 250ms, oder? du nimmst doch die impulse sicher via optokoppler von dem zündsystem, doch wie kommst du dann auf 288impulse bei 10ms (sorry wenn ich das noch nicht ganz versteh) Grüsse Andy
-
Thread
Kanon erzeugen auf dem Microcontroller Atmel T89C51RC2
dauert 0,5s Halbe Note dauert 1s, ganze Note dauert 2s, achtel Note dauert 0,25s Grundzeit ist 25ms, für ein Achtel muss dann 80/8 mal gewartet werden zwischen 2 Noten ist 25ms Pause => Timer 1 wird dabei ausgeschaltet! */ #include <at89c5131.h> // läuft auch auf dem T89C51RD2 // Frequenzen
spess53 schrieb im Beitrag #2444244: > Der verwendete AT89C51RC2, hat im Vergleich zu AVRs, nur einen sehr > rudimentär ausgestatteten Timer: Er hat 4 Timer und 6 PWM-Ausgänge. Das sollte dicke reichen. Peter
-
Thread
Größtest Display mit SPI Schnittstelle?
32256 bytes) Building .pio\build\uno\firmware.hex Ohne DMA und mit den Berechnungen wird der AVR >1ms für den Refresh brauchen, vielleicht 2ms.
Rudolph R. schrieb im Beitrag #8045811: > Ohne DMA und mit den Berechnungen wird der AVR >1ms für den Refresh > brauchen, vielleicht 2ms. Da ich das in den Raum geworfen habe muss ich auch berichten, dass ich mit meiner Einschätzung ganz weit daneben lag. Ich habe das gerade auf einem Arduino
-
Thread
Verständnisfrage zu BLDC-Motoren und Steuerungen, PWM
kann/darf). Auch da muss man aufpassen, welches Signal man generiert. Die meisten Sender erzeugen 1ms für hinten (Bremse/Rückwärtsgas) und 2ms für vorne (Vorwärtsgas), 1,5ms ist dann die selbstrückstellende Mitte/"Stop". Im Flugzeugmodus ist immer noch hinten 1ms, vorne 2ms, aber es gibt keine Selbstrückstellung
"Vollgas". Manche strecken aber im Flugzeugmodus auch einfach den Hebelweg, d.h. ganz hinten = 1,5ms = Stop, vorne = 2ms = Vollgas vor. Damit kann man mit der Hebelei eines Flugzeugs arbeiten, aber "alle" ESCs benutzen. Beachte: die Werte 1ms und 2ms sind hier nicht fix, es gibt keine Vorschrift welcher
-
Thread
Probleme bei Grundbeschaltung 8051 (AT89S52)
ich mal das Brennen testen. Vorhandene Chip: 89C2051, 89S51, 89S8252 Danke!
22.1184 MHz crystal nop nop djnz r1, dly3 ;repeat 230 times for 1 ms djnz r0, dly2 ;repeat for specified # of ms ret [/code]
-
Thread
Keil uVision 3 Warning L16
*** ;------------------------------------------------------------------------------ ; STARTUP.A51: This code is executed after processor reset. ; ; To translate this file use A51 with the following invocation: ; ; A51 STARTUP.A51 ; ; To link the modified STARTUP.OBJ file to your application
PBPSTACKTOP ENDIF MOV SP,#?STACK-1 ; This code is required if you use L51_BANK.A51 with Banking Mode 4 ;<h> Code Banking ; <q> Select Bank 0 for L51_BANK.A51 Mode 4 #if 0 ; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
-
Thread
Timer Programmieren in C
bit one_second; u8 count_50ms; void t0_init( void ) { TMOD = 1; // T0: Mode 1 (16 Bit) TR0 = 1; ET0 = 1; } void t0_int( void ) interrupt INT_T0 { TH0 = -TH0_RELOAD; if( count_50ms <= (u8)TH0_REMAIN ) // handle remainder TH0--; if( --count_50ms ) return; count_50ms = 20; // 1sec = 20 * 50msec one_second = 1; } void main( void ) { t0_init(); EA = 1; for(;;){ if( one_second ){ one_second = 0;
-
Thread
VU-Meter, aber korrekt!
und das auch noch stereo. Grundlage wäre: Man braucht 30us pro LED, für einen 70er Strip also 2.1ms, stereo 4.2ms, macht 230 Hz Update refreshrate. Das reicht. Man kann es verkürzen, in dem man kürzere Strips parallel mit Daten versorgt. Wenn deine +10dB so 3.16Vrms also 4.5Vpeak wären, sind -40dB
48,48,48,48,48,48,48,48,49,49,49,49,49,49,49,49, 49,49,49,49,49,50,50,50,50,50,50,50,50,50,50,50, 50,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51, 51,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52, 52,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53, 53,53,53,53,53,54,54,54,54,54,54,54,54,54,54,54, 54,54,54,54,54,54,54,54,54,55,55,55,55,55,55,55
-
Thread
6x audio delay bis 100ms billig und einstellbar
Vielleicht einfach analog? Kann zwar nur bis 51ms aber es hindert dich ja keiner am hintereinanderschalten... http://www.musikding.de/BL3207 http://pdf1.alldatasheet.com/datasheet-pdf/view/164432/BELLING/BL3207.html
gottseidank. Philip Siefke schrieb im Beitrag #3901093: > Vielleicht einfach analog? Kann zwar nur bis 51ms aber es hindert dich > ja keiner am hintereinanderschalten... Bitte keinen Eimerkettenspeicher, mit ist schon wichtig dass der Sound halbwegs sauber durchkommt. Im C64 sind zwei SIDs verbaut,
-
Thread
AT89C51RC2 CHip Erase
nur mit einem Parallelprogrammer, der auch den T89C51RC2 unterstützt. Ein Programmer der nur normale AT89C51 kann, nützt da garnichts. AT89C51 ungleich AT89C51RC ungleich AT89C51RC2 !!! Peter
Raise VCC to 6.5V. 2. Pulse ALE/PROG once (duration of 200 ns - 500 ns) and wait for 150 ms. 3. Power VCC down and up to 6.5V. 4. Pulse ALE/PROG once (duration of 200 ns - 500 ns) and wait for 150 ms. 5. Power VCC down and up. Die normale Löschmethode für den AT89C51 löscht nur den Speicher
-
Thread
Intel Hex-File-Format umwandeln
Der Mide51 bzw. Asem51 erzeugt das Hex-File im Intel-Format. Wie kann ich auf das "richtige", wo außer dem Maschinensprachecode nichts anderes enthalten ist, kommen? Gibt es dafür ein Programm, oder müßte ich
@ Johann D. (khs) >Der Mide51 bzw. Asem51 erzeugt das Hex-File im Intel-Format. Und wo ist das Problem? Intel Hexfiles sind reiner Maschinencode, nur halt ASCII kodiert. Jedes Brennprogramm schreibt die Daten direkt in den EEPROM
-
Thread
Temperaturmessung mit LM35 und PIC18F4550 auf LCD anzeigen
set_adc_channel(0); mess = read_adc(); //mess2 = (float)mess/51; printf(LCD_PUTC, "\fTemp: %2.3fV\n", mess); delay_ms(50); */ der wert von 12 bis 15 ist der ADC-Wert... 12 bei raumtemperatur ~15 wenn ich mit dem finger drauf
über 10 in "wert"; von da her liegt das richtig Also noch mal: eine 1 in "wert" entspricht (1/51)V am adc 1V entspricht 10 Grad C vom lm35 also ist eine 1 in wert 10Grad/51 macht also bei einer 12 in wert 12* 10/51 Grad = 23 Grad. Ich hoffe, diesmal ist mir nicht der Kommafehler wieder
-
Thread
DCF77-Modul-Preis und -Anbindung?
dekodieren des DCF-Signals. Am einfachsten geht es mit einem UART. Die Baudrate wird auf ungefaehr 200 ms / 9 eingestellt mit folgender Idee: Mit beginn des Sekundenimpuls startet der Uart den Empfang eines zeichens. Nach 100 ms sind das Startbit und 4 Datenbit vergangen, nach 200 ms 8 Datenbit. Somit liefert der UART bei einem 100 ms - Impuls ein 00F und bei 200 ms ein 0FF (oder 0F0 und 0FF). Also dekodierung übernimmt UART, Auswertung kinderleicht. Ein Empfänger nach diesem Prinzip wurde vor Jahren in der Fachzeitung Elektor
-
Thread
Funktionsgenerator 7706 - Sweep reparieren
44 8,52 45 6,85 46 8,38 47 8,49 48 8,5 49 8,49 50 8,5 51 8,51 52 3,6 53 8,49 54 8,49 55 8,49 56 8,49 57 8,45 58 8,44 59 5,2 60 8,41 61 4,73 62 4,74 63 8,47 64 4,74 65 8,51 66 8,51 67 8,49 68 8,5
64 4,74 7,44 65 8,51 8,03 66 8,51 8,02 67 8,49 8,02 68 8,5 8,06 [/pre] da sind teilweise deutliche Unterschiede. Siehe z.B. Pin 2,3,5,6,7,14,15,16,19.
-
Thread
Launischer AT89S8252
betroffen! Hier trotzdem das pupssimple Programm, welches - ganz unerlaubt - innerhalb der ersten 500ms die ISP-Pins beschreibt. [code]#include <at89S8252.h> void main(void) { while (1) { P1 = 0xff; } }[/code]
Firmware fuer das brennen. Aber nicht der 825x. Sicher, dass du da nicht was verwechselst? Die AT89C51xx2 ja, die können sich mittels Bootloader selber flashen, aber der 8252/8253 sicherlich nicht. Ralf
-
Thread
OLED128x128 SSD1351 RGB Initialisierung Color Farbe bunt SPI 3.3V AVR ATmega8 ATmega328p Assembler
das bei 8Mhz Systemtakt und daraus > resultierender maximalem SPI Takt von 2MHz ein Bild in ca. 17ms > übertragen lassen. Sehr seltsam, real habe ich bei 8MHz µC Takt *101ms* und bei 16MHz 51ms gemessen, warum diese große Abweichung? Ich erkenne kaum noch Optimierungspotential: [code]
MHz-ATmega328. Bernhard S. schrieb im Beitrag #6586311: > Sehr seltsam, real habe ich bei 8MHz µC Takt 101ms > und bei 16MHz 51ms gemessen, warum diese große Abweichung? > > Ich erkenne kaum noch Optimierungspotential: > OLED_CLEAR: > ldi ZL,low (128*32) > ldi ZH,high(128*32) > OLED_CLEAR_s: >
-
Thread
Eine Minute warten - Atmega8
Overflow-Interrupt enablen sei(); } ISR (TIMER2_OVF_vect) { // (8000000/1024)/256 Hz = 30,51 Hz => 32,776 ms counter++; if(counter == 30) // 1000ms / 32,766 = 30,51 { minute_vergangen = 1; counter = 0; } } int wait_minute(void) { minute_vergangen = 0; while
. Was tut es stattdessen? Sandro schrieb im Beitrag #3537778: > if(counter == 30) // 1000ms / 32,766 = 30,51 > { > minute_vergangen = 1; Ich glaube, du hast nach 30*30ms noch keine ganze Minute gewartet...
-
Thread
C: If-Abfrage spielt verrückt
= 0; } [/c] Und hier die Ausgabe am Terminal: 2012-04-10 11:50:47 one_hundred_ms_ticks_counter = 600. 2012-04-10 11:51:47 one_hundred_ms_ticks_counter = 600. 2012-04-10 11:52:47 one_hundred_ms_ticks_counter = 600. 2012-04-10 11:53:38 one_hundred_ms_ticks_counter = 512
]volatile uint8_t timer_event = 0; ISR(TIMER1_COMPA_vect) { static uint16_t one_hundred_ms_ticks_counter = 0; one_hundred_ms_ticks_counter++; if (one_hundred_ms_ticks_counter >= 600){ one_hundred_ms_ticks_counter = 0; timer_event = 1; } } ... if(timer_event) /
-
Thread
Handycamera MCA-25 ansteuern - ip webcam mit mega32
CALC_1MS SYSCLK/256/1000 //=28.8 //val = 0 -> 1ms on, 7.8ms off //val = 255 -> 2ms on, 6.8ms off OCR0 = (CALC_1MS-5 + (unsigned char)(((double)servo_pos/255.0)*CALC_1MS)); [/c] CALC_1MS sollte eine ms dauern. Demzufolge ist für deine werte 0,6-2,1 ms: OCR0 = ((unsigned char)((double)(0.6*CALC_1MS) + ((double)servo_pos/255.0)*((double)(2.1-0.6)*CALC_1MS))); müsste so ungefähr stimmen