-
Thread
Mikrocontrollers Eingang bestimmten Impuls abfragen
Geht das so? Solange e<60 ist wird hochgezählt. Also 60Sekunden. Nach 60s wird PORTC.5 auf high gesetzt, falls nicht ein Interrupt ausgelöst wird, welcher e auf 0 setzt. // External Interrupt 0 service
int e=0; while (1) { if (e < 60) e = e++; delay_ms(1000); if (e > 60) PORTC.5 = 1; else PORTC.5=0; }; }
-
Thread
LC Display über Atmega16 anders als über Atmega8??
$regfile = "M8def.dat" $crystal = 4000000 Config Lcd = 20 * 2 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcdbus = 4 Config Portd.7 = Output Schleife: Cls Locate 1 , 1 Lcd "Hallo Welt" Portd.7 = 1 Waitms
$regfile = "M16def.dat" $crystal = 4000000 Config Lcd = 20 * 2 Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcdbus = 4 Config Portd.7 = Output Schleife: Cls Locate 1 , 1 Lcd "Hallo Welt" Portd.7 = 1 Waitms
-
Thread
c++ timer programmierhilfe
Also ich hab mir einen Timer nachgebaut. Der geht in Sekunden takt. ich will ihn aber in ms takt. Was muss ich in der .c verändern damit er das tut. Hier ist die .c [avrasm]/* Timer von 1-999 Sekunden * 3 7-Segment LEDs werden im Multiplexbetrieb
//#define relais PD7 // Ports definieren #define port_segment PORTD #define port_digit PORTC #define port_keys PORTB #define dir_segment DDRD #define dir_digit DDRC #define dir_keys DDRB #define pin_keys PINB // Definiert, welche Segmente für die einzelnen Zahlenwerte
-
Thread
Matrix-Tastatur an AtMega8
abziehen for(i=0; i<j; i++){ //LED Blinkschleife _delay_ms(50); PORTC= PORTC | (1<<PORTC0);//Ausgang C0 auf HIGH _delay_ms(50); PORTC= PORTC & ~(1<<PORTC0);//Ausgang C0 auf LOW# } } } [/c]
dann müsstest Du die Fächer wohl absolut auswerten - spätestens nach dem Aus- und wieder Einschalten geht sonst die Rechnerei los. Gruss
-
Thread
Funkübertragung über uC
)) // Abfrage Schalter Lautsprecher eingeschaltet // Aktionsmakro #define ROTE_LED_AN() { PORTC |= _BV(PC3); } // rote LED ein -> 3.3V #define ROTE_LED_AUS() { PORTC &= ~_BV(PC3); } // rote LED aus -> 0V #define GELBE_LED_AN() { PORTC |= _BV(PC1); } // gelbe LED ein -> 3.3V #define GELBE_LED_AUS() { PORTC &= ~_BV(PC1); } // gelbe LED aus -> 0V #define GRUENE_LED_AN() { PORTC |= _BV(PC2); } // grüne LED ein -> 3.3V #define GRUENE_LED_AUS() { PORTC &= ~_BV(PC2); } //
-
Thread
Atmega8 und LCD
die alle dem aktiven Projekt hinzufügen und dann einfach kompilieren. Ob das bei Assembler auch so geht, weiß ich jetzt nicht.
8Mhz angesteuert werden. Die Ansteuerung soll im 4bit Modus erfolgen. DB4..DB7 des LCD hängen an PORTC0..3, RS an PORTC4, E an PORTC5 und R/W auf GND. Kontrasteinstellung über Poti. Die Verschaltung ist richtig, habe es mehrmals überprüft. Das LCD funktioniert auch bei Einschalten der Versorgung (erste
-
Thread
int zusammensetzen
folgt daraus einen uint16_t zu machen: [c]uint16_t addr; PORTD |= (1<<PD5)|(1<<PD6)|(1<<PD7); PORTC = 0xFF; addr |= ((PINC & (1<<PC5))<<0); addr |= ((PINC & (1<<PC4))<<1); addr |= ((PINC & (1<<PC3))<<2); addr |= ((PINC & (1<<PC2))<<3); addr |= ((PINC & (1<<PC1))<<4); addr |= ((PINC & (1<<
ich immer astronomische Zahlen bekomme. hab ihn jetzt einfach schnell aufgefüllt, und sieheda, es geht! [c]addr |= ( ( (PINC & (1<<PC5)) >>PC5) <<0); addr |= ( ( (PINC & (1<<PC4)) >>PC4) <<1); addr |= ( ( (PINC & (1<<PC3)) >>PC3) <<2); addr |= ( ( (PINC & (1<<PC2)) >>PC2) <<3); addr |=
-
Thread
PIC18 MWIRE (MSSP) Problem
nicht sein - kurzerhand beim PIC die SDO und SDI über einen Wiederstand verbunden und schon .... geht nichts mehr! Wenn ich schreiben oder lesen will (SSPBUF = data_out;) und dabei der der SDI auf low gezogen ist, bleibt der PIC stehen?! Habe gedacht es wird wohl ein Interrupt ausgelöst und versucht
Hallo snowman. Das es prinzipiell mit dem MSSP geht kannst du hier sehen: http://forum.htsoft.com/all/showflat.php?Cat=0&Number=30719 Kannst Du auch eine Antwort auf die eigentliche Frage geben? Ansonsten alles ja.
-
Thread
entprellen nach Dannegger
LED_PORT = 0xFF; LED_DDR = 0xFF; // long press: task 2 sei(); PORTC &= ~(1<<PC5); // LED5 zum Testen einschalten while(1) { if( get_key_short( 1<<KEY1 )) PORTC &= ~(1<<PC1); //mit entprellen if ( !(PINB & (1<<PINB4)) ) PORTC &= ~(1<<PC4); // Ohne entprellen LED4 ein } } [/c] Die Test LEDs 5 und 4 gehen jeweils an nur die LED 1 mit dem entprellen nicht, ich sehe das Problem irgend
-
Thread
einfache Schreibweise um Pins zu schalten
#define pinc0_ein PORTC |= (1 << 0)
Baut man das dann aber in ein if-else-konstrukt ein: if(x>y) SR_latch(); else ++x; geht es nicht: da dann steht: if(x>y) {PORTC |= (1<<0); PORTC &= ~(1<<0);}; else ++x; das semikolon schließt die if-Anweisung unwiederuflich. Daraus lernt man 2 sachen: 1. Macros, die
-
Thread
PIC18F4550 kann PORTE und PORTD nicht beschreiben?
naja habs hinzugefügt hat aber nichts gebracht..... sonst nochn vorschlag? PORTA PORTB PORTC funktionieren.... nur die leds auf porte wollen nicht angehen...
und oder Eingang geschaltet werden können. --> das steht definitiv im Datenblatt übrigens PORTD geht auch nicht. gleiches Problem wie mit PORTE
-
Thread
Universaltestboard für AVRs
unübersichtlich ist der Plan nicht, auch wenn man das eine oder andere schöner zeichnen könnte. Vor allem den PortC vom Mega8. Warum sind manche Ports auf drei Buchsenleisten geführt, reicht eine nicht? Fehler sind: * C1 ist etwas klein, kann aber reichen. Faustformel: 1000µF pro Ampere. * Kondensator an Reset
index.php/avr/atmeg... Ja, kenn ich schon beide. Hab ich auch schon überlegt zu kaufen. Aber mir gehts auch darum, was selbst zu machen. Weil ich werde um Doppelseitig wohl nicht drumrum kommen, sodass ich mich darin mal versuchen kann. Wie ich schon in einem anderen Post beschrieben habe, habe ich
-
Thread
Tiefpass-Berechnung für PWM-Glättung
hwstack = 32 $crystal = 16000000 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Portd.6 = Output Config Portd.5 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale
1 Loop End nun möchte ich aber auch das Tachosignal des Lüfters auslesen, was ja aber nicht geht, solange der mit PWM betrieben wird. Lösung: Einen Tiefpass zwischen transistor und Lüfter (Also ein Widerstand und einen Kondensator in Serie, oder? Doch: wie berechne ich den Kondensator / Widerstand
-
Thread
RGB Fader Anfänger-Problem
Beginnend mit Blau über Violett, Rot usw. Aus unerklärlichen Gründen leuchtet Grün schon von Beginn und geht später sprunghaft aus. Auch andere Farbwechsel passieren Sprunghaft. Ich kann einfach keinen Fehler im Code finden, aber vielleicht kann einer von Euch meinen Denkfehler aufdecken. Würde mich über
Funktion : RGB-Fader ;| Schaltung : RGB LED Anode auf PORTC.0 ;| Kathoden über Vorwiederstände (alle 150Ohm) ;| Auf PORTB 0-2 ;+----------------------------------------------------------------------------- ;| Prozessor
-
Thread
LCDAnzeige 16*2 mit ATMega 32 ansteuern
mein test programm: regfile = "M32def.dat" $crystal = 3686400 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 2 Cursor Off Noblink Locate 1 , 1 Lcd "Hallo" Gruss Mike
schreibt mir nur "FFFFFFFFFFFFFFFF" in beide Zeilen. Jtag ist aus! [Code]Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Cls[/Code]
-
Thread
MLX90614 ansprechen
$lib "i2c_twi.lbx" ' Für Hardware TWI Config Scl = Portc.5 ' we need to provide the SCL pin name Config Sda = Portc.4 ' we need to provide the SDA pin name I2cinit Config Twi
wieder ausgrabe. Mir stellen sich aber zu dem oben genannten Code ein paar Fragen. Aus dem Code geht nicht hervor, welche library eigentlich genutzt wurde. Weißt jemand wie die Kosntante WAIT_FOR_TWINT aussehen müsste? Wäre das so richtig?: #define WAIT_FOR_TWINT; while(!(TWCR & (1<<TWINT)));
-
Thread
Interner PullUp eines Atmegas644
Hmm ganz so einfach geht das nicht leider :/. Ich habe mal die VCC leitung durchtrennt. Ausserdem habe ich den internen pull up aktiviert. DDRC &= ~(1<<PC4); // Schalter der Platine ( Auf Eingang) PORTC |= (PC4);
Ersetz mal die Zeile PORTC |= (PC4); durch PORTC |= (1<<PC4);
-
Thread
LCD Ausgabe (Erhöhen einer Variable durch Signal am Eingang)
i = i + (portc & 7) ist auch ne Idee. Wenn der Code auch noch sicherstellen muss, dass nur eine Taste gedrückt wird, dann muss man eh beide Ansätze nochmal überdenken.
Ich nehme mal an, dass PC von 0 bis 7 geht, oder? Programmiere gerade nen anderen Controller ;o) int main(void) { DDRC = 0x00; lcd_init(); while(1) { if ( PINC & ( 1 << PC1 ) ) // if (PINC & 14) prüft alle 3 Pins gleichzeitig
-
Thread
LCD von Powertip PC 2004A B reagiert nicht
Ich habe folgendermassen den LCD angehängt: Pin1: Gnd Pin2: Vcc 5V Pin3: Poti 10k Pin4: Portc.4 Pin5: Gnd Pin6: Portc.5 Pin7: Gnd Pin8: Gnd Pin9: Gnd Pin10: Gnd Pin11: Portc.0 Pin12: Portc.1 Pin13: Portc.2 Pin14: Portc.3 Pin15: NC Pin16: NC Der Bascom-Code: [code] 'Bascom
$regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 'Config Lcdbus = 4 Cls Locate 1 , 1 Lcd "Hallo Welt" [/code] Für eure Hilfe danke ich euch im Voraus. Freundliche
-
Thread
LED-Fading für Leuchtturm
Outputpins hat. Da sowieso ein Mega8 vorhanden ist, macht man dann zu den 5 LED am PortB noch 5 LED am PortC dazu und ändert das Programm so um, dass alles was an B ausgegeben wird auch auf C ausgegeben wird und hat dann sogar seine 2 umlaufenden Lichtpunkte, wie es bei einem Leuchtturm sein muss. Und das
Geht klar Volker. Kann aber noch einige Tage dauern. wilfried
-
Thread
LCD - Ausgabefehler
int main(void){ . . . TIMSK |= (1<<OCIE0); DDRC = 0xff; PORTC = 0xFF; sei(); lcd_init(); TCCR0 |= (1<<WGM01); OCR0 = 249; Uebertragung1 = 1; LCD_Ausgabe = 1; gh = 1; while(1){ if(Uebertragung1 == 1){
Routine auch entvernen? Ja. Schmeiss es raus. Und wechsle deine Sichtweise der Dinge. Die ISR geht es überhaupt nichts an, dass da ein LCD existiert (siehe oben mit den Modi) > Warum funktioniert die Verwendung im main und im Interrupt zusammen > nicht? Weil du nicht darauf achtest, welche
-
Thread
pwm ansteuern mittles taster
&PINC, PC1)) //Taste S2 {S2=true; } PORTC = SavePORTC; DDRC = SaveDDRC; // Laden des alten Portzustandes } danke
[C] void ButtonControl() { char SavePORTC = PORTC; char SaveDDRC = DDRC; PORTC |= (1<<PC0) | (1<<PC1) ; DDRC &= ~((1<<DDC0) | (1<<DDC1)); [/C] Lass das DDR Register und das Port Register in Ruhe! Diese Einstellung macht man
-
Thread
LCD-Modul TC1602E-01 von Pollin ansteuern
by adapting the LCD_DATAx_PORT and LCD_DATAx_PIN definitions. * */ #define LCD_PORT PORTC /**< port for the LCD lines */ #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ #define LCD_DATA2
Erstaunlich ich hab hier eine Anwendung da sind die unbenutzten Pins offen und es geht seit Jahren ohne Störung. Auch in der Serie. Hier ist so ein 1602 Display drin, die es von vielen Anbietern gibt. Da ist meist ein HD44780 controller oder was Kompatibles drin. Ich glaube das
-
Thread
Uhr Bascom problem
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcdbus = 4 Cursor Off Ddrb = &B11111111 Ddrd = &B00000000 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Enable Interrupts
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcdbus = 4 Cursor Off Ddrb = &B11111111 Ddrd = &B00000000 Portd.2 = 1 Portd.3 = 1 Portd.4 = 1 Enable Interrupts
-
Thread
Nur das Schreiben des Flashs klappt nicht(Atmega32 mit usbasp)
" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C) Portc.0 = 1 Do Print "**** RN-CONTROL sagt Hello World *****" Wait 1 Loop [/code] compiliert und es versucht mit bascom zu übertragen.(Auslesen und erkennen geht)Beim programmieren, wenn ich Autoprogramming auswähle, geht das Fenster sofort wieder weg. Wenn ich es manuell mache bekomm ich den Fehler: Chip differs at byte address : 00000 Buffer read 384
-
Thread
74hc 299 richtig anscheuern
1 bit nun IO-0 oder IO-7 ist, ist mir egal [c] program Expander; var LED : sbit at PORTC0_bit; LED_dd : sbit at DDC0_bit; // Schreiberegister für die Relais // S0 = L; S1 = H; -Cler = H is_Out : sbit at PORTC1_bit; is_Out_dd : sbit at DDC1_bit; // Beide -OE bei beiden Out_dat: sbit at PORTC2_bit; Out_dat_dd: sbit at DDC2_bit; // SR (Chip2.sr = Chip1.q7) Out_Cl : sbit at PORTC3_bit; Out_cl_dd : sbit at DDC3_bit; // Clock Relai : word; procedure set_Out; var Low, Hig
-
Thread
STK600 & LEDs
Nein, keine eigenen LED's - ich habe die LED's vom STK600 mit dem PortC mittels 10er-Kabel verbunden. Äh... 0.7V? Also ich bin jetzt mal vom "Normalfall" ausgegangen, da doch die Schwellspannung in der Regel so hoch ist, oder nich? *grübel* Naja, wie auch immer -
na an der Katode.. mit uC auf Low schalten geht aber auch. :-)
-
Thread
Probleme beim ansteuern eines LCD TC1602A-09 + ATMEGA8
Hallo, PORTC beim Mega 8 PC0-5 = ADC0-5 PC6 = RESET PC7 = ... nicht vorhanden! mal wieder das Datenblatt ignoriert? MfG
Hallo, also es geht *YaY*. Aber leider nur die ersten 8 Zeichen :(. Woran kann, das liegen? MFG
-
Thread
Mit ADC und Poti, LEDs ansteuern
define S2 PC1 //Spalte von LED Matrix die ich ansteuern möchte #define Freigeben(x) PORTC &=~(1<<(x)) #define Sperren(x) PORTC |=(1<<(x)); PORTD = 0b00000000 #define LED(x) PORTD |=(1<<(x)); uint16_t adc() { ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0); ADMUX = 0;
funktioniert nicht? > wo ich dem PORTD den 10Bit Wert von der Funktion adc() übergeben will Übergeben geht in C so: PORTD = adc();
-
Thread
Kann PINs nicht einlesen :(
erstmal keinen Internen PullUps (Wäre 1) DDRC = 0b11111111; // PC7 - PC0 als Ausgang (1) PORTC = 0b00000000; // PC7 - PC0 auf LOW schalten (0) DDRD = 0b11110000; // PD7 - PD4 als Ausgang (1), PD3 - PD0 als Eingang (0) PORTD = 0b00000011; // PD7 - PD4 auf LOW schalten (0), Interne PullUps
DANK! Ich hatte ganz vergessen, dass es einen Unterschied zwischen PORTD und PIND gibt!!! Jetzt gehts wunderbar!
-
Thread
RFID - China-Reader ohne Spezial-IC
Wieso baust du ihn denn nicht 1:1 nach? Irgendwie versteht ich noch nicht so recht um was es dir geht.
' 3 Spaltenausgänge Spalte258 Alias Portc.5 Spalte369 Alias Portc.6 Beep Alias Pinb.0 ' Klingeltaste als Enter '**************************************************************************** Startup: '*********
-
Thread
Amega8 Kommunikation mit Interrups
} void Timer1_AUS(uint16_t anzSchritte) { TCCR1B = (0<<CS10); //Timer1 aus //PORTC = 0b11111111; //Ausgang PortC PORTC = (1 << PC0); for(int i = 0; i < anzSchritte; i++) { _delay_ms(10); //Wartezeit midestens 10 ms } } ISR(TIMER1_OVF_vect) { Timer1
USART_Transmit(data3); //Übertragen data3 PORTB = (1 << PB1); //PB1 deaktivieren, LED geht aus TCCR1B = (0 << CS10); //Timer1 aus PORTC = (1<<PC0); //PC0 auf 1 legen, Ausgangszustand } else { stepsTiH = data1; //Definieren stepsTiH
-
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
Mega168: PWM geht nicht?
Guten Abend! Ich habe heute probiert, auf meinem mega168 eine PWM ans laufen zu bekommen. Das klappt aber irgendwie nicht. Auf dem Mega8 hat es mit ähnlichem Code geklappt. Wäre nett, wenn ihr mir helfen würdet. Hier ist der Code, vielleicht könnt ihr ja mal drüber gucken. [c] #define VERSI0N 0x01 // Includes für Ein- und Ausgänge #include <avr/io.h> // Taktfrequenz 16MHz + Verzögerungs- Include #define F_CPU 16000000 #include <util/delay.h> /********************* Hauptprogramm *********************/ int main(void) { // Outputs definieren DDRB = 0x0E; DDRC = 0x01
-
Thread
Picdem 2 plus demo board RB0/Interrupt
man auf dem Foto sehen kann habe ich das rote Kabel mit RB0 verbunden und das braune mit Masse. Es geht darum das ich eine einfache TTL prüfung durchführe mit dem Widerstand(100 ohm groß) als ersten Test. Also eine gut/schlecht Kennung. Im Datenblatt steht das der PIC16f877a an dem Port RB0-RB7 interne
Die Ports beim PIC 16F877 heissen PORTA, PORTB, PORTC und PORTD Den PIN RB0 kann Du z.B. so testen: [code] BTFSS PORTB, 0 ; Bit 0 Port B testen, falls 1, dann nächsten ; Befehl auslassen CALL xxxx NOP [/code
-
Thread
ATmega8 kleiner LED-Cube
Schau dir auch genau an auf welchen Ports du die 300mA ziehen darfst, da gibts eine Ausnahmeregel für PortC
= 21 I/O Pins verfügbar. > Allerdings wenn ich nachzähle komme ich nur auf 20? Also der PortB geht von PB0..PB7, PortD geht von PD0..PD7, PortC aber nur von PC0..PC6, insgesamt 8+8+7=23 Pins. OK, Reichelt kann zählen (vorausgesetzt ich kann zählen), hast du vielleicht den Reset-Pin (PC6, Pin 1)
-
Thread
AVR Ausgänge mit "Dauerfeuer" belegen
zb: [c] if(!(KEY_PIN & 0x01)) // Wenn Taste PortB.0 auf HIGH { PORTC |= (1 << PC0); // LED an PC0 umschalten _delay_ms (30); PORTC &= ~(1 << PC0); // LED an PC0 umschalten _delay_ms (30); } [/c] Wie würdet ihr das
[c] > if(!(KEY_PIN & 0x01)) // Wenn Taste PortB.0 auf HIGH > { > PORTC |= (1 << PC0); // LED an PC0 umschalten > _delay_ms (30); > PORTC &= ~(1 << PC0); // LED an PC0 umschalten > _delay_ms (30); > } > [/c] > > Wie würdet
-
Thread
GCC: Pin toggeln in einem Takt?
zb. so: [c] PORTC ^= (1<<PC2); [/c]
>PORTC ^= (1<<PC2); >PINC = 1 << PC2; Beides benötigt sichern nur 1 Takt?
-
Thread
LED blinken lassen per Taster
gedrückter Taste. [c] if(!(PINB & 0x01)) // Wenn Taste PortB.0 auf HIGH { PORTC ^= (1 << PC0); // LED an PC0 umschalten _delay_ms (200); } PORTC = 0; [/c] So gehts aber: [c] if(!(PINB & 0x01)) // Wenn Taste PortB.0 auf HIGH
solltest du tatsächlich verstehen, warum es da überhaupt ein Problem gibt. > > So gehts aber: > > [c] > if(!(PINB & 0x01)) // Wenn Taste PortB.0 auf HIGH > { > PORTC |= (1 << PC0); // LED an PC0 umschalten > _delay_ms (200); >
-
Thread
Taster Stromstoßschalter
PORTC = 1; ==> PORTC = 0xFF;
das geht btw inkl entprellung mit 2 invertern...
-
Thread
Druckschalter Kompressorsteuerung für Weller Entlötstation WDD81V mit MPX5700 Drucksensor 0-7bar
ID3 AN PORTB0 ID4 AN PORTB7 ID5 AN PORTD4 ID6 AN PORTD3 ID7 AN PORTD2 MODE AN PORTB6 WRITE AN PORTC5 MPX5700 Sensor1 AN PORTC0 Sensor2 AN PORTC1 Referenz 5V Sensor nach Schaltbild aus Datenbatt Taster Taste Rot "up" über Diode AN PORTD5 (Diode 1N4148 nach PORTPIN) Taste Gelb "Mode
PORTPIN) Taste Schw."View" über Diode AN PORTB0 (Diode 1N4148 nach PORTPIN) Gemeinsame Seite AN PORTC4 Relais Relais1 AN PORTB2 Relais2 AN PORTB1
-
Thread
Interrups in Assembler
, die 2 Interrups beinhaltet. INT0 und INT1. Wird der Taster 1 betätigt, soll die Grüne Led an PortC 7 mal Aufleuchten. Wird der Taster 2 betätigt, soll die Rote Led an PortB 5 mal Aufleuchten. Wenn ein Taster Betätigt wird, springt das Programm in ein Unterprogramm, welches mit CLI beginnt und
SEI ;Global Interrupt aktivieren LDI R24,0B11000000 ;)Da das SBI nicht bei 0x3B geht ersetzt also den befehl SBI 0X3B,6 OUT GICR,R24 ;)Interrupt INT0 und INT1 freigeben LDI R16,0B00001010 ;Lade den Bitbefehl der auf Seite 66 nachgeschaut wurde in R16 Fallende Flanke
-
Thread
Einlesen von Bits am Pin und ausgeben auf Display
Pin5 und nicht den ganzen PINC, wie in deinem Code. Und das mit jedem Takt neu einlesen. Aber es geht bei meinem Problem nicht darum. Ich würde eher gerne erfahren wo der Fehler ist. Für optimierungen bin ich natürlich offen ;)
schrieb: > Ich muss direkt acht mal hinter einander den pin5 abtasten, mit jedem > Takt. Das geht schonmal garnicht. Ein Signalpegel muß >1 CPU-Zyklus anliegen, damit er sicher erkannt wird. Wenn Du z.B. einen Timer extern taktest, muß die Frequenz <XTAL/2 sein. Wenn das Signal sehr flankensteil
-
Thread
ADC zieht Spannung runter?
Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.4 , Rs = Portc.5 Initlcd Config Lcdbus = 4
Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.4 , Rs = Portc.5 Initlcd Config Lcdbus = 4
-
Thread
Wie steuert man AVR Ausgänge richtig an?
Verständnis 2 Varianten: Variante 1: =========== DDRC = 0x00 // Anschlüsse auf Eingang schalten PORTC = 0x00 // Alle PortC auf LOW Wird nun einen Tastendruck erkannt wird mittels: DDRC = 0x01 // PortC.0 auf Ausgang schalten LED leuchtet Variante 2: =========== DDRC = 0xFF // Anschlüsse auf Ausgang schalten PORTC = 0xFF // Alle PortC auf HIGH Wird nun einen Tastendruck erkannt wird mittels: PORTC = 0x01 // PortC.0 auf LOW schalten LED leuchtet Welche ist nun die richtige Methode?
-
Thread
zufalls-pwm erzeugen ATMEGA88
nicht mehr weißt, was wo passiert, dann schreibe das Ganze ohne Funktionen. Bei der Beispielgröße geht das noch ohne Probleme.
begrenzen, bzw das sie zb zwischen 100 und 150 sein sollten. wie kann ich das, wenn das überhaupt geht danke
-
Thread
atmega128 receive uart0 funktioniert nicht
is interrupt controlled sei(); char Command [LENGTH+1]; for(;;) { PORTC = 0xAA; uart0_gets( Command, LENGTH ); uart0_puts( Command ); uart0_puts( "\r\n" ); if(strcmp(Command, "start") == 0) { PORTC = 0xFA;
start"); _delay_ms(10); } else if(strcmp(Command, "exit") == 0) { PORTC = 0xBA; for(int i=0; i<19; i++) uart1_puts("exit"); _delay_ms(10); } } return 0; }[/c]
-
Thread
AVR resetiert bei zu vielen LED's gleichzeitig (Spannungseinbruch)
Software darauf achtest, dass der Ausgang immer low ist, passiert nichts. Aber Vorsicht: Das Register (PORTC) zum Aktivieren der internen Pullups ist das gleiche wie das zum Setzen des Ausgangspe- gels. Wenn du also von Tastenabfrage auf LED-Ansteuerung umschaltest, musst du erst PORTC auf 0x00 setzen
das mit den Vorwiderstaenden auch nicht sondern meint anschliessend wie das mit den Gluehlaempchen geht , geht das auch mit LEDs.
-
Thread
TWI: Quartz notwendig?
geht, völlig problemlos. Lass dich nicht irre machen.
und Bits 6 und 7 auf PC0 und PC1, dann ist das schnell erledigt: PORTB = (PORTB&0xC0)|(tmp&0x3f); PORTC = (PORTC&0xFC)|(tmp>>6);, ggf. noch mittels cli(), sei() Interrupt-fest machen). Einlesen geht sogar noch schneller, falls es Inputs werden sollen. Wenn die zusätzlichen Takte ein Problem sein sollten