-
Thread
Problem mit Display
sbi(PORTC,1); cbi(PORTC,1); waitMs(1); PORTC = 0b110000; //0b00110000; sbi(PORTC,1); cbi(PORTC,1); waitMs(5); // 4-BitModus einschalten PORTC=0b100000; // Schreibsignal sbi(PORTC
dies wollte ich wechseln in 4-BitModus an PortC Bit 2-5 PortC Bit 0 = RS PortC Bit 1 = E sorry steht dort oben falsch
-
Thread
RFM12 - Reale Sendefrequenz
command(uint16_t outdata) { uint16_t indata = 0; PORTC.OUTCLR = (1<<RFM12_CLK); PORTC.OUTCLR = (1<<RFM12_SELECT); PORTC.PIN6CTRL = PORT_OPC_TOTEM_gc; //now the RFM12 drives the pin //shift out and get data uint8_t i; /* The RFM12 samples
for (i = 0; i < 16; i++) { indata <<= 1; //write data if (outdata & 0x8000) { PORTC.OUTSET = (1<<RFM12_MOSI); } else { PORTC.OUTCLR = (1<<RFM12_MOSI); } _delay_us(2.0); //rise clock PORTC.OUTSET = (1<<RFM12_CLK); //read data if (PORTC.IN &
-
Thread
Byte Wert suchen und Folgebyte speichern
// Set DDRC as output PORTC = 0x00; // Set PORTC is low sei(); // Enable Global Interrupt while (1) { TransmitState = spi_check_data();
) // Green LED on PORTC = 0x04; TCNT2 = 0; } }[/c]
-
Thread
Hallo Welt macht nicht was es soll
3686400UL #endif #include <util/delay.h> int main(void) { DDRC|= (1 << 5); while (1) { PORTC&= ~(1 << 5); _delay_ms(500); PORTC|= (1 << 5); _delay_ms(500); } }
{ _delay_ms(500); PORTC = PINC ^ (1 << 5); } } [/c]
-
Thread
<< -Verständnisproblem
Bit) auf das Port Register zu ver-oder-n um damit genau dieses eine Bit zu setzen. Ob du PORTC |= 64; PORTC |= 0b01000000; PORTC |= ( 1 << 6 ); schreibst, ist gehupft wie gesprungen. Es passiert immer das gleiche: Das Bit 6 am PORTC wird auf 1 gesetzt. Nur in der letzten Schreibweise
kannst eine 0 noch so oft hin- und herschieben, es wird nur eine 0 bleiben. Was passiert also? [c]PORTC = PORTC & 0;[/c] PORTC wird auf 0 gesetzt, aber vorher noch einmal eingelesen... > Oder muß ich schreiben > PORTC &= ~(1<<Ausgang_3)? Genau so.
-
Thread
Servoansteuerung mit Timer (ATmega32)
int main(void) { DDRC |= 1 << PINC0; //Status LED 1 aktivieren PORTC &= ~(1<<PINC0); DDRC |= 1 << PINC1; //Status LED 2 aktivieren PORTC |= 1<< PINC1; //Timer 1 - 20ms TCCR1B |= 1<<CS11 | 1<<WGM12; //Prescaler: -> 50Hz OCR1A = 40000
20 ms Wartezeit etwas anderes gemacht werden { PORTB |= 1<<PINB0; //PWM HIGH Signal PORTC ^= 1<<PINC0; } ISR(TIMER1_COMPB_vect) //ISR für Timer B { PORTB &= ~(1<<PINB0); //PWM LOW Signal PORTC ^= 1<<PINC1; } [/c] Das Servo tickert nur, bewegt sich aber nicht mfg
-
Thread
STK500 LED-Ansteuerung negiert
PORTC |= (1 << PC1); #define LED2_on PORTC &= ~(1 << PC2); #define LED2_off PORTC |= (1 << PC2); #define LED3_on PORTC &= ~(1 << PC3); #define LED3_off PORTC |= (1 << PC3); #define LED4_on
PORTC |= (1 << PC6); #define LED7_on PORTC &= ~(1 << PC7); #define LED7_off PORTC |= (1 << PC7);
-
Thread
Tastenentprellung mit Bascom
Minute_zehner = 1 End If '******** Hauptprogramm ******** Do Porta = &B00000100 Portc = Zahl(sekunde_einer) Waitus 500 Porta = &B00001000 Portc = Zahl(sekunde_zehner) Waitus 500 Porta = &B00000010 Portc = Zahl(minute_zehner) Waitus
>Timer1_interrupt: >Timer1 = Timer1vorgabe > Do > Porta = &B00000100 > Portc = Zahl(sekunde_einer) > Waitus 500 > Porta = &B00001000 > Portc = Zahl(sekunde_zehner) > Waitus 500 > Porta = &B00000010 > Portc = Zahl(minute_zehner) > Waitus
-
Thread
Fehler LCD-Display im 8Bit-Modus
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcd = 20 * 2 Cursor Off
Homer schrieb im Beitrag #5269599: > Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = > Portc.1 , > Db7 = Portc.0 ... HJH-MD schrieb im Beitrag #5269283: > im 8-Bit-Modus
-
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
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
Syntax Frage in C
vs. Makros sind ja allgemein bekannt. Dafür definiert man oben etwas wie: #define macro_led0() PORTC = 0x00; anode4 =1 und unten im Code sagt man dann macro_led0(); Hoffe die Diskussion ist hilfreich.
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; ...
-
Thread
PID Regler Code für Relaisansteuerung
PORTC.OUT |= HEIZUNG; // Heizung high PORTC.OUT &= ~(HEIZUNG); // Heizung low [/c]
/ read-modify-write > PORTC.OUT |= HEIZUNG; // Heizung high > PORTC.OUT &= ~(HEIZUNG); // Heizung low Super! Danke schön!
-
Thread
portc.4 nur 1.5V
Hallo, warum bekomme ich bei meinen beiden ATmega32 nur 1.5V Ausgangsspannung? Alle anderen portc pins funktionieren einwandfrei.
ach ja und ich programmiere in basic also a la portc.4 = 1 :)
-
Thread
LED als Sensor an Port Pin
ISR(TIMER0_COMPA_vect) { DDRC |= (1<<(PC0)); DDRC |= (1<<(PC1)); // beide Ausgänge PORTC |= (1<<(PC1)); // Phase EMIT PORTC &= ~(1<<(PC0)); asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); PORTC |= (1<<(PC0)); // Phase Reverse Bias PORTC &= ~(1<<(PC1
TIMER0_COMPA_vect) { > DDRC |= (1<<(PC0)); > DDRC |= (1<<(PC1)); // beide Ausgänge > > PORTC |= (1<<(PC1)); // Phase EMIT > PORTC &= ~(1<<(PC0)); > > asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop"); > > PORTC |= (1<<(PC0)); // Phase Reverse Bias > PORTC
-
Thread
Hilfe beim Uhr programmieren
1000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Config Portb.0 = Output Config Portb.5 = Output Config Portb
ein neues an [pre] $regfile = "m8def.dat" $crystal = 1000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Config Adc = Single , Prescaler = Auto Dim Messung As Word
-
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
Atmega32 ADC0 bis ADC7 nur High oder Low erkennen
1<<PORTB3); // Set PORTB3 ON } else if(!(PINC & (1<<PORTC4))) { // PORTC4 ACTIVE - DOWN PORTB |= (1<<PORTB0); // Set PORTB0 ON PORTB &= ~(1<<PORTB1); // Set PORTB1 OFF PORTB |= (1<<PORTB2); // Set PORTB2 ON PORTB |= (1<<PORTB3); // Set PORTB3 ON } else if(!(PINC & (1<<PORTC5))) { // PORTC5 ACTIVE - LEFT PORTB &= ~(1<<PORTB0); // Set PORTB0 OFF PORTB |= (1<<PORTB1); // Set PORTB1 ON PORTB |= (1<<PORTB2); // Set PORTB2 ON PORTB |= (
-
Thread
LCD Dotmatrix kaputt
while(1){ } return 0; } void enable(){ //ennableimpuls PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ _delay_ms(1); PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */ //Portumstellung für Datenempfang DDRB = 0x00; // Daten Ports initialisieren
(); while(1){ } return 0; } void enable(){ //ennableimpuls PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ _delay_ms(1); PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */ //Portumstellung für Datenempfang DDRB = 0x00; // Daten Ports initialisieren
-
Thread
Bit setzen in C Gesperrt
einfach mal ohne dem Shift. Denn der Compiler macht nur dass was du ihm sagst. Versuchs so: PortC |= 0x10; //Bit 5 setzen Und das Löschen von Bit5 geht so: PortC &= 0xEF; //Bit 5 löschen Wenn du dir dass im Kopf Ausrechnen erspahren willst, dann verwende doch einfach den Windowstaschenrechner
MOV und ORL. Dadurch ist das Programm zu > langsam. > > Danke schonmal im Voraus. > > Also, PortC gibts beim 8051 nicht, es gibt P0, P1, P2, P3. Ja, PortC sollte nen dicken Fehler bringen. Man muß schon die richtigen Ports benutzen: [c] P3 |= 1<<5; [/c] macht auch nirgends ein MOV, sondern
-
Thread
14 Segment Text anzeigen!
und dann wieder low wird der code irgendwann endlos lang gibt es eine bessere möglichkeit als: Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.0 = 0 Portc.1 = 0 Portc.2 = 0 .... .... .... ich arbeite mit mega8 und Bascom!!
> wieder low wird der code irgendwann endlos lang gibt es eine bessere > möglichkeit als: > > Portc.0 = 1 > Portc.1 = 1 > Portc.2 = 1 > Portc.0 = 0 > Portc.1 = 0 > Portc.2 = 0 > .... > .... > .... > > > ich arbeite mit mega8 und Bascom!! lern mal die zeichensetzung
-
Thread
Atmega32 PortC
Hi, ich hätte da ein kleines Problem... Ich habe auf PortC des Atmega32 zum Test ein paar LEDs angeschlossen (mit widerstand gegen Vcc). Das Program legt lediglich richtungsregister fest und setzt den Port auf Gnd. Leider leutchen nun aber nur die LEDs von
Hi Deine Fuse-Bits sind noch nicht richtig gesetzt. Disable dein JTAG Interface und PORTC steht dir zur Verfügung :-). Vielleicht ist sogar noch der interne Takt aktiviert...dann ist dein Chip noch mit 1MHz am tickern..das kannst Du ja dann gleich mit umstellen....nur so als Tip. MfG
-
Thread
PIC..PORTC reagiert nicht..
Frohe Weihnacht, die letze Zeile (movwf PORTC) zeigt keine Wirkung, alle Pins bleiben auf LOW. Hat jemand eine Idee..? Gruß Ulli list p=16f676 #include <p16f676.inc> bsf STATUS,RP0 ;Bank1 movlw B'00111000' ;RC<0:2>Out, RC<3:5>In movwf TRISC bcf STATUS,RP0 ;Bank0 movlw B'00000111' movwf PORTC
-
Thread
8Bit Datenleitung auf 2 Ports splitten, für LCD, bidirektional
Ungetestet: [c]// schreiben: PORTA = (PORTA & ~(3 << 6)) | (bitsVar << 6); PORTC = (PORTC & 3) | (bitsVar & ~3); // lesen: return (PORTA >> 6) | (PORTC & ~3);[/c]
Beitrag #2880370: > Ungetestet:// schreiben: > PORTA = (PORTA & ~(3 << 6)) | (bitsVar << 6); > PORTC = (PORTC & 3) | (bitsVar & ~3); > > // lesen: > return (PORTA >> 6) | (PORTC & ~3); Sieht das ganze nur verkürzt aus...??? Stimmts? Michael schrieb im Beitrag #2880385: > Viele LCD-Controller
-
Thread
7 Segmentanzeige falsch eingekauft, reagiert nur auf low.
nicht, ich sehe auf beiden nichts vernünfiges. Hier das Programm: ldi r22, 0b00000001 out PORTC, r22 ldi r21, 0b00000001 out PORTB,r21 ldi r22, 0b00000000 out PORTC, r22 ldi r21, 0b00000100 out PORTB,r21 rjmp loop
sbi DDRB,0 sbi DDRB,1 sbi DDRB,2 sbi DDRB,3 sbi DDRC, 0 loop: ldi r22, 0b00000001 out PORTC, r22 ldi r21, 0b00000001 out PORTB,r21 ldi r22, 0b00000000 out PORTC, r22 ldi r21, 0b00000100 out PORTB,r21 rjmp loop
-
Thread
einzelne Prozessorpins per #define Ansprechen (ATmega16) AVR
ATMega16 mit WinAVR. Am Port C habe ich 4 Status LED's angeschlossen. Diese kann ich mit z.B. [c]PORTC = PORTC |= (1<<PC4); // LED 1 an PORTC = PORTC &= ~(1<<PC4); // LED 1 aus[/c]ein- bzw. ausschalten. Ich würde aber gerne [c]LED1 = AN; LED1 = AUS;[/c] schreiben. Ich habe da schon eine ganze
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
-
Thread
taster kurzzeitig Abschalten
Then Gosub Ruckstell1 If Runden2 = 100 Then Gosub Ruckstell2 Goto Tastenabfrage Anzeige: Portc.0 = 0 Portd = Z(z1z) Gosub Warteschleife Portc.0 = 1 nop nop Portc.1 = 0 Portd = E(e1z) Gosub Warteschleife Portc.1 = 1 nop nop Portc.2 = 0 Portd = Z(z2z) Gosub Warteschleife Portc.2
If Runden1 = 0 Then Gosub Finish1 If Runden2 = 0 Then Gosub Finish2 Goto Taste2 Finish1: Portc.0 = 0 Portc.1 = 0 Portd = Z(z1z) Portd = E(e1z) Waitms 100 Portc.0 = 1 Portc.1 = 1 Waitms 100 Goto Finish1 Finish2: Portc.2 = 0 Portc.3 = 0 Portd = Z(z2z) Portd = E(e2z) Waitms 100
-
Thread
Garagentorsteuerung - Hörmannfunk nachrüsten
PINB4)) impuls=3; switch(impuls) { case 1://impuls=oeffnen PORTC |= (1<<PC4); PORTC &= ~(1<<PC5); break; case 3://impuls=schließen PORTC &= ~(1<<PC4); PORTC |= (1<<PC5); break; default: PINC=0x0;
-------------------------------------------- int main(void) { DDRC=0xff; //alle pins von portc als output while(1) { PORTC=0xff; wait(10000); PORTC=0x00; wait(10000); } } [/c]
-
Thread
Spielkonsole mit LED-Matrix und 2 Atmega644
|= (1<<PC2); break; case 4: PORTC &= ~(1<<PC3); _delay_ms(ms); PORTC |= (1<<PC3); break; case 5: PORTC &= ~(1<<PC7); _delay_ms(ms); PORTC |= (1<<PC7); break; case 6: PORTC &= ~(1<<PC6); _delay_ms(ms); PORTC |= (1<<PC6
<PC2); break; case 13: PORTC &= ~(1<<PC3); _delay_ms(ms); PORTC |= (1<<PC3); break; case 14: PORTC &= ~(1<<PC4); _delay_ms(ms); PORTC |= (1<<PC4); break; case 15: PORTC &= ~(1<<PC5); _delay_ms(ms); PORTC |= (1<
-
Thread
Atmega 8 + dallas 18s20 + Neuling (never ending story)
Du solltest dir nochmals die Bitoperationen in deinem C Buch zu Gemüte führen: [c] PORTC&=(1<<PC5); //internen Pullup aus bzw. Pin auf Masse ziehen wenn DDRD.5=1 [/c] Das hier zum Beispiel setzt nicht etwa das bit PC5 auf 0, sondern setzt alle anderen Bits in PORTC auf 0, und bei PC5
nicht etwa das bit PC5 auf 0, sondern setzt > alle anderen Bits in PORTC auf 0, und bei PC5 kommt es darauf an ob es > vorher in PORTC gesetzt war. Wenn es gesetzt war bleibt es danach noch > immer auf 1, ansonsten bleibt es auf 0. Das ist auf jeden Fall nicht > das,
-
Thread
Unerwünshcter Reset im Programm Mega 16
, aus out PORTC, an ;alles grün out PORTD, an nop call warten2 out PORTC, aus ;alles aus out PORTD, aus out PORTA, an ;alles orange out PORTB, an out PORTC, an out PORTD, an nop call warten2 out PORTA, aus ;alles aus out PORTB, aus out PORTC, aus out PORTD, aus ldi zaehlen, 0b00000000 main12
-
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
Spannung am ATmega32-Output unterschieldich
<512+5*step){ PORTC|=1<<3; } if(ADC>=512+5*step && ADC<512+6*step){ PORTC|=1<<4; } if(ADC>=512+6*step && ADC<512+7*step){ PORTC|=1<<5; } if(ADC>=512+7*step && ADC<512+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
-
Thread
AVR: unsigned 24 bit auf 3 Ports verteilen
// ok, OUT PORTA,Rn PORTB = ((wert >> 8) & 0xff); // 4 Register werden sinnlos umkopiert PORTC = ((wert >> 16) & 0xff); // ok, OUT PORTC, Rn+2 } machmal(0x00112233UL); Der gcc läuft mit -o3 Wie gehts besser ? Union etc. geht nicht, weil ich alles in Registern behalten will. Gruß
sinnlos umkopiert d4: 82 e2 ldi r24, 0x22 ; 34 d6: 85 b9 out 0x05, r24 ; 5 PORTC = ((wert >> 16) & 0xff); // ok, OUT PORTC, Rn+2 d8: 81 e1 ldi r24, 0x11 ; 17 da: 88 b9 out 0x08, r24 ; 8 } [/c]
-
Thread
3 Triacs gleichzeitig ansteuern mit dem Mega168
=1) { if(TCNT1==900) //TCNT1=1200 entspticht 10ms { PORTC &= ~(1<<PC3); _delay_us(100); PORTC |= (1<<PC3); if(a>b & a>c) phase=0; } if(TCNT1==910) { PORTC &= ~(1<<PC4); _delay_us(100); PORTC |= (1<<
PORTC |= (1<<PC4); if(b>a & b>c) phase=0; } if(TCNT1==c) { PORTC &= ~(1<<PC5); _delay_us(50); PORTC |= (1<<PC5); if(c>a & c>b) phase=0;
-
Thread
atmega 1284P Jtag (aus) PINC2 ohne Funktion
led_gelb_aus PORTD &= ~(1<<PD1) #define led_gruen_aus PORTD &= ~(1<<PD5) #define test1_aus PORTC &= ~(1<<PC2) #define test2_aus PORTC &= ~(1<<PC3) #define test3_aus PORTC &= ~(1<<PC4) #define test4_aus PORTC &= ~(1<<PC5) #define test1_an PORTC |= (1<<PC2) #define test2_an PORTC
)|(1<<PC4)|(1<<PC5)); //Schrittmotor ausgänge DDRC=60;// 15 60 //PORTC=0x0f; //PORTC=60; n=0; } void rechtslauf_Vschritte(uint16_t ns) { uint16_t z; for ( z=0;z<ns;z++) { n++; PORTC=vs[n&3]; _delay_ms(10); } } void linkslauf_Vschritte
-
Thread
Problem LED-Matrix
PORTC = 0; PORTD = 1; //Spalte 1 an _delay_loop_1(40); PORTC = 0; PORTD = 0; _delay_loop_1(4); PORTC = 0; PORTD = 2; //Spalte 2 an
PORTC = 0b00000001; PORTD = 8; //Spalte 4 an _delay_loop_1(40); PORTC = 0; PORTD = 0; _delay_loop_1(4); PORTC = 0; PORTD = 16; //Spalte 5
-
Thread
Display geht immernoch nicht.
So habe nun Kabel an das Display gelötet werde nun lcd.h von PortB auf PortC ändern und das Programm kompilieren übertragen und testen. Ich gebe dann bescheid!
das Poti auf Linksanschlag ist. Wie soll ich nun vorgehen? in der lcd.h hab ich von PORTB auf PORTC umgestellt.
-
Thread
Assemblerprogr. LCD ansteuerung will nicht funktionieren
r18 andi r18, 0b11110000 out portd, r18 nop sbi portc, pine nop nop nop nop cbi portc, pine cbi portc, pinrs nop rcall ms2 ret ;----------Befehle Senden befehl: cbi portc, pinrs
nop nop nop cbi portc, pine rcall ms2 ret ;----------Befehl für ini mit zeit befehlini: cbi portc, pinrs out portd, r17 nop sbi portc, pine nop nop nop
-
Thread
Atmega324A Probleme bei FET Steuerung
Ja aber bis jetzt halt nur ein simples Ein- und Ausschalten des Cubes. Programmiere PortC als Ausgang mit DDRC = 0xFF. Das klappt wie gesagt nur bei PC0 und PC1 nicht. Im Datenblatt habe ich auch keine speziellen Funktionen für diese Pins finden können. JTAG läuft über andere Pins an PortC
> PortC JTAGEN? HTH
-
Thread
PIC 16F722 mit PICit 2
TRISB ; movlw b'00000000' MOVWF TRISB ; ;----------------------------------- BANKSEL PORTC ; CLRF PORTC ;Init PORTC BANKSEL TRISC ; movlw b'00000000' MOVWF TRISC ;and set RC<7:4,1:0> ;as outputs ;alle Ausgänge auf High movlw b'11111111' movwf PORTA
00000000' ;PortB komplett als Ausgang MOVWF TRISB ; ;----------------------------------- BANKSEL PORTC ; CLRF PORTC ;Init PORTC BANKSEL TRISC ; movlw b'00000000' ;PortC komplett als Ausgang MOVWF TRISC ; ; ;----------------------------------- BANKSEL
-
Thread
Taster & LED am selben Port schon wieder.
Noch immer wer macht die LED aus. while(1){ if ( !(PINC & (1<<PINC7)) ) { PORTC |= (1<<PC0); } else { PORTC &= ~(1<<PC0); } }
nicht reagieren... > Unter C Helmi wrote: > while(1){ > if ( !(PINC & (1<<PINC7)) ) { > PORTC |= (1<<PC0); > } else > { > PORTC &= ~(1<<PC0); > } > } So... nun ersetze mal diese Schleife mit allem darin durch PORTC |= (1<<PC0); Wenn die LED dann nicht leuchtet, liegt
-
Thread
LCD Modul Problem
DDR_PORTB_PIN4 << 4) | (DDR_PORTB_PIN5 << 5) | (DDR_PORTB_PIN6 << 6) | (DDR_PORTB_PIN7 << 7) #define DDR_PORTC_PIN0 OUTPUT /* Extension 1: datapin 8 - Enable for display */ #define DDR_PORTC_MASK (DDR_PORTC_PIN0) | (DDR_PORTC_PIN1 << 1) | (DDR_PORTC_PIN2 << 2) | (DDR_PORTC_PIN3 << 3) | (DDR_PORTC_PIN4 << 4) | (DDR_PORTC_PIN5 << 5) | (DDR_PORTC_PIN6 << 6) | (DDR_PORTC_PIN7 << 7) #define DDR_PORTD_PIN4 OUTPUT /* Extension 1: datapin 4 - R/W for display */ #define
-
Thread
Toggelgeschwindigkeit für Ports
= portc_l; PORTC = portc_h; PORTC = portc_l; PORTC = portc_h; PORTC = portc_l; PORTC = portc_h; PORTC = portc_l; PORTC = portc_h; } [/c] mit gut 2 CPU-Takten pro Pin-Takt.
schnellste Lösung: [c] #include <avr/io.h> void send_spi_clk(void) { uint8_t v, nv; v = PORTC | (1 << 3); nv = v & ~(1 << 3); PORTC = v; PORTC = nv; PORTC = v; PORTC = nv; PORTC = v; PORTC = nv; PORTC = v; PORTC = nv; PORTC = v; PORTC = nv; PORTC = v; PORTC = nv; PORTC
-
Thread
LED-Treiber Ansteuern Software
/*PORTC.4 auf low UV-LEDs->aus*/ //PORTC.OUT &= ~ PIN3_bm; /*PORTC.3 auf high WW-LEDs->aus*/ //PORTC.OUT &= ~ PIN2_bm; /*PORTC.2 auf high KW-LEDs->aus*/ PORTC.OUT |= PIN3_bm; /*PORTC.3 auf high WW-LEDs->an 100%*/ PORTC.OUT |= PIN2_bm; /*PORTC.2 auf high KW-LEDs->an 100%*/ PORTC.DIR = 0x1C; /*PORTC auf Ausgang LEDs*/ /*System ON/OFF*/ PORTC.DIR |= PIN1_bm; /*PORTC.1 auf Ausgang ON/OFF*/ PORTC.OUT
-
Thread
Schrittmotor ansteuern über Timerinterrupt
Cyberfoxx schrieb im Beitrag #2358111: > if(PORTC%2) > { > PORTC&=0xFE; > } > else > { > PORTC|=0x01; > } kann man auch so schreiben: PORTC ^=0xff warum weden alle bits von PORTC getoggelt?
stimmt! PORTC ^=0x01 wäre richtig!
-
Thread
SPIEN disable
TDO, TDI) machen Schwierigkeiten. Mein Programm sieht wie folgt aus: [c] #define E1_OFF PORTC |= (1<<PC0) #define E2_OFF PORTC |= (1<<PC1) #define E3_OFF PORTC |= (1<<PC2) #define E4_OFF PORTC |= (1<<PC3) #define E5_OFF PORTC |= (1<<PC4) #define E6_OFF PORTC |= (1<<PC5) #define E7_OFF PORTC |= (1<<PC6) #define E8_OFF PORTC |= (1<<PC7) #define E1_ON PORTC &=~ (1<<PC0) #define E2_ON PORTC &=~ (1<<PC1) #define E3_ON PORTC &=~ (1<<PC2) #define E4_ON PORTC &=~ (1<<PC3) #define E5
-
Thread
Finde den Fehler im programm nicht
PORTA mit PORTC ersetzen.
Auf PINA einlesen und auf PORTC ausgeben
-
Thread
LCD und lesen des AC
0x05; LCD_DDR2 = 0x00; LCD_PORT1 |= (1 << E); #ifndef DEBUG _delay_us(10); #endif PORTC = LCD_PIN1; uint8_t porta = LCD_PIN1; uint8_t portb = LCD_PIN2; LCD_DDR1 = 0xFF; LCD_DDR2 = 0xFF; LCD_PORT1 = 0x00; LCD_PORT2 = 0x00; // output to PORTC (leds)
Abgesehen verstehe ich nicht, wozu das PORTC = LCD_PIN1 gut sein soll. PORTC wird doch gleich wieder umgenietet? Eigentlich kommt mir das alles auch etwas unübersichtlich vor.
-
Thread
Probleme bei Funktionsaufruf mit Wertübergabe
#include <util/delay.h> void Ausgabe7Seg(int 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);
= (0<<PC1); PORTD = (0 <<PD5)|(0<<PD6)|(0 <<PD4)|(0<<PD0);break; case 5: PORTC = (1<<PC3)|(0<<PC1); PORTD = (0 <<PD5)|(0 <<PD4)|(0<<PD0);break; case 6: PORTC = (1<<PC3)|(0<<PC1); PORTD = (0 <<PD5)|(0<<PD6)|(0 <<PD4)|(0<<PD0)|(0<<PD3);break; case 7: PORTC =