-
Thread
Wie am besten meine Taster Verriegeln ?
Flag1 = 0; int Flag2 = 0; int Flag3 = 0; int Flag4 = 0; int Flag5 = 0; #define Kanal1_HIGH PORTC |= (1<<PC0) #define Kanal2_HIGH PORTC |= (1<<PC1) #define Kanal3_HIGH PORTC |= (1<<PC2) #define Kanal4_HIGH PORTC |= (1<<PC3) #define Kanal5_HIGH PORTC |= (1<<PC5) #define Kanal1_LOW PORTC &= ~(1<<PC0) #define Kanal2_LOW PORTC &= ~(1<<PC1) #define Kanal3_LOW PORTC &= ~(1<<PC2) #define Kanal4_LOW PORTC &= ~(1<<PC3) #define Kanal5_LOW PORTC &= ~(1<<PC5) int main
-
Thread
Geisterbilder auf einer 8 x 8 Matrix
PORTB = VRAM[2]; PORTC |= (1<<PC5); _delay_ms(2); PORTC &= ~(1<<PC5); PORTB = 0x00; PORTB = VRAM[3]; PORTC |= (1<<PC4); _delay_ms(2); PORTC &= ~(1<<PC4); PORTB = 0x00;
case 1: PORTC |= (1<<PC6); break; case 2: PORTC |= (1<<PC5); break; case 3: PORTC |= (1<<PC4); break; case 4: PORTC |= (1<<PC3); break; case 5: PORTC |= (1<<PC2); break
-
Thread
AVR: Ist PORTx |= atomar?
Gerd schrieb im Beitrag #5862714: > PORTC |= xx, PORTC &= xx Wie soll das bitte funktionieren ohne den Port vorher zu lesen? Atomar wäre nur PORTC = xx.
Ich verstehe keinen Assemböer. Hier der Code, wenn jemand helfen möchte. Es geht um PORTC vom ATMega1284: An dem läuft Software-SPI (s.u.) und andere Bits werden in Interrupts geändert. Im C-Code für SPI verändern die Makros SOFTSPI_SCK_TOGGLE(), SOFTSPI_MOSI_HIGH(), SOFTSPI_MOSI_LOW
-
Thread
Probleme bei Funktionsaufruf mit Wertübergabe
Digit,int Wert) { switch(Digit) { case 1:PORTC = (1<<PC0);break; case 2:PORTC = (1<<PC2);break; case 3:PORTC = (1<<PC4);break; case 4:PORTD = (1<<PD7);break; default:PORTD = (1<<PD7);break; } switch(Wert) { case 0: PORTC = (1<<PC3);
es geht darum das dort masse amliegen muss damit die LED Leuchet.
-
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
Mein erstes Programm mit C
als ausgang konfigurieren PORTB = 0xff; // erstmal alles abstellen DDRC = 0xff; PORTC = 0xff; while (1) { PORTB =0b11111010; PORTC =0b00000011; _delay_ms(10); PORTB =0b11111101; PORTC =0b00000100; _delay_ms(10); } }
pins als ausgang konfigurieren PORTB = 0xff; // erstmal alles abstellen DDRC = 0xff; PORTC = 0xff; while (1) { PORTB =0b11111010; PORTC =0b00000011; _delay_ms(10); PORTB =0b11111101; PORTC =0b00000100; _delay_ms(10); } } das ist der Code für die
-
Thread
Interrupt programmierung mit HI-Tech
weil er nur in einem Fall benutzt wird :) und dieser Fall dritt dann ein wenn es ums Dimmen von LEDs geht.
//PORTB TRISB = 0b11000000; PORTB = 0b11110000; //PORTC TRISC = 0b11011111; PORTC = 0b11111111; ANSEL = 0b00111111; ANSELH = 0b00000000; //PWM CCP1CON = 0b00001101; T2CON = 0b01111110; //Interrupt
-
Thread
Fragen zu meinem Batterietester
); // orange led soll leuchten PORTC &= ~(1<<PC2); } else if (voltage <= 1.4) { PORTC |= (1<<PC3); _delay_ms(leddeelay); // rote led soll leuchten PORTC &= ~(1<<PC3); } } [/c]
); // orange led soll leuchten PORTC &= ~(1<<PC2); } else if (voltage <= 1.4) { PORTC |= (1<<PC3); _delay_ms(leddeelay); // rote led soll leuchten PORTC &= ~(1<<PC3); } } } [
-
Thread
Display fällt in unregelmäßigen Abständen aus
ISR(TIMER0_OVF_vect){ icount++; PORTC=0; PORTD=show[display[pos]]; PORTC|=(1<<pos); if(pos==0&&einspeisen==1) /*Punkt ob eingespeist wird oder nicht*/ PORTD&=~(1<<7); if(pos==1&&powered==1) /*Punkt ob WP gepowered oder
irgendwo Datenmüll erzeugen, der den Stack mit der Zeit wachsen lässt. Nicht sicher ob das überhaupt geht. Florian
-
Thread
Wie mache ich eine Textausgabe 8Bit auf Display?
wußte ich nichts. Ich habe mal mein Programm angehängt. Ist bestimmt verbesserungswürdig aber darum gehts ja jetzt net. Ich steh grad auf dem Schlauch, habe den Tip von Joe integriert, nun hänge ich grad an der Zeichenausgabe. Vorher habe ich immer sowas geschrieben: PORTC=0x57 // Entspricht dem
() { DDRA = 0xff; DDRC = 0xFF; PORTA = 0x10; // Beleuchtung ein PORTC = 0x00; PORTC = 0x38; // 8 Bit, 4 Zeilen E_toggle(); PORTC = 0x01; // Display löschen E_toggle(); PORTC = 0x0E; // Display an, Cursor an, Blinken
-
Thread
Counter Geschwindigkeit
ein/ausschalten: [c]... long i; while (1){ for(i=0;i<=6000000;i++){} if(PINC.0==1) PORTC.0=0; else PORTC.0=1; }; ...[/c] Der "geht mir aufn Sac*"-Teil: Diese Schleife sollte wie man sieht bis 6000000(6Millionen) zählen. Dazu(also für eine Periode) benötigt mein ATMEGA32 mit
for(i=0;i<=6000000;i++){} for(i=0;i<=6000000;i++){} if(PINC&0x01) PORTC=0x00; if(PINC.0==1) PORTC=0; else PORTC=0x01; else PORTC=255; } }; } }[/c] Der linke 4 mal schneller :D
-
Thread
Fehler Sprungtabelle
;'a' sbi PORTC,0 ;'b' cbi PORTC,1 ;'c' sbi PORTC,2 ;'d' cbi PORTC,3 ;'e' sbi PORTC,4 ;'f' cbi PORTC,5 ;'g' rjmp ENDE EINS: sbi PORTB,5 ;'a' cbi PORTC,0 ;'b' cbi PORTC,1 ;'c' sbi PORTC,2 ;'d' sbi PORTC,3 ;'e' sbi PORTC,4 ;'f' sbi PORTC,5 ;'g' rjmp ENDE ZWEI: cbi PORTB,5
-
Thread
Mikrocontroller kommt aus dem Takt ;D
0b00001111; DDRB = 0b00000110; DDRD = 0b00000010; CLEAR_BIT(PORTB,2); //Output Enable SET_BIT(PORTC,3); //SDI //Ebenen CLEAR_BIT(PORTC,2); CLEAR_BIT(PORTC,1); CLEAR_BIT(PORTC,0); /** Hauptschleife **/ for(;;) { for (int i= 0; i<1;i++) { SET_BIT(PORTC,3); //SDI
Atmel AVR ISPmk|| ist der Programmer... Ja ich frage mich so vieles. Mit dem internen Takt gehts nicht, mit nem Quarz gehts nicht, nur wenn ich einen externen Generator anschliesse geht es, dann aber auch nur wenn ich vorher den Programmer wieder rausziehe..
-
Thread
Siedle In-Home-Bus Protokoll
PC1: 100 Ohm // 10ms 2,2k // bits mit 100 Ohm DDRC |= _BV( PC0 ) | _BV( PC1 ); PORTC = 0; while (1) { long_delay( 5000 ); PORTC |= _BV( PC0 ); long_delay( 11 ); PORTC &= ~_BV( PC0 ); PORTC |= _BV( PC0 ); PORTC |= _BV( PC1 ); uint8_t bits
&= ~_BV( PC1 ); PORTC |= _BV( PC1 ); PORTC &= ~_BV( PC1 ); PORTC &= ~_BV( PC0 ); } [/c]
-
Thread
Rätselhaftes AVR.
PORTC <<= 1; } */ } int main() { cli(); PORTB = 0; DDRB = 0; PORTC = 0; DDRC = 0xFF; PORTD = 0; DDRD = 0xFF; TCCR0 = _BV(CS01); TIMSK = _BV(TOV0); sei();
volatile uint8_t buttons = 0; ISR(TIMER0_OVF_vect) { if (PINB & _BV(PINB4)) buttons |= PORTC; if (PORTC == 0x20) PORTC = 0x01; else PORTC <<= 1; } [/c] Die Weitermeldung/Synchronisation mit main fehlt hier natürlich.
-
Thread
einzelne Prozessorpins per #define Ansprechen (ATmega16) AVR
Zeit mit #define's rumprobiert, aber >irgendwie bekomme ich es nicht hin. [c] #define LED1_AN PORTC = PORTC |= (1<<PC4); #define LED1_AUS PORTC = PORTC &= ~(1<<PC4); // LED 1 aus LED1_AN LED1_AUS [/c] MG Falk
define AUS 0[/c] Ein zweites #define für den Prozessorpin (das ist mein Problem) [c]#define LED1 PORTC.PIN6[/c]oder so ähnlich. Es funktioniert nur nicht. Damit [c]LED1 = AN;[/c]funktioniert. Oder geht das gar nicht? Gruß Daniela
-
Thread
Verstehe TWI überhaupt nicht
hwstack = 32 $framesize = 32 $swstack = 32 $lib "I2C_TWI.LBX" Config Twi = 400000 Config Scl = Portc.0 Config Sda = Portc.1 Const Tlc1 = &B11000000 Const Ledout0 = &H14 Or 128 I2cinit I2cstart I2cwbyte Tlc1 I2cwbyte 0 I2cwbyte 0 I2cstop I2cstart I2cwbyte Tlc1 I2cwbyte Ledout0
@MWS: Also Portc.0 und Portc.1 kann ich in den verschiedensten Frequenzen blinken lassen. Und wenn ich das Programm von dir aufspiele und Config Scl = Portc.0 Config Sda = Portc.1 weglasse, dann kann ich die LED's
-
Thread
Prozessorauslastung bei SPI
Die COdes wurden wohl nicht korrekt übertragen. Nochmal: Das PORTC-Bit0 ist der Debug Pin. Für das erste Bild gilt: [c] while(len--) { // write data SPDR = *data++; PORTC = 1; while(!(SPSR & (1<<SPIF))); PORTC = 0; } [/c] Für das zweite Bild: [c] while(len--) { // write data PORTC = 1; SPDR = *data++; PORTC = 0; while(!(SPSR & (1<<SPIF))); } [/c]
-
Thread
8Bit Timer/Counter 0
Und das schreibst du jetzt??? Häng dem mal ein "t" an, dann geht's.
geht leider immer noch nicht mit dem t bei vect
-
Thread
Tastermatrix mit µC ansteuern (für MSM2 MP3 Modul)
} void Taster6 (int time) { PORTC = KS2; PORTB = KCS2; delay (time); PORTC = 0; PORTB = 0; } void Taster7 (int time) { PORTC = KS2; PORTB = KCS3; delay (time); PORTC = 0; PORTB = 0; } void Taster8 (int time) { PORTC = KS3; PORTB = KCS1; delay (time); PORTC = 0; PORTB = 0; } void Taster9 (int time) { PORTC = KS3; PORTB = KCS2; delay (time); PORTC = 0; PORTB = 0;
-
Thread
If Abfrage mit unterschiedlichen Zeiten
Hallo Habe es getestet. So wie es oben steht, geht es. Habe auch gesehen was du geänder hast.Damit könnte es ein Problem geben. Wenn ich ein LED Steuerung ausführe, geht es. Die zweite Steuerung komm viel später erst im Programm. Damit ist aber ein
Achim Seeger schrieb im Beitrag #2648423: > Es geht mit Schedulern und anderen Anwendungen. Leider sind manche Prg > grösser als mein Prg und recht kompliziert, mit dem ich arbeite. > Eine Uhr möchte ich damit nicht ansteuern. Es geht im Grunde um
-
Thread
Frage abfrage ob ausgang geschaltet
beim 128iger abfragen ob diese High oder Low sind. DDRC|=(1<<PC0)|(1<<PC1)|(1<<PC2)|(1<<PC3); PORTC&=~(1<<PC0)|(1<<PC1)|(1<<PC2)|(1<<PC3); Portc 0-3 ausgang Portc 0-3 low wie kann ich abfragen habe es mit if(PINC &(1<<PINC0))status=0;//LOW geht aber nicht es ist immer 0 auch wenn
hallo ich will den staus über i2c an den master senden. status[3]=PORTC & (1<<PORTC3); status[2]=PORTC & (1<<PORTC2); status[1]=PORTC & (1<<PORTC0); status[0]=PORTC & (1<<PORTC1); klappt aber auch nicht. status ändert sich nicht
-
Thread
Pull-Up aktivieren
PORTC |= (1<<PD0); PORTC |= (1<<PD1); PORTC |= (1<<PD2); PORTC |= (1<<PD3); PORTC |= (1<<PD4); Vielleicht so?
Flitzii schrieb im Beitrag #3024011: > PORTC |= (1<<PD0); > PORTC |= (1<<PD1); > PORTC |= (1<<PD2); > PORTC |= (1<<PD3); > PORTC |= (1<<PD4); > > > Vielleicht so? Ja, das ist auch gut. Das ist sogar noch besser, als wenn du die
-
Thread
Atmega8 mit rechts- links- Motoransteuerung
<< PB0 ); } uint8_t EndschalterOben() { PINC & ( 1 << PC2 ); } void MotorAuf() { PORTC &= ~( 1 << PC1 ); PORTC |= ( 1 << PC0 ); } void MotorZu() { PORTC &= ~( 1 << PC0 ); PORTC |= ( 1 << PC1 ); } void MotorStop() { PORTC &= ~( 1 << PC0 ); PORTC &= ~( 1 << PC1
PINB & ( 1 << PB1 ); } uint8_t ExtZu() { PINC & ( 1 << PC3 ); } void MotorAuf() { PORTC &= ~( 1 << PC1 ); PORTC |= ( 1 << PC0 ); } void MotorZu() { PORTC &= ~( 1 << PC0 ); PORTC |= ( 1 << PC1 ); } void MotorStop() { PORTC &= ~( 1 << PC0 ); PORTC &= ~( 1 << PC1
-
Thread
Bascom GrafikLCD Hilfe
+5V +5V '4 -9V Pin 5 Max 32 -C2 '5 /WR PORTC.0 '6 /RD PORTC.1 '7 /CE PORTC.2 '8 C/D PORTC.3 '9 RESET PORTC.4 '10-17 D0-D7 PORTD.0-7 '18 FS
Wie schon gesagt, JTAG deaktivieren, ansosnten geht der PortC nur zur Hälfte, oder an Port D oder A (eigentlich blödsinn, wegen ADC) anschliessen! Auszug aus dem Mega32-PDF: "If the JTAG interface is left unconnected, the JTAGEN fuse should if possible
-
Thread
ATmega32L tut nix, ISP geht
Hallo, hier meldet sich mal wieder ein Newbie mit Anfängerproblemen. Ich versuche einen ATmega32L dazu zu bringen, irgendetwas zu tun. Ich sag mal was funktioniert. (Ich nutze AVR Studio 4 unter Windows) a) ich kann via ISP seine Signature auslesen, wobei ich im AVR Studio in der device Liste nur den "ATmega32" und nicht den "ATmega32L" finden kann. Dennoch meckert AVR Studio nicht, die Signature scheint also zu passen. b) Ich kann die Fuses programmieren. Ich habe einen 8MHz Quarzt dran und ich sehe schön, dass der Quarz anschwingt, wenn ich die SUT_CKSEL entsprechend programmieren
-
Thread
Syntax Frage in C
dann ein Array anlegen. struct leds{ bool kathode1; bool kathode2; bool anode4; int portc; } struct leds x[5]; Und dann die jeweiligen x Einträge einmalig initialisieren. (das kann auch in einer extra Init Funktion geschehen. x[0].kathode1 = 0; ... x[0].portc = 0x00; ... x[5].kathode1 = 1; ... x[5].portc = 0x00; Anschließend einfach eine Funktion setLed(leds x) aufrufen, die das jeweilige Struct als Parameter aufnimmt. Aufgruf geht dann mit setLed(*x[4]); Siehe auch: http://en.wikipedia.org
-
Thread
Multiplex mit gemischten Ports
Beispiel: Pins 1, 4, 5 an Port C Bitmaske: unsigned char MaskC = (1 << 1) | (1 << 4) | (1 << 5); PORTC &= ~(MaskC); //Port C auf 0 PORTC |= Array[0][7] //Ausgabe des Port-C-Anteils für Ziffer 7 usw... mfg.
void digit(uint8_t wert, uint8_t pin) { PORTD = (PORTD & bitmaske) | numbers[wert]; PORTC |= (1 << pin); // entsprechendes Digit an } [/c]
-
Thread
AVR: Wie kann das sein? (Timer1)
); while(1) { // mach nix. } } ISR(TIMER1_OVF_vect) { if (toggle) { PORTC = _BV(0); toggle = false; } else { PORTC = _BV(2); toggle = true; } } [/c] Hat jemand 'ne Idee? Das wäre toll. Ich blick's nicht! VG Torsten
führen. c) Kannst du mal mit avrdude die Fuses auslesen? d) Kannst du mal in der ISR PORTC = _BV(0); ersetzen durch PORTC = PORTC & ~_BV(2) | _BV(0); und PORTC = _BV(2); ersetzen durch PORTC = PORTC & ~_BV(0) | _BV(2); Sollte keinen Effekt haben wiel ja
-
Thread
PID Regler Code für Relaisansteuerung
XMega z.B. die OUTSET und OUTCLR Register an jedem Port. Also z.B. [c] // Heizungsausgang ist hier PORTC Bit 0 #define HEIZUNG PIN0_bm // atomic PORTC.OUTSET = HEIZUNG; // schaltet Heizung auf high PORTC.OUTCLR = HEIZUNG; // schaltet Heizung auf low // es geht aber auch klassisch // read-modify-write
XMega z.B. die OUTSET und OUTCLR Register an jedem Port. > Also z.B.// Heizungsausgang ist hier PORTC Bit 0 > #define HEIZUNG PIN0_bm > // atomic > PORTC.OUTSET = HEIZUNG; // schaltet Heizung auf high > PORTC.OUTCLR = HEIZUNG; // schaltet Heizung auf low > // es geht aber auch klassisch > /
-
Thread
MEGA32 nach C-Source Änderung tot :-(
); void DreiZweiEins_func(void); void DreiZweiEins_func(void) { if (DreiZweiEins == 1000) PORTC &= ~ (1<<PC7); if (DreiZweiEins == 2000) PORTC &= ~ (1<<PC6); if (DreiZweiEins == 3000) { PORTC &= ~ (1<<PC5); CountLedRot = 0; } DreiZweiEins ++; } void LedGelbAnAus(void)
120000) { PORTC |= (1<<PC6); } if (CountLedRot == 180000) { PORTC |= (1<<PC7); } if (CountLedRot == 240000) { PORTC &= ~ ((1<<PC5) | (1<<PC6) | (1<<PC7)); CountLedRot = 0; }
-
Thread
Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom
deine BIN - danke): 'Fuer Lochrasterplatine - weniger Kreuzungen: Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.0 , E = Portc.3 , Rs = Portc.5 lg, arne
@ Arne RW ist auf GND und die Kontrastregelung geht. Gruss Peter
-
Thread
LCD 202A in Bascom - intialisiert nicht richtig
Hallo Lucas, das ganze ist hier zu finden: Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4 Schreibe richtig: Config Lcdpin Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs
"-Befehl kannte ich noch gar nicht. Bei allen anderen LCDs ging das bisher immer ohne. Aber jetzt geht es: [pre] $regfile = "m16def.dat" $crystal = 8000000 Waitms 500 'zeit zum Initialisieren Config Portc = Output Portc.5 = 0
-
Thread
DRV8811 Richtungswechsel
MOT_DIR PC3 #define MOT_STEP PC4 [/c] [c] int main(void) { DDRC = 0xff; PORTC= 0b00000000; //PORTC &= ~(1<<MOT_ENABLE); // Enable //PORTC &= ~(1<<MOT_SM0); // SM0 //PORTC &= ~(1<<MOT_SM1); // SM1 //PORTC &= ~(1<<MOT_DIR); while(1) { PORTC |
=0; j<=100; j++) { long_delay(1); PORTC |= (1<<MOT_STEP); long_delay(150); PORTC &= ~(1<<MOT_STEP); } } [/c]
-
Thread
Touch Taster
'C4 low? Ddrc.5 = 0 'C5 hochohmig Portc.5 = 0 'ohne Pullup Ddrc.4 = 1 Next Da 'C4 low 'Loop Portc.4 = 0 Portc.5 = 0 Ddrc.4 =
'C4 low? Ddrc.1 = 0 'C5 hochohmig Portc.1 = 0 'ohne Pullup Ddrc.0 = 1 Next Db 'C4 low 'Loop Portc.0 = 0 Portc.1 = 0 Ddrc.0 =
-
Thread
ATMega16 und PORTC / JTAG Fuse
theoretisch die Ports A und C jeweils abwechselnd 0 und 1 zeigen. Beide Ports sind auf 0x00, bei PortC sind die JTAG Pins auf 1. Wenn ich nun bei den Fuses das JTAGEN "Häkchen" setze, geht zumindest der PortA wie gewünscht, PortC zeigt das gleiche verhalten. Was habe ich falsch gemacht? (STK500
geht auch so. Ciao, Klaus
-
Thread
Spannung am ATmega32-Output unterschieldich
+8*step){ PORTC|=1<<6; } if(0){ PORTC|=1<<7; } else{ PORTD=0; PORTC=0; } } } zurück zur Frage: wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung
eclipse schrieb im Beitrag #4274584: > wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung von portc7 > auf von 5V auf 0.2V runter... wie kommt das zustande? Hast du doch genau so beschrieben: eclipse schrieb im Beitrag #4274584: > if(0){ > PORTC|=1<<7; >
-
Thread
Lauflicht schalten
licht gesteckt. Programmcode siehe hier: $regfile = "m8def.dat" $crystal = 1000000 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Do Portc.0 = 1 Portc.0 = 0 Waitms 100 Portc.1 = 1 Portc.1 = 0 Waitms 100 Portc.2 = 1 Portc.2 = 0 Waitms
$regfile = "m8def.dat" $crystal = 1000000 Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Do Portc.0 = 1 Waitms 500 Portc.1 = 1 Waitms 500 Portc.2 = 1 Waitms 1000 Portc.0 = 0 Portc.1 = 0 Portc.2
-
Thread
Variablen vergleichen
() >100 || z==1) // Greifer schließen { while(i<52) { writeString_P("Greifer schließen\n"); PORTC |=(1<<0); mSleep(1); PORTC &=~ (1<<0); mSleep(19); i++;} } if(i>50) // Schwenkarm nach oben { while(a<52) { writeString_P("Schwenkarm nach oben\n"); PORTC |=(1<<1); mSleep(2); PORTC
getStopwatch1()>200 || z==1) // Greifer schließen { while(i<52) { writeString_P("Greifer schließen\n"); PORTC |=(1<<0); mSleep(1); PORTC &=~ (1<<0); mSleep(19); i++;} } if(i>50) // Schwenkarm nach oben { while(a<52) { writeString_P("Schwenkarm nach oben\n"); PORTC |=(1<<1); mSleep(2); PORTC
-
Thread
uC - startet nicht
habe ein Sample von roboternetz.de [c] $regfile = "m8def.dat" $crystal = 800000 Config PORTC.0 = Output Do PORTC.0 = 1 Waitms 100 PORTC.0 = 0 Waitms 100 Loop End[/c] beim attiny24 habe ich "PORTC" auf "PORTB" abgeändert, da dieser ja kein portc hat... Danke!
-
Thread
XMega Port Register Verwirrung
DIR. Diese Anweisungen machen also das gleiche (nur dass die erste jeweils schneller ist): [c]PORTC.OUTSET = PIN3_bm; PORTC.OUT |= PIN3_bm;[/c] Ebenso: [c]PORTC.OUTCLR = PIN3_bm; PORTC.OUT &= ~PIN3_bm;[/c] Und: [c]PORTC.OUTTGL = PIN3_bm; PORTC.OUT ^= PIN3_bm;[/c] Außerdem ist es egal
> PORTC.OUTCLR |= (1<<PIN3_bp); ist die verkürzte Form von : PORTC.OUTCLR = PORTC.OUTCLR | (1<<PIN3_bp); Kann das Register PORTC.OUTCLR denn gelesen werden und wenn ja werden dann immer alle bits als
-
Thread
SREG untersuchung in C
] #include <avr/io.h> int main (void) { DDRC = ( 1 << PC5 ); // PC5 an PORTC als Ausgang setzen PORTC ^= ( 1 << PC5 ); // LED erstmal ausschalten uint8_t Ergebnis = 0x00 + 0x00; // Rechnen if (SREG & 0x02) // wenn Zero-Flag gesetzt dann ... { PORTC &= ~(1 << PC5); // LED an } while(1) { } return 0; } [/c] nur leider geht der LED kein Licht auf, und mir auch nicht
-
Thread
Newbi braucht hilfe Pic 16f876
STATUS, RP0 ; Bank 0 movlw B'11111111' movwf PORTB movwf PORTC ; LED aus
W movwf p_copy clrf PCLATH ; Bank 0 ; Intrupt servic routine Int_serv bsf PORTC, 2 ; Ziffer1 aus bsf PORTC, 1 ; Ziffer2 aus bsf PORTC, 0 ; Ziffer3 aus decf Digit,f ; Ziffernzähler verringern ;Digit=2: anzeigen Ziffer 3 1er ;Digit=1: anzeigen Ziffer 2
-
Thread
ISP-Mode Fehler bei Programmierung ATMEGA16 mit STK500
ausreichend beschäftigen allerdings das Ergebnis gefällt mir immer noch nicht. Die Pins lassen sich an PortC über PortB schalten. Allerdings liegt die Spannung bei etwa 3V im neutralen Zustand an PortC. Lege ich den entspprechenden einen Pin bei B auf Masse fällt C auf 0V ab. Gebe ich Strom auf B, geht C
DDRC, r16 ; >5 out PORTB, r16 >6 ldi akku, 0b00000000 >7 out PORTB, akku >8 out PORTC, akku >Die Pins lassen sich an PortC über PortB schalten. Klar, Du liest ja PINB in 'sollwert' ein und gibst 'sollwert' gleich danach auf PORTC (durch Zeile 3 und 4 als Ausgang konfiguriert)
-
Thread
PWM an atmega8
hätte ich auch direkt posten können) [c] int main(void) { /* Current port assignment: PORTC0 = Poti.1 PORTC1 = green led PORTC2 = yellow led PORTC3 = red led PORTC4 = taster 2 PORTC5 = taster 1 */ lcd_init(); // lcd test lcd_string
check if window is open if(WINDOW_SENSOR_PORT_ARRAY & (1<<WINDOW_SENSOR_PORT)) { PORTC &= 0b00110001; // turn off all leds PORTC |= (1 << PORTC3); // turn on red led continue; // skip next steps }
-
Thread
Hilfe bei programmieren mit Basic [für Matrixanzeige]
Der Link oben geht scheinbar nicht. http://www.rn-wissen.de/index.php/ATMega8
Du kannst die "Pull-Downs" nicht durch Software ersetzen - das geht einfach nicht.
-
Thread
XMEGA einzelnen Pin eines Ports ansprechen
PORTC.OUT = 0xFF; --> hat keinen Sinn bei eingängen
und wie geht das in Assembler? out porta,temp geht nicht da meckert das AVR Studio
-
Thread
BASCOM-Code eleganter/kürzer formulieren
alle Ports/Pins für LEDs Config Portb = Output Config Portd = Output '1. LED (CC) Config Portc.2 = Output 1r Alias Portc.2 Config Portc.4 = Output 1g Alias Portc.4 Config Portc.5 = Output 1b Alias Portc.5 '2. LED (CC) 2r Alias Portb.5 Config Portc.1 = Output 2g Alias Portc.1
Doch das geht prinzipiell so: Variable = PortC zum setzen auf 1: Variable = Variable OR Bitmaske, zu setzende Bits=1, unveränderliche=0 zum setzen auf 0: Variable = Variable UND Bitmaske, zu löschende
-
Thread
Taster Stromstoßschalter
PORTC = 1; ==> PORTC = 0xFF;
das geht btw inkl entprellung mit 2 invertern...
-
Thread
Einfachere Schreibweise gesucht
ist soll Ausgang PC3 high werden. Und jeweils umgekehrt. Unten stehender Code funktioniert. Aber geht es nicht auch einfacher? Wie PC2 != PD6 [c] while(1) { if (PIND & (1<<PIND6)) { PORTC &= ~(1<<PC2); //Setzt PC2 1 } else { PORTC = PORTC | (1<<PC2
Yalu X. schrieb im Beitrag #2160446: > Noch richtiger ist > > [c] > PORTC = PORTC & 0xF3 | (PIND & 0xC0)>>4; > [/c] > Die Aufgabenstellung war, daß der Port auf High geht, wenn der Ausgang auf Low geht, die Lösung ist binär gesehen also FALSE :-)