-
Thread
INT1 klappt, INT0 nicht.
PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (0 << PC4) | (1 << PC5); _delay_ms(30); PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (0 << PC4
PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (1 << PC4) | (0 << PC5); _delay_ms(30); PORTC = (0 << PC4) | (0 << PC5); _delay_ms(50); PORTC = (1 << PC4
-
Thread
Taster Stromstoßschalter
if(PIND & (1<<PD0) && PORTC == 0x00) { PORTC = 1; } } } [/c] Danke für eure Hilfe
PORTC = 1; ==> PORTC = 0xFF;
-
Thread
PIC16F505 reagiert nicht
;Reset Vektor Init BANKSEL TRISC ;Wählt dank mit TRISC aus bcf TRISC,3 ;PORTC3 Ausgang BANKSEL PORTC ;Wählt dank mit PORTC aus bsf PORTC,3 ;RC3 auf '1' goto $ ;Endlosschleife end [/avrasm]
WDT_OFF & _HS_OSC ORG 0x000 ;Reset Vektor Init: movlw b'00001000' tris PORTC BANKSEL PORTC ;Wählt Bank mit PORTC aus bsf PORTC,3 ;RC3 auf '1' goto $ ;Endlosschleife end [/avrasm] Edit (habe den Post nicht gesehen): Takao K.
-
Thread
Ist mein µC schnell genug?
) { PORTC &= ~( (1<<phase1m) | (1<<phase2m) | (1<<phase3p) | (1<<phase1p) ); PORTC |= ( (1<<phase2p) | (1<<phase3m) ); MCUCSR |= ( 1<<ISC2); } if(pPWM == 0) { PORTC
) { PORTC &= ~( (1<<phase1m) | (1<<phase2m) | (1<<phase3p) | (1<<phase1p) ); PORTC |= ( (1<<phase2p) | (1<<phase3m) ); MCUCSR |= ( 1<<ISC2); } if(pPWM == 0) { PORTC
-
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
Stoppuhr mit Atmega 8 und 4x20 LCD Display
Timer1 Timer1_isr Enable Interrupts Const Timervorgabe = 22456 Timer1 = Timervorgabe Config Portc.5 = Input Config Portc.4 = Input Taste_startreset Alias Pinc.5 Taste_stop Alias Pinc.4 Portc.5 = 1 'Pullupwiderstand Portc.4 = 1
Timer1 Timer1_isr Enable Interrupts Const Timervorgabe = 19456 Timer1 = Timervorgabe Config Portc.5 = Input Config Portc.4 = Input Taste_startreset Alias Pinc.5 Taste_stop Alias Pinc.4 Portc.5 = 1 'Pullupwiderstand Portc.4 = 1
-
Thread
2 Bytes (int) struct korrekt so?
SentVector.bit.SV0 ) PORTB |= ( 1 << PB5 ); else PORTB &= ~ ( 1 << PB5 ); if ( SentVector.bit.SV0 ) PORTC |= ( 1 << PC0 ); else PORTC &= ~ ( 1 << PC0 ); if ( SentVector.bit.SV0 ) PORTC |= ( 1 << PC1 ); else PORTC &= ~ ( 1 << PC1 ); if ( SentVector.bit.SV0 ) PORTC |= ( 1 << PC2 ); else PORTC &= ~ ( 1 << PC2 ); if ( SentVector.bit.SV0 ) PORTC |= ( 1 << PC3 ); else PORTC &= ~ ( 1 << PC3 ); if ( SentVector.bit.SV0 ) PORTC |= ( 1 << PC4 ); else PORTC &= ~ ( 1 << PC4 );
-
Thread
Atmega168 PORTC Spannungseinbruch
verbunden mit VCC. Kann das was geschrottet haben? Oder ist das normal? Wie viel Strom kann man aus dem PortC ziehen? Ich habe im Datenblatt nix dazu gefunden.
-
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
I2C mit Bascom Fehlersuche bei LTC2945
40 $swstack = 16 $framesize = 32 $baud = 9600 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Sda = Porta.6 Config Scl = Porta.7 Const Basewrite = &HCE Const Baseread = &HCF Dim Vin_msb As Byte ,
framesize = 32 $baud = 9600 '$lib "i2c_twi.lbx" Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Sda = Portd.1 Config Scl = Portd.0 Const Basewrite = &HCE Const Baseread = &HCF
-
Thread
Pollin Controller Port Ausgang auf "high" schalten
auf 0 setzen //PORTC |= (1<<PC0);[/c] Nöö, die Anweisung ist ja auskommentiert ;-)
[c]PORTC |= (1<<PC0); // einschalten PORTC &= ~(1<<PC0); // ausschalten[/c]
-
Thread
Drehrichtungsumkehr.Microcontroller Programm funzt nicht richtig.
einen Schritt vorwärts tun soll // na dann machen wir den mal if( StepDir == TO_RIGHT ) PORTC |= ( 1 << PC2 ); else PORTC |= ( 1 << PC3 ); _delay_ms( 8 ); PORTC &= ~( (1 << PC3) | (1 << PC2) ); } int main( void ) { DDRC = 0xFF; // PORTC als Ausgang for
_______________ void MakeStep( uint8_t MotorDir ) { if( MotorDir == TO_RIGHT ) { PORTC |= ( 1 << PC1 ); _delay_ms(60); PORTC &=~ (1 << PC1); _delay_ms(60); } else { PORTC |= ( 1 << PC2 ); _delay_ms(60); PORTC &=~ (1<<PC2); _delay_ms
-
Thread
GCC Funktion wird manchmal nicht aufgerufen
Adresse += Spalte; //Spaltenadresse hinzufügen PORTD = Adresse; _delay_us(2); PORTC |= ((1 << PORTC7)); //Enable 1 _delay_us(50); PORTC &= ~(1 << PORTC7); //Enable 0 _delay_us(2); PORTC |= ((1 << PORTC1)); //RS auf 1 PORTD = Symbol;//Symbol schreiben _delay_us(2); PORTC |= ((1 << PORTC7)); //Enable 1 _delay_us(50); PORTC &= ~(1 << PORTC7); //Enable 0 _delay_us(2); }[/c]
-
Thread
Zugriff auf Ports über einen Pointer od Ähnlichem für PIC18F (nicht Bit Addressierbar)
PORTE; bitmask = 1 << 6; case 11: port_ptr = &PORTE; bitmask = 1 << 7; case 12: port_ptr = &PORTC; bitmask = 1 << 4; case 13: port_ptr = &PORTC; bitmask = 1 << 5; case 14: port_ptr = &PORTC; bitmask = 1 << 6; case 15: port_ptr = &PORTC; bitmask = 1 << 7; case 16: port_ptr =
unsigned char *port; unsigned char mask; }pin_pointer; const pin_pointer pins[4] = { &PORTC, 1 << 0, // PORTC pin 0 RC0 &PORTC, 1 << 1, // PORTC pin 1 RC1 &PORTC, 1 << 2, // PORTC pin 2 RC2 &PORTC, 1 << 3, // PORTC pin 3 RC3 ... etc...
-
Thread
Audiotisch (Daft Punk)
Testprogramm! Eine Frage nur noch: [avrasm] loop: in temp, PIND com temp out PORTC, temp JMP loop [/avrasm] damit wird doch der ganze PORTC geschaltet ? Mich wundert es, das nur der erste Pin reagiert und die anderen LEDs (habs erweitert) dauerhaft leuchten. Oder ist
ANDI temp, 1 BRNE loop ; Auf Impuls warten (negative Flanke am Eingang) OUT PORTC, muster ; neues Muster ausgeben [/avrasm] Gute Nacht Jobst
-
Thread
Timer 1 kann Portc nicht mehr verwenden
ich den Timer1, dann kann ich auch den Portc toggeln. Also µC benutze ich den Atmega16
Marco M. wrote: > Deaktiviere ich den Timer1, dann kann ich auch den Portc > toggeln. Tja, der Fehler wird vermutlich in Zeile 42 in Deinem Programm sein...
-
Thread
ATmega16 Probleme bei der PORTC Nutzung
Zur Progammierung hab ich manuell einen Reset ausgelöst. Mein JATG Programmiergerät hab ich vom PORTC entfernt. Schließe ich eine LED-Leiste an, sehe ich Bit 0, 1, 4, 6,7 aus und Bit 2, 3, und 5 dimmen. Hat jemand eine Idee, wie ich den Port als Ausgabe nutzen kann? Danke für eure Hilfe.
-
Thread
Schrittmotor Steuerung Atmega16 Interrupt Problem
); } else if(xstep==3&&xstepin==1) { PORTC|=(1<<PC3); PORTC|=(1<<PC4);// StatusLED stepperdriverboard X _delay_ms(50);//Pause PORTC&=~(1<<PC4); xstep=0; xstepin=0; PORTC&=~(1<<PC3);
); } else if(xstep==0&&xstepin==1) { PORTC|=(1<<PC3); PORTC|=(1<<PC4);// StatusLED stepperdriverboard X PORTC&=~(1<<PC4); xstep++; _delay_ms(100);//Pause xstepin=0; PORTC&=~(1<<PC3);
-
Thread
Was übersehe ich?
: End If : End If Return Stehlampe: If Portb.6 = 1 Then : If Y = 0 Then : Portc = &B00000000 : Portc.3 = 1 : Y = 1 : Waitms 500 : Portc = &B00000000 : End If : End If If Portb.6 = 0 Then : If Y = 1 Then : Portc = &B00000000 : Portc.2 = 1 : Y = 0 : Waitms 500 : Portc = &B00000000 : End If : End If Return Leuchtkugel: If Portb.7 = 1 Then : If Z = 0 Then : Portc = &B00000000 : Portc.5 = 1 : Z = 1 : Waitms 500 : Portc = &B00000000 : End If : End If If Portb.7 = 0 Then : If Z = 1 Then : Portc = &B00000000 : Portc.4 = 1 : Z = 0 : Waitms 500 : Portc = &B00000000
-
Thread
LED umschalten mit Taster
tasteJetzt ) { if( tasteJetzt == TASTE_GEDRUECKT ) { PORTC = 0b00000001; } if ((tasteJetzt == TASTE_GEDRUECKT) && (PORTC=0b00000001)) { PORTC=0b00000000; PORTC=0b00000010; }
// Jedesmal, wenn sich die Taste geändert hat und gedrückt wird, // wird hier PORTC auf 1 gesetzt. PORTC = 0b00000001; } // Bei gedrückter Taste ist PORTC hier immer gleich 1 ... if ((tasteJetzt == TASTE_GEDRUECKT) && (PORTC=0b00000001
-
Thread
Wie mache ich eine Textausgabe 8Bit auf Display?
() { 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 aus E_toggle(); PORTC = 0x06; // Entry Mode Set, Incrementieren, no Shift E_toggle(); PORTC = 0x02; // Cursor home } int main (void) { unsigned long int i; for (
-
Thread
Probleme bei Programm (Assembler)
@Thomas O.: "PORTC, 0" ist überhaupt kein Assembler, sondern es sollte vermutlich nur als Beispiel dienen. @Dominik: Wenn da irgendwas mit "sbi PORTC, PC0" o.ä. steht, dann heißt das, dass da eine Definition aus
portc,6 rjmp loop L2: cbi Portc,6 rjmp loop
-
Thread
Drei 7-Segment-Anzeigen über nur einen Port ansteuern
Latch-Eingang für je ein Segment. void dsp_char(unsigned char char2display) { /* set MSB digit */ PORTC = (PORTC & 0xf0) | (char2display / 100); /* latch to 7seg driver */ PORTC |= (1<<PC4); PORTC &= ~(1<<PC4); /* set mid digit */ PORTC = (PORTC & 0xf0) | ((char2display % 100)/10); /* latch to 7seg driver */ PORTC |= (1<<PC5); PORTC &= ~(1<<PC5); /* set LSB digit */ PORTC = (PORTC & 0xf0) | ((char2display % 10); /* latch to 7seg driver */ PORTC |= (1<<PC6); PORTC &= ~(1<<PC6); } Als Treiber-IC
-
Thread
Warnung beim verwenden jeweils jeden 7.Portpin als Ausgang
Kann ich das Problemm dann beheben, wenn ich diese Zeile umgehe!? Also anstatt: PORTC=~0xc0 Lieber so: PORTC=~(1<<PC6); PORTC=~(1<<PC7); Aber die ZEile bezieht sich ja nur auf den PORTC, aber er warnt ja auch den PA7 und PF7 an.
schrieb: > Kann ich das Problemm dann beheben, wenn ich diese Zeile umgehe!? > > Also anstatt: PORTC=~0xc0 > > Lieber so: PORTC=~(1<<PC6); > PORTC=~(1<<PC7); Nein. Das hilft dir nichts. PORTC = (unsigned char)~0xC0;
-
Thread
Problem mit LED Schaltung, ich komme einfach nicht dahinter
Portb.2 = 1 Portb.3 = 1 Portb.4 = 1 Portb.5 = 1 Portb.6 = 1 Portb.7 = 1 Portc.0 = 1 Portc.1 = 1 Portc.2 = 1 Portc.3 = 1 Portc.4 = 1 Portc.5 = 1 Portc.6 = 1 Portc.7 = 1 Portd.0 = 1 Portd.6 = 1 Wait Warten Porta.0 = 0 Porta.1 =
Portb.2 = 0 Portb.3 = 0 Portb.4 = 0 Portb.5 = 0 Portb.6 = 0 Portb.7 = 0 Portc.0 = 0 Portc.1 = 0 Portc.2 = 0 Portc.3 = 0 Portc.4 = 0 Portc.5 = 0 Portc.6 = 0 Portc.7 = 0 Portd.0 = 0 Portd.6 = 0 Loop End
-
Thread
Assembler Programm zu umständlich
kommt ggf. noch der CRT0-Startcode aus der C-Bibliothek. Muss ja, wegen Stack. [c] PORTC = (PORTC & 0x0f) | i; // Ausgabe von i auf PORTC[0..3] [/c] Die unteren 4 bits sollen ausgeblendet werden, oder ? [c] PORTC = (PORTC & 0xf0) | i; // Ausgabe von i auf PORTC[0..3] [/
den Stack-Pointer mit 0 initialisieren. Die neueren setzen ihn stattdessen auf RAMEND. > PORTC = (PORTC & 0x0f) | i; // Ausgabe von i auf PORTC[0..3] > > Die unteren 4 bits sollen ausgeblendet werden, oder ? > > PORTC = (PORTC & 0xf0) | i; // Ausgabe von i auf PORTC[0..3] Ja
-
Thread
Outreg aus gemischten Port Pins
use by the USART ==> ignored */ PORTC = (outreg & 0x03) | (PORTC & 0xFC);[/C]
(( PORTC << 4 ) & 0xF0 ) Daraus folgt: [/pre] [c] outreg = (PORTD & 0xFC) | ((PORTC >> 4) & 0x03); outreg = outreg << 8; outreg = outreg | ((PORTC << 4) & 0xF0); [/c] [pre] Alles in
-
Thread
Klatschschalter Beschaltung
, 300 , 150 Waitms 100 Sound Portc.0 , 300 , 150 Waitms 100 Config Pinc.5 = Output Config Pinc.4 = Output Config Pinc.1 = Output Config Pinc.2 = Output Portc.1 = 1 Portc.2 = 1 Portc.4 = 1 Portc.5 = 1 Config Timer1
Then '400 ms bis 600 ms Print Firstclap Print "Licht Toggle" Toggle Portc.5 Toggle Portc.4 Portc.1 = 0 Portc.2 = 0 End If If Firstclap > 2344 Then Portc.1 = 0 Portc.2 = 1 Sound Portc.0 , 300 , 150 Waitms 500 Sound Portc.0 ,
-
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
Taster auf "1" abfragen in AVR-C
//PortB Eingänge DDRC=0xFF; //PortC Ausgänge PORTB=0xFF; //Pullup do { PORTC = 0; } while(!(PINB & (0x01))); //wenn TasterEin gedrückt { PORTC = 0x01; _delay_ms(500); PORTC = 0x02; _delay_ms(500); PORTC = 0x04; _delay_ms(500); } return 0; } [/c
)..warum? Es müsste doch alles ausgehen wegen PORTC = 0;
-
Thread
LCD DIP204-4NLW macht nix, mySmartControl von myAVR
Buchse (20polig) sagen könnte. Programmteil: (Wartezeiten sind mit Absicht viel zu lang) #Pins: PORTC.0 lcd.RS PORTC.1 lcd.e PORTC.2 lcd.DB4 PORTC.3 lcd.DB5 PORTC.4 lcd.DB6 PORTC.5 lcd.DB7 [c] // lcd initialisierung void lcd_init(void) { //INIT:LCD //PORTC für LCD DDRC = 0b00000000
@ franklink >PORTC.2 lcd.DB4 >PORTC.3 lcd.DB5 >PORTC.4 lcd.DB6 >PORTC.5 lcd.DB7 >Du shiftest die höher wertigen Bits mit >> 2 an Stelle von >> 4. >Du veroderst das ganze dann noch mit irgendwelchen Werten deren
-
Thread
Craft
sind also 64 Farben möglich. Ich habe es mit 330 + 680 Ohm Widerstände nachgebaut, geht auch. PortC 5: R1 PortC 4: R0 PortC 3: G1 PortC 2: G0 PortC 1: B1 PortC 0: B0 PortD 7: Sound5 PortD 6: Sound4 PortD 5: Sound3 PortD 4: Sound2 PortD 3: ??? (sieht nach PWM oder sowas aus, es kann sein
weitgehend meiner Vermutung. Das mit dem SPI war mir neu. Port-C könnte auch wie folgt belegt sein PortC 5: B0 PortC 4: G0 PortC 3: R0 PortC 2: B1 PortC 1: G1 PortC 0: R1 Das beschleunigt das Einschieben von Farbinformationen, die nur das obere Bit nutzen sollen - reine Spekulation.
-
Thread
Atmega 8 will nicht
so... $regfile = "m8def.dat" $crystal = 1000000 Config Portc.0 = Output Portc.0 = 1 Do Loop
Die LED ist an PORTC.0 Und hier das Ergebnis, das ich vom Atmega lesen als auch schreiben kann. Warum aber LED nicht an und warum liegen bei Pin Portc.0-portc.5 = 0,22 Volt an
-
Thread
Kein Rechteck am Ausgang
Hallo Michael, ... DDRC = 0x00; // Alles Ausgänge PORTC = 0x00; // Erst mal alles auf log "0" ziehen ... PORTC &= ~0x02; // log "0" PORTC |= 0x02; // log "1" ... Ich denke, dass müsste passen, oder? Gruß Ralf
" //... Hier geschieht etwas // Flanke am Ende der Funktion PORTC |= 0x02; // log "1" PORTC &= ~0x02; // log "0" } Gruß Ralf
-
Thread
Erstes Programm in C (PIC18F2550)
Du kannst PORTC.4 nicht nehmen. Der ist für USB gedacht. Und als Input deklariert. Siehe Datenblatt. Nimm einen anderen Port.
konfiguriert TRISC = 0x00; // PORTC ist als Output konfiguriert PORTC = 0x00; while (1) { if(PORTB == 0xE0) { PORTCbits.RC4 = 1; } else { PORTCbits.RC4 = 0;
-
Thread
ADCmessung macht faxen
als Ausgang definiert PORTB = 0x6; //RELAIS schalten DDRC = 0xC; //Pin2 und 3 des PortC als Ausgang definiert PORTC = 0xc; //LEDs einschalten DDRD = 0xFF; ReadChannel(0); }//ende Main doch ich sehe an PORT D keine Ausgabe. was mach ich falsch?
P1 wird eine 1 (entspricht einem High=vcc) geschrieben DDRC = 0xC; //Pin2 und 3 des PortC als Ausgang definiert PORTC = 0xc; DDRD = 0xFF; PORTD = ReadChannel(0); //PORTD = ReadChannel(1); while(1) { ; } //Ende Haupt-while schleife return
-
Thread
PORTC MEGA16 PROBLEME
Hallo, ich setze den PORTC als Ausgang DDRC 0xFF und wollte dann auf dem Port etwas ausgeben. Leider ist Pin 2,3 und 5 immer hight(direkt nach REset). Auch wenn ich den Port auf 0x00 setzte. Was habe ich übersehen?
Ja ;) JTAG ist bei neuen Prozessoren enabled. Also bei den FUSE Bits JTAG abschalten dann ist PORTC voll nutzbar.
-
Thread
Hilfe bei programmieren mit Basic [für Matrixanzeige]
Chartab) Portc = Dispcol : Portd = Bitbld : Waitms 1 Incr Dispcnt : Dispcnt = Dispcnt Mod 5 Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1 Loop '### Zeichensatztabelle Chartab: Data &B00000000
Byte Dispcnt = 0 : Dispcol = 1 '### Konfiguration für Display Config Portd = Output Config Portc = Output Portb = $ff Do Charnr = Pinb Chradr = Charnr : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt Bitbld = Lookup(chradr , Chartab) Portc = Dispcol : Portd = Bitbld : Waitms
-
Thread
lcd.c - Testprogramm - Wie kompiliere ich das richtig?
rechts vom = zugewiesen. LCD_RW ist was? Na da scrollen wir mal ein wenig hoch #define LCD_RW PORTC.1 Aha. LCD_RW ist also nur eine andere Bezeichnung für PORTC.1 Selbst wenn man das noch nie gesehen hat, würde man die Wette, dass es sich dabei um das Bit 1 vom PORTC handelt nicht verlieren.
ist also ein anderer Name für 1 Alles zusammengefasst ergibt das: Das Bit 1 am PORTC wird auf 1 gesetzt. Und da dieses auf 1 setzen logisch gesehen alles mögliche sein kann, kann man das in C so abstrahieren, dass da eben nicht steht PORTC, BIT 1 <--- 1 sondern LCD_RW
-
Thread
Array an 7 Segmentanzeige ausgeben
Code für die Printnumerberfunktion: [C] void printnumber(char* zahl, uint8_t unter0) { PORTC |=0x06; SevenSegment(zahl[3], 0); PORTC = (1<<PC0); _delay_ms(3); PORTC |=0x06; SevenSegment(zahl[2], 0); PORTC = (1<<PC1); _delay_ms(3); PORTC |=0x06; SevenSegment(zahl[1], 0); PORTC = (1<<PC2); _delay_ms(3); PORTC |=0x06; SevenSegment(zahl[0], 0); PORTC = (1<<PC3); _delay_ms(3); } [/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
AVR C array Programmierung wo liegt der Fehler?
} R1_temp = R1_temp >> 1; if (G1_temp & 0x1){ PORTC |=(1<<G1);} else{ PORTC &= ~ (1<<G1); } G1_temp = G1_temp >> 1; if (B1_temp & 0x1){ PORTC |= (1<<B1);}
//Clock Signal erzeugen PORTC |= (1<<CLK); _delay_us(0.1); PORTC &= ~(1<<CLK); } //Ein"latchen" der Reihe PORTC |= (1<<PC5); _delay_us(0.1); PORTC &= ~(1<<PC5)
-
Thread
switch / case macht etwas was ich nicht verstehe
: ISR (TIMER2_OVF_vect) { pause=pause+1; switch (pause) { case 1: PORTC=0b11111110; break; case 3: PORTC=0b11111101; break; case 5: PORTC=0b11111011; break; usw usw usw bis: case 11: PORTC=0b11011111; pause=0; break; default: PORTC=0xFF; break; } } Wenn ich mir jetzt Port 0 und Port 1 auf dem Oszilloskop anschaue sehe ich das auf das "low" von
-
Thread
Atmega32 - PortPin geht nicht auf High wenn Pullup gesetzt
DDRA = 0xff; // PortA Ausgänge DDRB = 0xd8; // PortB Ausgänge // DDRC = 0xdf; // PortC Ausgänge - Bit 5 Eingang - Chip Quitierung DDRC = 0b11011111; // PortC Ausgänge - Bit 5 Eingang - Chip Quitierung DDRD = 0xff; // PortD Ausgänge //PORTB = (1<<PB7)|(1<<PB5)|
* Author: Thomas */ #include <avr/io.h> int main(void) { DDRC = 0b11011111; // PortC Ausgänge - Bit 5 Eingang - Chip Quitierung PORTC |= (1<<PC5); // Pull Up an Pin27 - Chip issue aktivieren while(1) { } } [/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
Probleme bei Programmausführung
)) { PORTC = 0x00; } else // 1 < zaehler < 31 { PORTC = an; _delay_ms(80); PORTC = andersrum; _delay_ms(50); PORTC = 0x00; } } else { PORTC = an; _delay_ms(100); PORTC = andersrum; _delay_ms(50); PORTC = 0x00; zaehler = 0; } adcval_alt = adcval_neu; } //--------------------------------------
-
Thread
Port in 2 Byte aufteilen-Rechenoperation ausführen-Auf anderem Port ausgeben(Binär)
Also ich möchte einen PORT als 2 BCD eingänge verwenden (z.B. PORTC.0 PORTC.1 PORTC.2 PORTC.3 PORTC.4 PORTC.5 PORTC.6 PORTC.7 8 4 2 1 8 4 2 1 _____________________________ ___________
Robin Wenert schrieb im Beitrag #2705811: > (z.B. PORTC.0 PORTC.1 PORTC.2 PORTC.3 PORTC.4 PORTC.5 PORTC.6 > PORTC.7 > 8 4 2 1 8 4 2 > 1 ich kenne eher die "gespiegelte" Schreibweise, d.h. das
-
Thread
Interrupt Routine
PORTA = (PORTA | (1 << PA4)) & ~(1 << PA0); case 2: PORTA &= ~(1<<PA4); PORTC |= (1<<PC1); case 3: PORTC &= (1<<PC1); } } } } [/c] Wenn diese nun abläuft bei einem Signal am INT1, schaltet er mir zwar den PIN im ersten case auf low, allerdings
| (1 << PA5)) & ~(1 << PA1); break; case 2: PORTA &= ~(1<<PA5); PORTC |= (1<<PC1); break; case 3: PORTC &= (1<<PC1); break; default: break; } case Spieler_3: switch (c) { case 1: PORTA = (PORTA
-
Thread
Bits beim Port setzen/löschen
1 0 und so weiter. Irgendwie haut das aber nicht hin so wie ich es versucht habe: PORTC |= (1<<0); PORTC &= ~(2<<0); PORTC &= ~(4<<0); PORTC |= (8<<0); PORTC |= (16<<0); PORTC &= ~(32<<0); PORTC &= ~(64<<0); PORTC |= (128<<0); _delay_ms(1000); PORTC |= (1<<0); PORTC &= ~(2<<0); PORTC |= (4<<0); PORTC &= ~(8<<0); PORTC |= (16<<0); PORTC &= ~(32<<0); PORTC |= (64<<0); PORTC &= ~(128<<0); _delay_ms(
-
Thread
ungewollte komische interne-Verspätung von dem Microcontroller ATMEGA32A
DDC2) | (0<<DDC1) | (1<<DDC0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=0 PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2
(0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); while (1) { if (PIND.0) PORTC.0=0; else PORTC.0=1; } }