-
Thread
C Programm Strukturierung für Anfänger
gebt mir mal ein einfaches Beispiel gerne auch in Datei form für MPLAB, MPLAB X, MikroC oder Text File alles ist erlaub!
als auch Definierer eingebunden werden. Als Beispiel für eine Funktion "int func(int x)" und eine Variable "struct data var", die beide in foo.c definiert und exportiert werden: foo.h enthält: [c] int func(int x); extern struct data var; [/c] Dazu muss auch die Definition von "
-
Thread
MMC SD library FAT16 FAT32 read write
0b74 b456 bb0e 0007 10cd eb5e 32f0 0000c70 cde4 cd16 eb19 54fe 6968 2073 7369 6e20 0000c80 746f 6120 6220 6f6f 6174 6c62 2065 6964 0000c90 6b73 202e 5020 656c 7361 2065 6e69 6573 0000ca0 7472 6120 6220 6f6f 6174 6c62 2065 6c66
) // error 0.16% #define TOP_OCR 0x4D #define START_TCNT 0xB2 #define PRESCALER 0x04 #endif[/c] Hier die passenden Werte für diesen Systemtakt: [c]#if(F_CPU == 20000000) // error 0.16% #define
-
Thread
LED mit PIC18F4550 und C18
Das würde ich noch mal mit einer kleineren For Schleife Testen. So bis 250. Wenn der PIC wirklich noch mit 32kHz läuft, dann macht er nur 8000 Befehle pro Sekunde. Das könnten bei einer For Schleife bis 2500 (sind ja 16 Bit) schon mal über 10000 Befehle werden. Allerdings hätte die LED
Das hab ich hier schon öfter gelesen, dass User mit µC herumexperimentieren und ein vermeintlich einfaches Problem einfach nicht zu funktionieren scheint. Nach Austausch des Controllers ging es dann. Ob nun der PIC gleich defekt war oder man beim experimentieren
-
Thread
RS485 - Mikrocontroller
Hi Stephan, >sag doch mal was du alles schon hast! Hier der Code den ich bisher habe: [c] unsigned char test_array[] = {0x53,0x23,0x52}; //init UART1 U1BRG = 103; //Baudrate 9600; 16*10^6/(16*9600)-1 = 51 U1MODE = 0; U1STA = 0b0000000001100000; LATBbits.LATB8
Hi Stephan, >sag doch mal was du alles schon hast! Hier der Code den ich bisher habe: [c] unsigned char test_array[] = {0x53,0x23,0x52}; //init UART1 U1BRG = 103; //Baudrate 9600; 16*10^6/(16*9600)-1 = 51 U1MODE = 0; U1STA = 0b0000000001100000; LATBbits.LATB8
-
Thread
A2DP Bluetooth Modul China eBay
ist wie oben verwendet 0xc7 und nicht 0x1c7. Um den kompletten eeprom auszulesen ruft man eeprog 4 mal auf folgende Weise auf: [code] eeprog -fx /dev/i2c-0 0x50 -r 0:256 eeprog -fx /dev/i2c-0 0x51 -r 0:256 eeprog -fx /dev/i2c-0 0x52
-ne "\x00" | eeprog -f /dev/i2c-0 0x51 -w $(($STARTADDR + ${#STRING} )) echo "...DONE" echo "Product-ID now reads:" eeprog -f /dev/i2c-0 0x51 -r $STARTADDR:$MAXLEN echo eeprog -fx /dev/i2c-0 0x51 -r
-
Thread
Robustheit eines PIC16F630
Gerade habe ich beim Basteln einen PIC16F630 versehentlich mit 18(!)V Betriebsspannung versehen. Resultat: Rauch stieg auf, knistern und ein kleines Flämmchen; der PIC hat nun ein winziges Loch im Plastikgehäuse. Ich war natürlich sicher
iche hab mal einen PIC18 (oder war es ein 16er?) verkehrt rum in eine fassung eingesetzt, so dass + an - war und umgekehrt -> es stieg ebenfalls rauch zwischen den beiden gehäuseplättchen auf. danach habe ich ihn raus genommen
-
Thread
ATtiny85 (AVR Atmel 8bit), Linux, Microcontroller, C/C++
auch die verbindung angezeigt: [c]Product: AVRISP mkII[/c] [c]minicom[/c] konnte ich mich auf das Terminal einwählen. Mehr kann ich nicht. ISP --- auch hier habe ich anhand jumperwires die ISP pins und ATTiny85 pins (1,4,5,6,7,8
AVR erwischt habe. Das folg. Kommando bringt die selbe Fehlermeldung: [code]avrdude -p attiny85 -c avrispmkII -P usb -B16[/code] Ich tue mich schwer, bzw. weiß nicht wie ich es anschließe, ob ich es richtig anschließe (Anhang). Ich habe jetzt eine externe Batteriequelle (3x AA).
-
Thread
unlösbare Probleme mit PIC18
Oszillator laufen müsste). Ist leider n TQFP 0,5 Pith gehäuse als extern dranlöten is nicht ganz einfach. Achja bei der gelegenheit: Wie bekomm ich den MLCR wieder aktiviert ? ich find für den PIC 18 keine High voltage programming mit der man das
ich das ICD3 dran gemacht und hab durch den code steppen können. Danach mit Pickit nochmals 5x ausgelesen (ohne Probleme). Dann nochmals "Read" geklickt und kommt wieder ein fehler "No device detected". Hab die Platine zwischenzeitlich nicht berührt sonder nur auf Read geklickt. seit dem geht
-
Thread
E-Auto-Ladestation Typ 2
Michael H. schrieb im Beitrag #6374324: > Die verkraften eine Dauerbelastung mit 16A über mehrere Stunden > nicht ohne weiteres (starke Erwärmung). Nicht richtig, schreibst Du ja selbst: Michael H. schrieb im Beitrag #6374324: > 20m / 1,5mm^2: 3,7kW -> Verlust 115W 115W auf
Monatlich aufgeschlagen und Netto wieder abgezogen. Dazu noch eine Km Steuer. Beim Hybrid sind es nur 0,5% und beim E-Auto bis 60k€ Listenpreis nur 0,25%. Die günstigste Lösung ist selbst machen. Geht für etwa 30€. Mein 16A Schuko Ziegel ist nach wie vor auf einer Lochrasterplatine. Denken tut ein PIC 12F683
-
Thread
Arduino oder Clone? BMP085 an USB
> 1 Bahn unterbrechen, 3x Fädeldraht, fertig. Naja und 1x 100nF Block-C dazu
/MPSSE/LibMPSSE-I2C.htm mehr Infos unter OS X hab ich die Tage mal nen LM75 ausgelesen (http://www.twam.info/hardware/i%C2%B2c-via-usb-on-os-x-using-ft232h).
-
Thread
AVR gesteuerte Kerze für bis zu 8 LEDs
sei(); // Interrupts gloabl einschalten int i1,i2,i3,i4,i5,i6,i7,i8; //for (x=1,x=PWM_CHANNELS,x++) while (1) { if (i1 > rand()%235) { i1 = i1 - rand()%20; } else { i1 = i1 + rand()%20; }; if (i2 > rand
kann ich das noch lösen? Wie du schon richtig sagtest, mit einer Schleife. Und einem Array. [c] my_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } int main(void) { PWM_DDR = 0xFF; // Port als Ausgang // Timer 1 OCRA1, als variablem Timer nutzen
-
Thread
Berufscollege-Projekt. RGB LED Cube! HILFE!
dass man genug Pins hat um mindestens die Schichten ohne Portexpander ansteuern zu können (wären dann 5x5x3 = 75 Pins), die 5 Schichten zu adressieren kann man dann wieder gut mit nem Schiebereg. machen. Wie sieht dein 4x4x4 Cude eigtl. aus ? Was ist da für nen µC drauf ? Wie sind die LEDs angeschlossen
Der Schaltplan sieht in Ordnung aus... Wenn du einen 5x5x5 RGB-Cube bauen willst, musst du noch einen Mosfet und 2 TLC5940 an den µC hängen und die Software natürlich ändern. Im Prinzip ist es ja wie mein Vorschlag nur mit TLC5940 statt den 74HC595+ULN2803
-
Thread
pic12F508 I/O Pins Denkfehler?
Moin moin, ich beschäftige mich schon etwas länger mit PIC´s, allerdings blieb dies bis jetzt nur auf den 16F84 beschränkt. Habe nun ein kleines projekt in dem Ich einen 12F508 benutzen möchte. Zur programmierung des Pic´s benutze ich das Pickit 2. Als Programm MPLAB 8.40 und zum complieren den cc5x. Da ich zum ersten mal per ICSP programmiere habe ich ein Adapterkabel und eine kleine programmierplatine erstellt um den PIC mit dem Programmer zu verbinden. Das ist so weit glaube ich auch in Ordnung
-
Thread
dsPic33F - Timer/Interrupts
postscaler, PLL divisor PLLFBD=150; // M=152 CLKDIVbits.PLLPOST=0; // N2=2 CLKDIVbits.PLLPRE=5; // N1=7 // Initiate Clock Switch to Primary Oscillator with PLL (NOSC=0b011) __builtin_write_OSCCONH(0x01); __builtin_write_OSCCONL(OSCCON | 0x01); // Wait for Clock switch to occur
ist das zuvor gepostet Testprogramm zum Beispielprogramm in der Dokumentation sehr ähnlich. (laut dsPIC33F/PIC24H Family Reference Manual, Section 11. Timers, DS70205D, 11.4.1 Timer Mode, Example 11-1:Initialization Code for 16-bit Timer Mode). Auch das Dokument "dsPIC33F/PIC24H Family Reference Manual
-
Thread
DISKRETER Spannungsgesteuerter Oszillator(VCO)
z.b. Ringoscillator: 4x Transistor um 0.001Euro = 0.004 Euro plus 8xWiderstand um 0.0001Euro gesamt <0.005Cent plus bestückung etwa 0.1 euro. das wären halt doch 0.3 Euro unterschied zum PIC mit ad wandler.
Schraub nen PIC12F675 (4x10 bit AD) fuer 0,30 Eu dran. Dann hast immer noch 0,10 Eu gespart.
-
Thread
Kamera OV7670 an Arduino (3,3V auf D[0..7]-Leitungen)
hohen Frequnzen nicht zu empfehlen sind. Ich will da so hoch wie möglich mit dem Arduino gehen, also 16Mhz oder weniger je nachdem was ich das für einen Scaler an der Cam einstellen muss. Die I2C Leitungen funktionieren jedenfalls mit abgeschaltetem internem Pullup (der liegt auf 5V) und einem externen
Kamera macht das nichts? Was passiert denn da e-technisch wenn > ich von einer 3,3V Quelle an einen 5V Einfang "sende"? Und beim I²C fragst du dich das nicht? Bei CMOS Eingängen wird 3.3V nicht garantiert als High erkannt (5V*2/3=3.33V) und es führt zu einer erhöhten Stromaufnahme der Eingangsstufe.
-
Thread
Pollin-VFD und Frohe Weihnachten!
Zum Aufbau: Das VFD mit 20 Stellen bei 60 Pixeln wird über 10 Stück 8-stellige Schieberegister TPIC6C595 und 80xBC857 als Treiber betrieben. Die Ansteuerung erledigt ein PIC16F1827 auf einem extra Board, der eine I2C- Schnittstelle bereitstellt. Nach Trennen des PIC-Boards vom Display steht dessen
flexibel anpassbar auf andere VFDs. Das teuerste Bauelement mit ca. 4EUR ist der DC/DC-Wandler von 5V auf 24V (der schwarze "Würfelzucker" auf dem PIC-Board). Sollte jemand Bedarf an der Pinbelegung des NEC FIP20D9X haben, dann bitte hier melden. weihnachtliche Grüße Johannes
-
Thread
Uhrenquarz und Kondensatoren
zu basteln. radio ist so ein Retrobausatz für 15€, dass dann im ersten schritt erstmal von meinem PIC16F886 ein- und ausgeschaltet werden soll. die uhr wird auf 4x 16-segment anzeigen von kingbright angezeigt. diese werden mit einem 74hv4543 bcd-7-segment decoder angesteuert und gemultiplext. pic
. 5pF" könnte mein quarz trotzdem schwingen? oder benötige ich mindestens 2x 20pF-kondensatoren? und ich habe die portbedingte kapazität nicht im datenblatt gefunden. kann man diese vernachlässigen
-
Thread
Wie stark sollte man bei der Mikrocontroller Programmierung kapseln? Gesperrt
prinzipiell das 10fache ihrer Werke erzeugen würde. Kunststück. Was soll ein Compiler auch bei [C] int main() { DDRD = 0xFF; while( 1 ) { } ] [/C] auch groß anderes machen, als das was ein Assembler Programmierer auch macht. Der einzige Unterschied: Bei [C] DDRE = 0xFF;
kleine uC wie PIC16,PIC18 und da muss man manchmal Resourcen vor die 100% sauberen Designs stellen, aber NUR wenn es wirklich notwendig ist. Sonst ist alles in C++, PIC32, ARM7, ARM Cortex M3, und auf Linux
-
Thread
hc zähler instabil
Hallo, Frage zu der Beschaltung von 5-Bit-Zählers CD74HC4017PWR. Siehe Anhang. Es wurde von mir eine Schaltung auf einem PIC16f887 MC entwickelt. Kurze Erläuterung der Funktion der Schaltung. Es soll ein Kabeltester werden. Auf anderer
10126 gibt es ein 10226 Stecker und die Pins sind über Pulldown (10k) und teils über UND-Gatter mit µC verbunden. Der µC prüft, ob die Verbindung da ist und meldet es über LCD... Alles andere wie LCD16x2 und die Abfrage an den Ports RA und RB läuft einwandfrei. Aber Zähler verhält sich instabil. Entweder
-
Thread
Lichterkette auf Timer umbauen
einer Gartenleuchte eingesetzt. Wenn man die Schaltung zu Fuß aufbauen wollte, dann müsste man 5 CMOS ICs und einen 8-fach DIP Schalter dafür einsetzen (Bild). Eine DIP-Stellung entspricht 3 Stunden. Mit einem uC ist es natürlich einfacher.
sleep_cpu(); // und stoppen bis WDT aufweckt } int main(void) { volatile uint16_t n; CLKPR = 0x80; CLKPR = 0x8; // Vorteiler / 256 CPU-Takt = 31,25 kHz DDRB = 0x1f; // alle Pins als Ausgang und auf GND WDTCR = BIT(WDIE) | BIT(WDP3); // Watchdog-Intervall
-
Thread
AVR@PIC
Der PIC18F muß wohl brandneu sein. Ich hab in weder bei Segor noch Farnell gefunden. Typische PICs sind z.B. der PIC12C509. Und wenn man sich dessen Architektur mal ansieht, sollte wohl schnell klarwerden
den geringsten Overhead benötigt. Der Overhead von C gegenüber Assembler auf dem 8051 beträgt typisch nur etwa 5% ... 20%. C-Programme auf dem 8051 benötigen in der Regel wesentlich weniger Programmspeicher als C auf dem AVR und oftmals sogar weniger
-
Thread
PIC 16F877A - Keine Programmabarbeitung / ICSP-Programmierung nur wenn PGM auf LOW
. Es scheint als würde der PIC den Quarz den ich verwende (16MHz) nicht "akzeptieren". Hier das zugehörige Programm: [c] #include <pic.h> #define PIC_CLK 16000000 #include "delay/delay.h" __CONFIG (HS & BORDIS & PWRTEN & WDTDIS & UNPROTECT & DEBUGDIS & LVPDIS); void main() { TRISB = 0x00; for(;;) { PORTB = 0x00; DelayMs(500); PORTB = 0xFF; DelayMs(500); } } [/c] Wenn ich den Quarz am Oszilloskop ansehe, dann schwingt der schön mit 16 MHz... Eigenartig
-
Thread
AVR Synthesizer Konzept
sie nicht sehr viele Kanäle (meistens nur 4). Ich möchte einen Midisynthesizer bauen, so dass der µC nur die Mididatei einliest, ohne Umwandlung. Hier beginnen aber schon die Probleme: Atmega8 @16Mhz -> 16 mio Befehle/s Ausgangsformat 22050Hz @8bit (erstmal PWM, später 16bit DAC) (Tonausgabe
> Ist aber eher was für DDS-Geschichten. Also bei jetziger Konfiguration komme ich auf ca. 1.5Mhz pro Kanal. D.h. 10 Kanäle sind bei 16Mhz drin. Und wenn nicht alle die ganze Zeit spielen können es auch 16 sein. Oder der Mega wird auf 24Mhz übertaktet. Zu den Kosten: 16x2€=32€ für einen kleinen
-
Thread
PIC18F45K22 Software PWM
PIC läuft mit intern 16MHz, Timer 1 wird schon zur dekodierung einer kleinen Fernbedienung verwendet. Ich habe schon viel durchsucht, leider sind einfache Beispiele oft in asm ( ich arbeite mit c) oder
benutzen, leider bekomme ich es einfach nicht hin das für den Atmega32 gedachte Beispiel auf meine PIC18F45K22 umzumünzen. Init: [c] /* Timer 0 */ T0CON = 0x88; TMR0H = 0xFF; TMR0L = 0x88; INTCONbits.GIE = 1; T0CONbits.TMR0ON = 1; [/c] PWM Funktion: [c]U16_T time =
-
Thread
[V] Viele Bauteile 2.
32. M63P74-02 http://www.motorschrauber.de/Motorschrauberde/Temp/Bauteile/M63P74-02.jpg 33. M27C4001 http://www.motorschrauber.de/Motorschrauberde/Temp/Bauteile/M27C4001.jpg 34. Pal16R4ACN http://www.motorschrauber.de/Motorschrauberde/Temp/Bauteile/Pal16R4ACN.jpg 35. Pic16C57 http://www.motorschrauber.de/Motorschrauberde/Temp/Bauteile/PIC16C57.jpg 36. Pic16LF872 http://www.motorschrauber.de/Motorschrauberde/Temp/Bauteile/Pic16LF872.jpg 37. Pic16F876+PIC16LF873 http://www.motorschrauber.de/Motorschrauberde/Temp/Bauteile/PIC16F876+
-
Thread
TWI Bus hängt sich auf
Moin zusammen, ich betreibe ein Arduino Uno Board. An den I2C-Bus (TWI) habe ich einen Temperatursensor MLX90614 angeschlossen. Die I2C-Adresse des Sensors ist 0x5A. Im Anhang ist das Programm dazu. Mein Problem: Das Programm wird 2 - 5 mal durchlaufen und hängt
condition is transmitted } while (1) { _delay_us(50); TWI_Start(); TWI_Send_Address(0x5A,WRITE); // Address of the I²C slave TWI_Send_Data(0x07); //Adress of the temperatur register TWI_Repeat_Start(); TWI_Send_Address(0x5A,READ); Temperatur_LO = TWI_Read(ACK);
-
Thread
SD Karte mit FatFs über SPI an Atmega, wie kann man die Schreibgeschwindigkeit maximieren?
brauchst du einen ausreichend großen Puffer. Mit dem Problem beschäftige ich mich auch im Moment. (PIC18F27J53, FatFS, verschiedene Sensoren mit 5kHz-100Hz-33Hz Abtastrate und 16bit Daten) Dafür zwei Buffer mit 352Bytes, die in wechselweise in 30ms gefüllt und an FatFS weitergereicht werden. Bei den
du einen ausreichend großen Puffer. > > Mit dem Problem beschäftige ich mich auch im Moment. > (PIC18F27J53, FatFS, verschiedene Sensoren mit 5kHz-100Hz-33Hz > Abtastrate und 16bit Daten) Das Problem ist, dass SD-Karten ebenso wie beispielsweise SSDs keine transparenten Schreibzugriffe ermöglichen
-
Thread
ADC-Wert skalieren
(y2-y0)/2;end; if (x0=x2)OR(x1=x2)then begin x2:=x0+(x1-x0)/2;y2:=y0+(y1-y0)/2;end; c0:=y0; if ((x1-x0)<>0)then c1:=(y1-c0)/(x1-x0) else c1:=max; if(((x2-x0)*(x2-x1))<>0)then c2:=((y2-c0)-(c1*(x2-x0)))/((x2-x0)*(x2-x1)) else c2:=0; a0:=c0-(c1*x0)+(c2*x0*x1); a1:=c1-(c2*x0)-(c2*x1); a2:=c2; end; [/code] Die Konstanten kann man natürlich auch von Hand errechnen und im Programm
-
Thread
ATMega 8 programmieren
gedacht, ich kann es doch direkt über cmd hochladen. Also cmd geöffnet und eingegeben: avrdude -c usbasp -p m8 -U flash:w:ledblinken.hex:i Fehler: avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc Irgendwie schafft es Arduino den Programmer zu erkennen aber avrdude
, ich kann es doch direkt über cmd hochladen. Also > cmd geöffnet und eingegeben: > > avrdude -c usbasp -p m8 -U flash:w:ledblinken.hex:i > > Fehler: > avrdude: error: could not find USB device "USBasp" with vid=0x16c0 > pid=0x5dc > > Irgendwie schafft es Arduino den Programmer zu erkennen
-
Thread
Funkprotokoll dekodieren
Bitzahler = 1 Config Pinb.0 = Input Portb.0 = 1 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Do Cls If Bitcount = 3 Then Datar.bitzahler = 0 'Wenn nur 3 high Impulse detektiert
"receivedPacket = 1". Im Hauptprogramm würdest dann so etwa feststellen, ob Daten da sind: [c] ATOMIC_BLOCK( ATOMIC_FORCEON ) { tmpReceivedPacket = receivedPacket; } if ( tmpReceivedPacket ) { for ( int i = 0; i < nibble_ptr; i++ ) { sprintf( str, "%02x ", nibble[i] );
-
Thread
Was nehme ich nur?
Texas Instruments raten werden, ein alter MSP430C133 reicht schon, tut es auch ein AVR wie Atmega16 (oder natürlich Atmega164P PicoPower) und PIC wie PIC16F1526, denn auch die können wenig Strom verbrauchen, weil man sie sogar während die arbeiten
> Also das 2x8 von pollin (C0802-04) benötigt im Betrieb etwa 1mA Damit wäre ein LR44, ach nein, das Teil braucht 4 Zellen, in 5 Tagen leer, mit 3 LEDs a 2mA von denen nur 1 brennt in weniger als 2 Tagen.
-
Thread
Nochmal: Ansteuerung LED-Matrix 64 x 32 aus China
> Ist mir bei den angesprochenen Anzeigemodulen noch nie begegnet https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/how-the-matrix-works
Harry L. schrieb im Beitrag #6780614: > Mein Display (64x64) hat auch 1:8 Multiplexing (A,B und C) > Die Schieberegister sind 256 Bit lang (4 Zeilen) Das ist interessant! Demnach müsstest du also 2 x 3 x 256 Spaltentreiber, also 6 x 16 = 96 von den 24-poligen
-
Thread
MISC Processor
$D013C6A4 = $3AA00002 $D013C6A6 = $28234280 $D013C6A8 = $64C28010 $D013C6AA = $28030684 $D013C6AC = $64A34008 $D013C6AE = $28C2C0FF $D013C6B0 = $AC228A00 $D013C6B2 = $5C028594 $D013C6B4 = $5C02C614 $D013C6B6 = $5CC30000 $D013C6B8 = $64828508 $D013C6BA = $6482C588 $D013C6BC = $64830608 $D013C6BE = $68828510 $D013C6C0 = $68A2C008 $D013C6C2 = $2C630000 $D013C6C4 = $2C628000 $D013C6C6 = $4C604000
-
Thread
Texteinblendung in ein FBAS Signal
für Wünsche. Beim Mega8 wurde das maximal mögliche SPI-Tempo gewählt. Ein Byte (8 Bit/Pixel) ist in 16 CPU-Takten rausgeschoben. > > Maximale Datenrate bei einem PIC mit 20MHz sind anscheinend 5Mbps. So pasuschal (wie ein BWLer) würde ich das nicht betrachten, denn zwischen den Bytes holpert es
Bild seht ihr den Ausgang vom SPI und dir aufgebaute Schaltung. Bitte um Rat. Ich verwende den PIC 16F690. LG Andreas
-
Thread
long double übertragen
festhalten kann, wenn in beiden Fällen mit 64bit Gleitkommazahlen gerechnet wird (long double beim PIC, XC32 Comiler; double im PC, C#). Mir gehts eigentlich gar nicht darum, irgendwelche Zahlen zum PC zu übertragen (zumindest nicht in übertriebener Genauigkeit). Ich will nur wissen, warum es nicht
festgelegt wird. Dann probiers doch einfach aus, statt dich durch Stapel von Papier zu wühlen. [c]int FloatBits_longdouble(void) { long double x = 1.0, y = 1.0, y_last = 0.0; int i = 0; while (y != y_last) { y_last = y; y = 1.0 + x; x = x / 2.0; i++; } return
-
Thread
Verwirrung wegen JTAG
kannst jeden PIC nehmen, egal ob 8 (PIC18), 16 (PIC24/dsPIC) oder 32 (PIC32) Bit. Microchip verwendet zwar kein JTAG, sondern ihr eigenes ICSP, aber das zugehörige PicKIT3 kostet im Original 50€, als Nachbau 20-30€. Plus: Du verlierst nur zwei Portpins - bei JTAG sind es 4-5. Und im Gegensatz zu AVR kannst Du jeden PIC über ICSP nicht nur programmieren, sondern auch debuggen. Es gibt auch diverse Programmer zum Selberbauen. Das hat bei den kleinen PICs Tradition, da die
-
Thread
16bit Übergabe von uC zu CPLD
Hallo Mikro-Freaks, Ich habe wie im Anhang zu sehen einen uC(PIC18F4520) über portd (8bit) mit einem CPLD(XC95288XL) verbunden. Da ich 16bit-Register im CPLD mit diesen Daten füllen möchte ist nun mein Plan diesen 8bit-Datenbus auf "virtuelle" 16bit zu erweitern
wenn tatsächlich dies passiert: > Beispiel > PIC | frame[15:8] [7:0] > ------------------------------------------- > 1- Adresse1 | 0x00 0xFF <-- alter frame > 2- low-byte neu 0x00 | 0x00 0x00 <-- autsch
-
Thread
3 Byte nacheinander vergleichen und inkrementieren
Teo D. schrieb im Beitrag #6967882: > Nimm halt ne 16bit Var und gut is! Bei mir ist 3x8=24...
Dietrich L. schrieb im Beitrag #6968004: > Teo D. schrieb: >> Nimm halt ne 16bit Var und gut is! > > Bei mir ist 3x8=24... Ja ja, is ja schon gut. Hab mich halt in dem Geschwurbel "verzählt"....
-
Thread
I2C Display einfache Frage
[c] uint8_t initcmd1[] = { 0xAE, //display off 0xD5, 0x80, //Set Display Clock Divide Ratio/Oscillator Frequency 0xA8, 0x1F, //set multiplex Ratio 0xD3, 0x00, //display offset
rcall I2C_out ldi temp, 0xCF rcall I2C_out ret Oder: ldi temp, 0x80 rcall I2C_out ldi temp, 0x81 rcall I2C_out ldi temp, 0xCF rcall I2C_out ret Oder: ldi temp, 0x00 rcall I2C_out ldi temp
-
Thread
Schrittmotorsteuerung mit Trinamic TMC249 und TMC428 realisieren
>> 1: Hauptplatine mit Mega16 (viele Reserve-Pins auf Stiftleisten) 2: Platine mit TMC428 3: 3xPlatinen mit TMC249 4: 3xPlatinen mit Mosfets/Treiber << Hallo Urban, mir erscheint ein Mega16 etwas zu wenig zu sein für eine
Martin Cibulski schrieb im Beitrag #2094916: >>> > 1: Hauptplatine mit Mega16 (viele Reserve-Pins auf Stiftleisten) > 2: Platine mit TMC428 > 3: 3xPlatinen mit TMC249 > 4: 3xPlatinen mit Mosfets/Treiber > << > > Hallo Urban, > > mir erscheint ein Mega16 etwas zu wenig
-
Thread
Starterkit Mikrocontroller
blinky.o stm32.ld @ echo "..Linke" $(LD) $(LFLAGS) -o blinky.elf blinky.o blinky.o: blinky.c @ echo ".Kompiliere" $(CC) $(CFLAGS) blinky.c [/c] 2. Linkerfile [c] MEMORY { ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K } SECTIONS
mal was du bestellen sollst. Ich hab damals vor vielen vielen Jahren auf den Seiten von sprut vom PIC gelesen. (Davor auch mal C-Control 1+2 angetestet, aber das war nix für mich.) Dann bin ich mti dem Fahrrad zum Mükra Elektronik und hab ein paar PICs (16F84) und Teile für einen parallel Programmer
-
Thread
Eins durch x (1/x) Annäherung
durch eine für Integerberechnung günstigerer Variante ersetzen. Eine solche Division ( egal ob 1/x oder y/x) ist auf µC ohne APU immer ungünstig und sollte wenn irgend möglich durch Multiplikation und Shiften ( division durch 2^x) ersetzt werden.
Du teilst immer durch 170 ? In dem Fall wäre es so günstiger: #define factor1 = (2^16 / 170) // das rechnet der Preprocessor des Compilers aus und dann im code : ergebnis = ((x * factor1) >> 16) Dazu noch die passenden casts und variablengrößen.
-
Thread
IRMP und IRSND als Protokoll für 433 MHz Sender/Empfänger funktioniert nicht so ganz
OCR0A for OC0A and OC0B! # else # error wrong value of IRSND_OCx # endif # endif //PIC_C18 [/c] einfach leeren auf: [c] # else // AVR # endif //PIC_C18 [/c] Viel Spaß! [Edit] Leerstellen vor Kommentaren verkürzt, damit die Forensoftware
((x) & (1 << IRMP_BIT)) [/c] Neu: [c] # define input(x) !((x) & (1 << IRMP_BIT)) [/c] Einfach im AVR-Teil ein ! vor den Ausdruck schreiben. Das Herausbekommen des
-
Thread
ANSEL und gretel
\h2obrain\Workspace\h2obrain\PIC\PIC18F2550\LCD_C18\LCD_C18.c:391:Error [1101] lvalue required Z:\home\h2obrain\Workspace\h2obrain\PIC\PIC18F2550\LCD_C18\LCD_C18.c:405:Warning [2058] call of function without prototype Z:\home
------ Debug build of project `Z:\home\h2obrain\Workspace\h2obrain\PIC\PIC18F2550\LCD_C18\LCD_C18.mcp' failed. Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mcc18.exe v3.36, mplib.exe v4.37 Preprocessor symbol `__DEBUG' is defined. Sat Oct 16 03