-
Thread
Störanfallige ICs??
einfacher ist mache ich es halt so und nicht anders wo ich noch gar keine Ahnung von habe, aber um das gehts ja auch gar nicht.
Daweil hängt sie nun und funktioniert und ich mach mir kein Kopf mehr drum solang sie geht^^
-
Thread
Zeitscheibensysteme
void Application_1s (void) { blink = ~blink; //-------------- LED blinken -- if (blink) {PORTC = PORTC | LED; } else {PORTC = PORTC & ~LED; } } Ich will das die LED (LED_Bit) 400 ms an und 900 ms aus ist. Das ganze soll aber in der 100 ms Zeitscheibe ablaufen
Deine Variable i nix mit der Zeit zu tun hat, sondern in der Schleife decrementiert wird. Und das geht rasend schnell.
-
Thread
Nochmal Hilfe zum DOGXL
stimmt jetzt geht die led auch wieder an :)
mehr ansteuern. Wenn ich hingegen den Pixelsalat vom start beibehalte und dort drin rumwurschtel geht alles.
-
Thread
LCD Ansteuerung im 8 Bitmodus
Wie wärs mit einem Blick ins Datasheet vom HD44780? Da steht drin wie es geht.
und die 4 // Datenleitungen müssen auf aufeinanderfolgenden Pins liegen #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_DB PC0 // LCD RS <--> PORTC Bit PA0 (RS: 1=Data, 0=Command) #define LCD_RS PA0 // LCD EN <--> PORTD Bit PA2 (EN
-
Thread
PWM ADC BASCOM
Ja danke gut zu wissen geht das auch irgendwie mit den Mux Registern einfacher
µC-Clocks Ergibt +35% Auslastung. Basti schrieb im Beitrag #2461634: > Ja danke gut zu wissen geht das auch irgendwie mit den Mux Registern > einfacher Die Kenntnis darum ist auch in C weiterverwendbar, nur die Syntax ist da etwas anders.
-
Thread
Xmas LEDs AVR 8x8->16x10 längst auf quer
jetzt gehts halbwegs :| ich hatte aus einer Grafik-LCD Routine in Erinnerung, wie man das reinschieben muss ;) einen Teil vom aktuellen Byte und einen Teil des nächsten... Ganz hundertprozentig funktioniert
indx<19;indx++) sr[indx]= shadow_ram[indx]; i= 0; frame_rate++; } else { PORTC =sr[i++]; //Jetzt die Werte den Ports zuweisen PORTA =sr[i++]; PORTD = zeile++; // Jeweilige Zeile aktivieren } } [/pre]
-
Thread
Dimmer flackert trotz Timer Interrupt
diese Routine z.B hat "nur" Schleifen und Stört: [c] void Eingaenge_abfragen (void) { PORTC |= (1<<PC4); // Mit PL alle Eingänge in das Register schieben. // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<
} // Mit Clock weiterschieben // Clock auf High PORTC |= (1<<PC4); // Clock auf Low PORTC &= ~(1<<PC4); // Clock auf High PORTC |= (1<<PC4); } } [/c]
-
Thread
Pin geht nicht auf 5V
Hallo liebes Forum! Ich scheitere gerade an einem relativ simplen Problem, und zwar folgendes: Ich will über ein Programm (in Bascom) den Pin PortC.0 auf 5V bzw. 0V setzen. Vom Programm her müsste das stimmen, allerdings wenn ich das Oszilloskop dranhalte bekomme ich einen merkwürdigen wellenartigen Verlauf, der im Millivolt Bereich liegt. Ich weiß leider gerade nicht weiter. Kann mir jemand schnell helfen? Das wäre super! :-) Hier der Programmschnipsel: regfile = "8515def.dat" $crystal = 8000000 $baud = 9600 '$sim 'simulation $hwstack
-
Thread
AVR Programm, brauche Hilfe bei Kommentar bitte
ein Test ob es funktioniert, habe noch ein richtigen Beitrag reingestellt, bitte anschauen wenn es geht. Lg Dominik
case durch die variable i { case 0: // Wenn 1. Durchlauf PORTC=0xFF; // alle LED aus i++; break; case 1: PORTC=0b1111110; // letzte LED an i++; break; case 2: PORTC=0b1111100; // letzte und vorletzte LED an
-
Thread
Taster Abfragen (Selbstabschaltung)
Die Interruptfunktion ist dann abzuschalten und erst wieder zu aktivieren bevor es ans Schlafen geht.
~30mV, differentiell gemessen und mit Gain 20x, und 1.1V ADC Voltage Reference, beim Attiny24 geht das ja... Ich würde nicht grundsätzlich ausschliessen un mal im Prototyp probieren.
-
Thread
Atmega8 bleibt nicht in der Schleife?
ldi r16, 3 out PORTD, r16 // interne Pullup-Wiederstände aktivieren mainloop: cbi PORTC, 0 cbi PORTC, 1 cbi PORTC, 2 sbis PIND,5 // skip if Bit cleared rcall Wasser sbis PIND,4 rcall Eis sbis PIND,3 rcall Crushed //sbic PIND, 2 //rcall Rotate sbis PIND, 1 rjmp Lock
Wait sbis PIND,5 rcall Wait //<----------- Sobalad irgendein Wait drin ist geht nichts mehr... sbic PIND,5 ret wasserloop: // rcall Wait sbis PIND,5 sbi PORTC,0 sbis PIND,5 rjmp wasserloop ldi R19,0 ret
-
Thread
Pin Interrupt löst Reset aus
1 ist mein externer Interrupt löst entweder einen Reset aus oder der Rücksprung in die int main() geht immer an den Anfang der main und initialisiert alles neu. Mein Promlem 2 ein externer Interrupt wird manchmal gleich zweimal hintereinander aufgerufen (mit einem Tastendruck) obwohl ich große Verzögerungszeiten
Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In // State7=0 State6=0 State5=0 State4=T State3=T State2=T State1=T State0
-
Thread
UART ARRAY von PC an PIC
unsigned char Byte2; unsigned char Byte3; unsigned char Byte4; PORTA=0; PORTB=0; PORTC=0; PORTD=0; PORTE=0; //ANFANG if(Byte1==0x10) //Digitale Ausgangskarte
Dann ist das schonmal ganz gut, unabhängig davon, wie gut der Programmierstil ist. Ich dachte, es geht jetzt erstmal nur noch darum die 4 Bytes zu empfangen. Hast Du meinen Code getestet? Läuft er? Ich bin hier kein PIC-Zeug, an dem ich meinen Code, den ich hier poste, testen könnte.
-
Thread
Hilfe PORT D kann nicht 2x in einem Programm mit LCD genutzt werden.
den Port D mehrfach...Einmal als Eingang und einmal als Ausgabe für das LCD Display... doch leider geht das nicht... wir haben im DigiEingang gesagt alles Eingang und gut... bei den Anaolgen Eingängen soll auf dem Display die Werte ebenfalls ausgegeben werden und an den PC geschickt werden...doch wenn
Port D mehrfach...Einmal als > Eingang und einmal als Ausgabe für das LCD Display... doch leider geht > das nicht... Natürlich geht das nicht ohne eine Zusatzschaltung. Sonst kämpfen die Eingänge mit den Ausgängen, bzw. das Gerät an den Ausgängen spielt verrückt. Man kann mit zusätzlichen Signalen
-
Thread
I2C und Bascom
PC, alles funzt. Nun will ich mit einem Gyro per I2C sprechen und mein erster Gehversuch mit I2C geht voll daneben. Der Gyro ist ein Modul MinIMU-9 (L3G4200D and LSM303DLH Carrier) von Pololu. Im Programm ist sonst kein Timer oder Interrupt aktiv. Es geht alles bis in die Gosub write_byte, "i2c
kollidiert die Beschreibung mit der Realität. An Pin 27/28 liegt PC4/5 und die HW-I2C Schnittstelle. PB4/5 geht für SW-I2C, auch die eingebundene Lib deutet darauf hin. Über Config I2CDelay sollte dann die Geschwindigkeit der Soft-I2C eingestellt werden. Es müssen externe Pullup-Widerstände dran, Soft-I2C geht
-
Thread
Global typedef struct mit signed char?
AxisRelPos += AXIS[AxisSelect].AxisDirection; if (AXIS[AxisSelect].AxisRelPos < 0) PORTC = 0; else PORTC = 255; }[/c] Wird mit signed / unsigned int deklariert, so wird AxisRelPos richtig als vorzeichenbehafteter Integer betrachtet. Wird dagegen int16_t
im Beispielcode an der unterschiedlichen Ausführung des Branches. Mit "signed int AxisRelPos" wird PORTC = 0, mit "int16_t AxisRelPos" wird PORTC = 255 ausgeführt. Das darf so nicht sein. Würd' vorschlagen, das sich das jemand Anders noch anschaut, nicht dass ich was übersehen hab'. Kann auch sein
-
Thread
Eagle 6 XML Files
ja könnte man z.b. ein Tool schreiben, der Codekommentare anhand vom Pinning generiert wird. (z.B. PORTC PIN0 ---> LED_GREEN oder so) Das würde das programmieren echt erleichtern, wenn man in die Projekte direkt Pinmappings etc einbinden könnte, welche von dem Tool anhand der Netzlisten bzw dem XML-File
die x,y Koordinaten). Das Raster war im Schaltplan auf 0.1 Zoll gestellt, das Segment TESTLED geht von 4.0, 2.4 nach 4.8, 2.4 in mm 101.6, 60.96... Width = 0.1524 mm = 6 mil
-
Thread
PIC18F4550 minimale Beschaltung mit maximaler Portanzahl möglich?
unverändert... Beim PORTB, PORTD und PORTE funktioniert das alles wunderbar... Nur beim PORTA und PORTC lassen sich einige Pin's nicht schalten... Beim PORTC denke ich dass es an den Pin's für den USB liegt, aber den brauche ich nicht bei meinem Vorhaben... Kann mir vllt. hier jemand helfen und sagen
dein grösstes problem hier ist: du sagst nicht, was dein ziel ist. wenn es dir z.b. darum geht 100 LEDs unabhängig voneinander ein/auszuschlaten, dann brauchst du lediglich 3 pins deines PICs. -> stichwort: schieberegister wenn es dir z.b. darum geht, so wenig bauteile zu verbrauchen und du
-
Thread
Drehimpugeber am Atmega8 mit FSM
= 0x00; //Auf Eingang setzten (B) DDRC = 0xFF; //Auf Ausgang setzten (C) //PORTC = 0xFF; //Pull ups aktivieren //Bei 0xFF ist Pull up aktiviert //Bei 0x00 ist Pull up deaktiviert int tempA;//= 0x00; int tempB;//= 0x00; int tempC;//= 0x00;
Interrupts aktivieren sei(); lcd_init(); int zustand = 0; //Aktueller Zustand PORTC = 0xFF; while(1) { tempA = PIND & 1; //0b0000000X tempB = PIND & 1<<1; //0b000000X0 tempC = PIND & 1<<2; //0b00000X00 if(iDreh == 23) { iZahl++;
-
Thread
Bascom Variable verändert sich selbst
8000000 $hwstack = 40 $swstack = 32 $framesize = 60 $baud = 57600 Config Lcdpin = Pin , Rs = Portc.1 , E = Portc.0 , Db4 = Portb.4 , Db5 = Portb.3 , Db6 = Portb.2 , Db7 = Portb.1 Config Lcd = 16 * 2 Config Int1 = Rising Enable Int1 On Int1 Isr_von_int0 Enable Interrupts Config Timer0 =
Das geht durch den Compiler? Tempc = Str(tempc) For I = 0 To Len(tempc) If I = Len(tempc) Then tempc ist doch ein WORD und kein String Dim Tempc As Word Was liefert Len, wenn man
-
Thread
Beschleunigungssensor BMA020 funktioniert nicht
Alias Portd.7 Led_rt Alias Portd.6 Led_gr Alias Portb.0 ' - i2c Config Twi = 400000 Config Scl = Portc.5 Config Sda = Portc.4 ' ' variablen dimensionieren Dim V(6) As Byte Dim Ax As Integer At V(1) Overlay Dim Ay As Integer At V(3) Overlay Dim Az As Integer At V(5) Overlay Dim Acc_cntr As Byte
Stell den µC-Clock auf 8MHz, trag's im Programm ein, 400kHz TWI aus 1MHz µC geht nicht. Das NACK zum Schluss ist ok, vorher muss ACK verwendet werden. Du kannst die erfolgreiche Ausführung jedes I2C-Befehls über die Variable ERR überprüfen. Stell sicher, daß die Anschlüsse am Modul
-
Thread
Anpassung TCP-IP Stack
uip_arp_timer(); //arptimer = 0; zaehler = 0; } } else { PORTC |= (1 << 2); if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { PORTC |= (1 << 3); uip_arp_ipin(); uip_input(); if(uip_len > 0) { PORTC |= (1 << 4); uip_arp_out(); enc28j60PacketSend(uip_len,uip_buf); } } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { uip_arp_arpin();
-
Thread
Interrupt in C 3x3x3 LED Cube
&=~(1<< PC3) ; PORTC |=(1<< PC2) ; // _delay_ms(200); PORTC &=~(1<< PC2) ; PORTC |=(1<< PC1) ; // _delay_ms(200); PORTC &=~(1<< PC1); PORTC |=(1<< PC0) ; // _delay_ms(200); PORTC &=
&=~(1<< PC3) ; PORTC |=(1<< PC2) ; // _delay_ms(200); PORTC &=~(1<< PC2) ; PORTC |=(1<< PC1) ; // _delay_ms(200); PORTC &=~(1<< PC1); PORTC |=(1<< PC0) ; // _delay_ms(200); PORTC &=
-
Thread
Pin abfrage geht nicht
soll bei nem Mega32 eine Tasterturmatrix auslesen aber schon die einfache Pinabfrage über 1 Taste geht nicht!! PINB2-4 Spalten PINC2-5 Zeilen Aktuell ist die Zeile 1 (PINC2) active und wenn dedrückt soll der PortB1 da ganze auslesen (high sein) ! Stimmt was mit den Pull Up Einstellungen nicht.
[c] PORTC = (1<<PC2); if (PINB & (1<<PINB1))[/c]Zwischen diese beiden Zeilen muss ein NOP.
-
Thread
Mit dem ATMega32 zwei Displays betreiben?
doch, das geht schon. Aber auch beim Schreiben musst du natürlich sagen, welches gerade gemeint ist. Falls du keine Angst vor C++ hast: ich habe hier irgendwann mal eine Version veröffentlicht, die ohne Änderungen
Ich kann in der Routine aber keine zwei Enables eintragen. #ifndef LCD_PORT #define LCD_PORT PORTC #endif #define LCD_DATA0_PORT PORTC /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT PORTC /**< port for 4bit data bit 1 */ #define LCD_DATA2_PORT PORTC /**< port
-
Thread
Atmega 16 Timer1 in Simulation ok aber in in Real
// now enable interrupt while (1) { //PORTB ^= (1<<PB4); PORTC ^= (1<<PC0); } } [/c]
durch ist. Der Interrupt macht was? Der toggelt das Bit 0 am PORTB. Danach ist er fertig und es geht zurück ins Hauptprogramm. Was macht das Hauptprogramm? Es toggelt seinerseits PB4 im Register und schreibt alles zurück an PORTB. Aber! Dadurch ist auch PB0 wieder in seinem Ursprungszustand. Das
-
Thread
I2C am ATmega16 geht nicht mit beliebigen Pins
'Quarz Frequenz Const Pcf8574_lcd = &H40 Config Scl = Portc.4 Config Sda = Portc.5 Dim _lcd_e As Byte _lcd_e = 128 Cls Locate 1 , 3 Lcd "1234567890" End [/code] Danke für einen hilfreichen Tipp
Kaum macht man's richtig, schon geht's. Danke für die Hilfe. Gruß, Frank
-
Thread
Unterschiedliches Verhalten von LCD Ansteuerung (lcd-routines/avr-gcc) bei zwei versch. Displays
Platine aus, habe ich die 6 IO-Pins und Versorgungsspannung+Masse mit dem Controller (ATMega32) auf PORTC (JTAG ist aus) verbunden. Außerdem habe ich jede einzelne Verbindung durchgepiepst und auf Kurzschlüsse überprüft. Die beiden Grünen Displays initialisieren sich einwandfrei, der gesendete Text wird
verpolt habe ich ein Display noch nicht. Könnte mir aber vorstellen, dass es nicht gleich kaputt geht sondern eben sich merkwürdig verhält. Allerdings wundert mich die verpolte Belegung der Spannungsversorgung schon ein wenig... Daniel
-
Artikel
Ambilight in Hardware
Modulatoren gehen an die Eingänge der Integratoren. Auswertung Das Herz der Schaltung ist der ATMega48. An PORTC hängen die ADC-Ports. PC0 - U-Integrierer PC1 - V-Integrierer PC2 - Y-Integrierer PC3 - Sample-&-Hold U PC4 - Sample-&-Hold V PC5 - Sample-&-Hold Y Im Kapitel Software ist beschrieben, wie die Ports
.2 der Komparator angeschlossen, welcher ein High-Signal erzeugt, sobald das BAS-Signal unter 0,1V geht. Am Pin PD.2 ist außerdem der Pullup eingebaute Pullup eingeschaltet, um sich einen externen Widerstand zu sparen. Der externe Interrupt ist auf steigende Flanke eingestellt. Dann wird der Timer2 im
-
Thread
ATmega32 mit GLCD resetet ständig
95 ret [/code] Eigentlich alles so, wie es sein sollte: DDRC ist komplett auf 0x00, und PORTC auch. So langsam habe ich das Gefühl bekloppt zu sein. Oder daß in PORTC irgendetwas nicht stimmt. (JTAGEN ist aus, Fuses 0xD9BF). Viele Grüße Nicolas
auch gegen einen Pull-Down-Widerstand High), obwohl er ein Eingang sein sollte. Ich bin jetzt von PORTC auf PORTB umgezogen, und das Phänomen läßt sich immer noch reproduzieren. Viele Grüße Nicolas
-
Thread
Ultraschall-Sensor Firmware funktioniert nicht
if(z <= 140) enable_led_portc(1); if(z > 140) enable_led_portc(0); } void enable_led_portc(int y) { DDRC = 0xFF; PORTC = 0x00; //alle LEDs ausschalten zu Beginn switch(y) { case 0 : PORTC
if(z <= 140) enable_led_portc(1); if(z > 140) enable_led_portc(0); } void enable_led_portc(int y) { DDRC = 0xFF; PORTC = 0x00; //alle LEDs ausschalten zu Beginn PORTC = (1<<y); } [/c]
-
Thread
Timer Output Compare manuell abfragen
inline_fifo_put (&infifo, UDR); if(TIFR & (1<<OCF1A)) { TIFR &= (0<<OCF1A); TCNT1=0; PORTC=fifo_get_nowait(&infifo); } }[/c] Es geht um die if-Abfrage. Ich habe das Outputcompare Register auf einen Wert eingestellt. Wenn der erreicht ist, wird ja das Output Compare Match Flag des
-
Thread
Zeitproblem UART Daten speichern und mit Timerinterrupt ausgeben.
ISR (TIMER1_COMPA_vect) { /* Interrupt Aktion alle (16000000Hz)/ 362 = 44100 Hz */ PORTC_temp = fifo_get_nowait(&infifo); if (PORTC_temp != -1) { PORTC = PORTC_temp; } }[/c] Wenn ein Byte in der Warteschlange ist (also fifo_get_nowait(&infifo)!=-1) wird der Wert an PORTC ausgegeben, an dem ein DAC hängt. Das Problem ist, dass am Ausgang des DAC nur etwa mit 300 Hz Daten herauskommen. Ich vermute mal, dass sich die Interrupts gegenseitig behindern... Aber im Moment
-
Thread
Wie setze ich Ausgänge mit einer for-Schleife?
[c] for (i=0; i<7; i++) { PORTC = (PORTC && ~(1<<i)) || (((int)Fach[i] > 500 && Fach[i] < 800) << i); } [/c]
habe das mal so gemacht wie du es geschrieben hast, nämlich Fach[] <= 500 Pin in PORTC unverändert lassen Fach[] > 500 && Fach[] < 800 Pin in PORTC setzen Fach[] >= 800 Pin in PORTC löschen
-
Thread
DS18B20: Problem mit Temperaturauslesen
bei niedrigen delay-Zeiten nicht das erwartete messen kann. DDRC=0xFF; while(1) { PORTC=0x00; _delay_us(1); PORTC=0xFF; _delay_us(1); } Dort kann nur jeweils eine reale Zeit von 265µs gemessen werden mit dem Oszi?? Obwohl ja eine Delayzeit von 1µs erwartet wird
gerade nachgeschaut, er war nicht aktiviert...nun habe ich ihn auf Os aktiviert und siehe da-> es geht!! Danke für den Tipp.
-
Thread
VPP, MCLR und VDD
Compiler benutzt du? Nochwas. Im Main() hast du TRIS definiert, aber den zustand nicht (PORTB und PORTC). d.h. Ausgangspegel ist undefiniert.
> Im Main() hast du TRIS definiert, aber den zustand nicht > (PORTB und PORTC). d.h. Ausgangspegel ist undefiniert. Richtig, das fehlt noch: PORTB = 0x00; // Reset Port B PORTC = 0x00; // Reset Port C
-
Thread
ASM und C-Code kombinieren
einen Object-Code? Nein. > Oder klatscht der direkt alles in ein IHEX? Ja. Eine Source-Datei geht rein, brennfertiges Binary kommt raus.
= 31 sreg = _SFR_IO_ADDR(SREG) porta = _SFR_IO_ADDR(PORTA) portb = _SFR_IO_ADDR(PORTB) portc = _SFR_IO_ADDR(PORTC) portd = _SFR_IO_ADDR(PORTD) ucsra = _SFR_IO_ADDR(UCSRA) ucsrb = _SFR_IO_ADDR(UCSRB) ucsrc = _SFR_IO_ADDR(UCSRC) udr = _SFR_IO_ADDR(UDR) #endif // _GAS_REGPORT_H
-
Thread
Port Konfigration zur Laufzeit festlegen
OUT_PORTB) { DDRB|=pinval; PORTB&=~pinval; // port low } else if (port==OUT_PORTC) { DDRC|=pinval; PORTC&=~pinval; // port low } else if (port==OUT_PORTD) { DDRD|=pinval; PORTD&=~pinval; // port low } } } [/c] und setOutputChannel
) { if ( val ) PORTB |= pinval; else PORTB &= ~pinval; } else if ( port == OUT_PORTC ) { if ( val ) PORTC |= pinval; else PORTC &= ~pinval; } else if ( port == OUT_PORTD ) { if ( val ) PORTD |= pinval; else PORTD &= ~pinval; } } [/c] Ich verdrehe
-
Thread
Zwei defines verbinden
Oliver schrieb im Beitrag #2416383: > Es geht aber darum, daß hinter jede Anweisung in C ein Semikolon gehört. > Und > > if(x) > BLA; > else > BLUBB; > > geht eben in die Hose. Ja natürlich, if.... *;* ... else geht nunmal
Nils S. schrieb im Beitrag #2416394: > Oliver schrieb im Beitrag #2416383: >> Es geht aber darum, daß hinter jede Anweisung in C ein Semikolon gehört. >> Und >> >> if(x) >> BLA; >> else >> BLUBB; >> >> geht eben in die Hose. > > Ja natürlich, if.... *;* ... else geht
-
Thread
xmega128a1 EBI SDRAM
0xFF; PORTJ.DIR = 0xF0; /* Set direction and output value of Chip Select line (C0). */ PORTC.DIR = 0x01; PORTC.OUT = 0x00; // Initialize EBI. EBI_Enable( EBI_SDDATAW_4BIT_gc, EBI_LPCMODE_ALE1_gc, EBI_SRMODE_ALE12_gc, EBI_IFMODE
ich gefunden habe, schreiben die immer "zu Fuß" ins RAM. Ist für mich unlogisch, aber anscheinend geht das nicht besser. Grüße, Jens
-
Thread
PIC16F688 EEPROM speichert nicht nach ausschalten
schreiben des EEPROM starten GIE = 1; // Enable interrupts while(WR); // Warten bis WR auf 0 geht WREN = 0; // Schreibschutz setzen, besser is das RP1=0; RP0=0; //Bank 0 setzen //Ein Verify fehlt hier noch ;) }
Achso, jetzt versteh ich! Is ja logisch. Aber draufgekommen wär ich net... Also das Programm geht dann natürlich auch!! Super, vielen Dank, war schon ganz kurz vorm verzweifeln!!
-
Thread
PIC18F13K22 Configurations bit
[avrasm] #include <p18f13k22.inc> org 0x00 Start clrf TRISC clrf PORTC bsf PORTC, 3 ;vierte LED einschalten goto $ end [/avrasm] Funktioniert nicht, da dass LVP-bit auf enabled ist. Nun muss ich das irgendwie auf disabled kriegen (Config
p18f13k22.inc> __CONFIG _LVP_OFF_4L org 0x00 Start clrf TRISC clrf PORTC bsf PORTC, 3 ;vierte LED einschalten goto $ end [/avrasm]
-
Thread
if - verschachteln - aber wie?
x_temp_ist <= y_temp_soll) && (!(PINC & (1<<WB)))) { //Fahre ins Wärmebad PORTC &= ~(1<<CW); PORTC |= (1<<CCW); while(!(PINC & (1<<WB))){} //solange ins Wärmebad fahren bis Anschlagtaster erreicht ist } else if ((x_temp >= z_temp_soll) && (!(PINC & (1<<KB)))) { //Fahre ins Kälteebad PORTC &= ~(1<<CCW); PORTC |= (1<<CW); while(!(PINC & (1<<KB))){} //solange ins Kältebad fahren bis Anschlagtaster erreicht ist } else{ PORTC &= ~(1<<CW); PORTC &= ~(1<<CCW);
-
Thread
Debug-Problem in AVR-Studio 5
Schau Dir auch nochmal diesen Teil an: [c] if (ServoNr==9) { PORTC &= ~(servos_closed[ServoNr].port); ServoNr=0; } while (servos_closed[ServoNr].when-servos_closed[ServoNr-1].when<=3) [/c] Wenn die ServerNr == 0 ist, dann greifst Du mit ServerNr-1 wieder
geht auf Low. Und OCR1B wird mit dem nächsten Wert gesetzt. Und so schalten sie schön brav der Reihe nach aus. Die while-Schleife ist drinnen weil es ja sein könnte, daß z. Bsb. Servo 1 und Servo 2 sich
-
Thread
Billiges Cortex-M4-Board STM32F4DISCOVERY jetzt erhältlich
Kannst du bitte etwas genauer beschreiben wie das mit dem Afterbuild In Atollic geht? Gruß Knut
Linker(?)-Adressen, die in dem Tutorial angegeben werden. Hat das damit etwas zu tun, dass es nicht geht?
-
Thread
atmega32 i2c master transimitter/slave receiver problem
i2c/TWI frei ist. Ich dachte ich kann "jederzeit" sagen sende ein Startcondition und sobald es geht wird dies ausgeführt und ein Interrupt ausgelöst. Das geht nicht. Bin das PDF des atmega nun mehrfach durch. Habe ich etwas übersehen ? Der i2c Code ist so alleine nicht Lauffähig, daher bringt
i2c_Idle; uint8_t scl = (F_CPU/baud -16) / 2; TWBR = scl; setI2CAddr(myAddr); PORTC = _BV(PC0)|_BV(PC1); // Pullup an //last enable interrupt TWCR = _BVC(TWINT)|_BV(TWEA)|_BVC(TWSTA)|_BVC(TWSTO)|_BV(TWEN)|_BV(TWIE); //TWCR |= _BV(TWIE) | _BV(TWEN); } void
-
Thread
Taster mit mehreren Funktionen
{ DDRB=0xff; DDRC=0x00; PORTB=0x00; PORTC=0x00; unsigned int x; while(1){ if ( PINC &(1<<PC0)) { PORTB=0x00; } if ( PINC &(1<<PC0)) { PORTB=0xff; } if (
Mit "PORTC=0x00" aktiviest du doch pulldown. D. h. wenn der Taster nicht gedrückt ist, liegt eine Null am Eingang... Mit "if (PINC &(1<<PC0))" fragst du ab ob der Pin auf 1 (Versorgungsspannung) gezogen wurde
-
Thread
Grafikfähiger LCD Controller für 320x240 LCD mit D-RAM
geflackert. Da wirken die Backlight-LEDs wahrscheinlich wie ein Stroboskop auf die Kristalle des LCD. Dies geht durch Ändern des Prescallers von derzeit 256 auf 64. Weiteres muss ich nun erst noch testen. Gruß Steffen
probiert, immer weißes Bild. Wenn ich die Waits vergrößer, dauert es auch länger bis die Begrüßung weg geht. Der LCD Contr. bekommt schon Daten. Thomas
-
Thread
Code übersetzen
Abend Forum, ich wende mich mal an Euch da ich seit Tagen (Nächten) schon nicht weiter komme! Es geht um eine Codeübersetzung für die scheinbar mein Wissen nicht ausreicht. Dabei geht es um den Kalman Filter. Diesen habe ich als Basic-Quellcode im Netz gefunden: http://www.elektor.de/forum/foren-ubersicht
Kalman_filter_auswertung(gyro As Single , Adxl As Single , Dt As Single) As Single Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cls Config Adc = Single , Prescaler = 128 , Reference = Off Start Adc 'Init Call Init_gyro1dkalman