-
Thread
LCD nicht nur für einen Port in C
LCD_PORT_4 PORTD #define LCD_DDR_4 DDRD #define LCD_D4 PD1 #define LCD_PORT_5 PORTC #define LCD_DDR_5 DDRC #define LCD_D5 PC1 #define LCD_PORT_6 PORTC #define LCD_DDR_6 DDRC #define LCD_D6 PC2 #define LCD_PORT_7 PORTC #define LCD_DDR_7 DDRC #define LCD_D7 PC3 #define LCD_RS_PORT PORTC #define LCD_RS_DDR DDRC #define LCD_RS PC5 #define LCD_EN1_PORT PORTB #define LCD_EN1_DDR DDRB #define LCD_EN1 PB0 [/c] die lcd-routines.c [c] // Ansteuerung
-
Thread
LCD funktioniert nicht Atmega32
Schade dass du nicht PortC benutzt sonst hätte ich sofort das hier eingeworfen: http://www.mikrocontroller.net/topic/24490#new
Unterschied an welchem Port ich den LCD angeschlossen > hab? Bei korrekter Konfiguration nicht. PORTC ist der Klassiker bei vergessenem JTAG.
-
Thread
Noob-Frage - warum funzen meine Eingänge nicht?
Eingang (0000.1111) DDRC = 0x0f; // Port C - obere beiden pins pullup aktivieren (1100.0000) PORTC = 0xc0; for ( ; ; ) { if (PINC & 0x80) // Pin C7 abfragen (1000.0000) { PORTC = 0xc0; // LEDs aus, pullups bleiben aktiv (1100.0000) } if (PINC & 0x40) // Pin C6 abfragen (0100.0000) { PORTC = 0xcf; // LEDs an, pullups aktiv (1100.1111) } } return 1; }
-
Thread
$hwstack $swstack $framesize falsch dimensioniert??
$swstack = 8 $framesize = 24 Ddrb = &B00000100 Portb = &B11111011 Ddrc = &B00111111 Portc = &B11000000 Ddrd = &B10000000 Portd = &B01111111 Config Pinb.0 = Input Portb.0 = 1 Config Pinb.1 = Input Portb.1 = 1 Config Pinb.2 = Output Config Pind.7 = Output Config Pind.2 = Input Portd.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Int0 = Low Level Config Timer1 = Timer , Prescale = 8 Enable Timer1 On Timer1 Isr_timer Enable Interrupts
-
Thread
mega16 interrupt
[c];------------------------------------------------------ ; PORTB auf Ausgang - PORTC auf Ausgang ;------------------------------------------------------[/c] Diese Zeile ist zu ignorieren.
diese Zeile: ;------------------------------------------------------ ; PORTB auf Ausgang - PORTC auf Ausgang ;------------------------------------------------------
-
Thread
Resetleitung von einem Mikrocontroller
sieht jemand sofort. MC Code: #define CONTROL_REG DDRC #define CONTROL_PORT PORTC #define RESET PC3 ... CONTROL_REG |= (1<<RESET); .... CONTROL_PORT |= (1<<RESET); LONGDELAY; CONTROL_PORT &= ~(1<<RESET); ... ----------------------------------
es, hab mir alle C Dateien genau angeguckt, Reset kommt dabei nicht vor und anderen PINS auf dem PortC werden per Oder-Verknüpfung geändert, dass RESET dabei so bleibt, wie nach dem Aufruf der Reset-Funktion.
-
Thread
__builtin_avr_delay_cycles
Blinken einer LED schreiben: void blink(int16_t interval_ms, int8_t repeat) { DDRC = 0xFF; PORTC = 0xFF; uint8_t i; for (i=0; i<repeat; i++) { PORTC &= 0b11111110; _delay_ms(interval_ms); PORTC |= 0b00000001; _delay_ms(interval_ms); } } der
-
Thread
lcd ansteuerung mit pic16f877
Tast_Vent2 PORTD,5 ;| #define Tast_Pumpe PORTD,6 ;/ #define LCD_E PORTC,0 ;\ #define LCD_RS PORTC,1 ;| #define LCD_RW PORTC,3 ;| #define LCD_DB4 PORTC,4 ; > LCD Daten- und Steuerleitungen #define LCD_DB5 PORTC,5 ;| #define LCD_DB6 PORTC,6 ;| #define LCD_DB7 PORTC,7 ;/ #define Vent1 PORTA,0 ;\ #define Vent2 PORTA,2 ; > Peripherie #define Pumpe PORTA,4 ;/ #define LEDstat
-
Thread
LCD display steuerung
weshalb. Es würde mich freuen wenn jemand mir einen Antwort geben könnte. Vielen dank! KONTROL bcf PORTC, LCD_RS bcf PORTC, LCD_RW movwf PORTD bsf PORTC, LCD_E call var2ms bcf PORTC, LCD_E return KIIR bsf PORTC, LCD_RS bcf PORTC, LCD_RW movwf PORTD bsf PORTC, LCD_E call var2ms bcf PORTC, LCD_E return ; LCD-Display inicializálása LCD_init movlw D'255' movwf ido call idoz movlw b'00111000' ;038h call kontrol call var2ms movlw b'00111000' ;038h call kontrol call var2ms
-
Thread
ATmega32 4facher Takt??
bei 128MHz blinkt sie normal. Programm: $regfile = "m32def.dat" $crystal = 12800000 CONFIG PORTC.1 = OUTPUT Do Toggle PORTC.1 Wait 1 Loop End Mfg
-
Thread
Sensor über I²C-Bus auslesen - Bascom-Code
Baud-Rate $baud = 9600 'Ports für IIC-Bus Config Scl = Portc.0 Config Sda = Portc.1 'Deklaration der Variablen Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und
'BEEP Sound Portd.7 , 400 , 450 'BEEP Config Portc = Output Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 'Konfiguration COM-Port 1 Open "com1:" For Binary As #1
-
Thread
LCD 1602A an ATmega8
nicht zu klappen. Habe die LCD-routines aus dem Tutorial genommen. XTAL = 3686400 Display an PortC R/W = GND RS = PC4 E = PC5 nach dem Einschalten zeigt das LCD sofort eine Zeile schwarz. Kontrastspannung kann ich einstellen. LCD ist ein 1602A vorr. von Chrystalfontz. vielleicht sieht
jetzt funktioniert die LCD_Test_MEGA8.hex von Holger auch. Falls du das Pollin Addon-Board benutzt, PortC des Mega8 kommt dort als PortA an.
-
Thread
PIC 16F877A ADC
ADC_VALUE += (ADRESH << 8); if (ADC_VALUE > 500) { PORTC |= 0b00010000; PORTC &= 0b11110111; } else { PORTC |= 0b00001000; PORTC &= 0b11101111; } } } [/c] Denke das sollte funktioneren, tuts aber nicht
Ach ja und noch was. Es wird keiner der beiden PINS von PortC gesetzt. das heißt er hat das Problem weiter vorne, denn ansonsten müsste er zumindest ins else!
-
Thread
Bascom: Reichelt-LCD
BASCOM-Options habe ich die LCD Optionen angegeben. Signal Anschluss an -------------------- RS PORTC.0 E PORTC.2 DB4 PORTC.4 DB5 PORTC.5 DB6 PORTC.6 DB7 PORTC.7 16*2, 4-bit, PIN Das Listing im Anhang reicht aus. Lediglich ein Ddrc = &B11111111 war notwendig
-
Thread
Interrupt Probleme
[c]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { DDRC= 0xFF; PORTC = 0x00; TCCR1B= (1<<WGM12) | (5<<CS10) ; TIMSK1= (1<<OCIE1A) | (1<<ICIE1); OCR1A = 15000; TCCR0A = (2<<WGM00); TCCR0B = (5<<CS00); OCR0A = 250; TIMSK0 = (1<<OCIE0A); while(1) PORTC |= 0x08; ; } ISR (TIMER1_COMPA_vect) { PORTC |= 0x01; PORTC &= 0xFE; } ISR (TIMER0_COMPA_vect) { PORTC |= 0x02; PORTC |= 0xFD; }[/c] Debugger: Break at line
-
Thread
DCF77 Signal - Probleme bei der Auswertung. Timerprobleme?
PORTC ^= _BV(PC6); } //Auswertung der Pulseweite if (INT0_CONTROL == INT0_RISING_EDGE) { flags.dcf_rx ^= 1; //Secunden Hilfs Counter berechnen // F_CPU defined in
PORTC ^= _BV(PC6); } [/c] Lösung: Einfach nur die steigende und fallende Flanke umdrehen - also scheinbar ist das Signal invertiert, wie es leider öfter vorkommt. Danke für die Hinweise :)
-
Thread
PIC16f876: RB Interrupt
clock=8000000) #INT_RB //PORTB Interrupts void interrupt (void) { PORTC=0x0F; //PORTB an PORTC ausgeben } void init (void) //Initialisierungen { DDRB=0xFF; //PORTB als Eingang (Schalter) DDRC=0x00; //PORTC als Ausgang (LED)
} void main(void) //Main { init(); //Initialisierungen while(1){ PORTC=0xF0; } } Am PORTB befinden sich Schalter und am PORTC LEDs. Meiner Meinung, sollte es vollgendermassen funktionieren: Wenn alle Schalter 0, dann leuchten die oberen vier LEDs Wenn Schalter
-
Thread
SPI - uC "empfängt" nur ein bestimmtes Byte
/Sobald Taster (PD3) gedrückt, PORTD |= (1<<led_1); //Kontroll-LED einschalten und PORTC = SPDR; //SPDR nach PORTC schreiben. } else { PORTD &= ~(1<<led_1); //Kontroll-LED aus } } return 0; } int but(void) { //Liefert '1', wenn PD3 == true
/Sobald Taster (PD3) gedrückt, PORTD |= (1<<led_1); //Kontroll-LED einschalten und PORTC = SPDR; //SPDR nach PORTC schreiben. } else { PORTD &= ~(1<<led_1); //Kontroll-LED aus } } return 0; } int but(void) { //Liefert '1', wenn PD3 == true
-
Thread
PLED mit P. Fleury Problem
define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */ #define LCD_RS_PORT PORTC /**< port for RS line */ #define LCD_RS_PIN 3 /**< pin for RS line */ #define LCD_E_PORT PORTC /**< port for Enable line */ #define LCD_E_PIN
return 0; } -Einfügen von zusätzlichen Delays hat keinen Effekt -Bereits verschiedene Ports (PORTC, PORTB) zur Ansteuerung getestet. Kein Effekt. Würde mich sehr über Hilfe freuen, vielen Dank, Simon
-
Thread
[AVR] Unterschied zwischen atmega8L-8PU und atmega8-16PU
'Interrupts global aktivieren Config Portb = Output Config Portc = Output Config Portd = Input Portd = &B11111111 ' Pull-up Widerstatände aktivieren Number = 0 I = 0 Lednumber = 0
5 Then Incr Lednumber Else Lednumber = 0 End If Isr_timer0: If I = 0 Then Portc = &B00000001 Portb = Seg1 Incr I Elseif I = 1 Then Portc = &B00000010 Portb = Seg2 Incr I Elseif I = 2 Then Portc = &B00000100 Portb = Seg3
-
Thread
UART- Senden Hui, Empfangen Pfui
5 Sek blinken um anzuzeigen, dass es los geht // ----- SENDEN ------- // MAX auf senden PORTC &= ~(1 << PINC0); // C0 auf 1 while (!(UCSRA & (1<<UDRE))); // Warte bis bereit zum senden UDR = 201; // Sende byte "201" while(!(UCSRA&(1<<TXC))); // warte bis gesendet wurde UCSRA
>// MAX auf empfangen >PORTC |= (1 << PINC0); // C0 auf 0 >// MAX auf senden >PORTC &= ~(1 << PINC0); // C0 auf 1 Kommentare passen nicht zum Code. Die sind vertauscht. Braucht der MAX nicht ein High zum Senden? Dann wären
-
Thread
Timer0 bleibt "kleben/stehen"??
0b11111111; // Datenrichtung PORTD = AUSGANG DDRC |= (1<<4); // Taster PORTC |= (1<<4); TIMER0(); // Timer0 Aufruf für Schrittmotor sei(); // alle Interruptquellen freigeben // ---------------------------------
Immer noch am gleichen [C] DDRC |= (1<<4); // Taster PORTC |= (1<<4); [/C] einen Portpin, den du auf Ausgang stellst, wirst du eher selten mit einem Taster beeinflussen können. OK. Du erzeugst mit dem Taster einen Kurzschluss, wenn du den Ausgangstreiber
-
Thread
EA eDIPTFT43-A RS232 und ATMAGA88 mit BASCOM
Da ist irgendwo der Wurn drin... [code] $crystal = 8000000 $baud = 19200 Config Portc.5 = Output Dim Bcc As Byte Dim X As Byte Dim Y As Byte Dim Ausgabesing_ohne_bcc As String * 10 Dim Tempstring As String * 10 dim bytevariable_1 as byte Bytevariable_1 = 0 Bytevariable
Ausgabesing_ohne_bcc + Chr(bcc) Print "{017},3,#DL,"; Print Ausgabesing_ohne_bcc Do Toggle Portc.5 Waitms 50 Toggle Portc.5 Waitms 50 Loop End[/code]
-
Thread
4 Einzelbytes --> 32-bit Variable?
unsigned char middel_1_count als Middel0: TCNT3L, unsigned char middel_0_count als Lowbyte: PORTC, unsigned char low_count Wie wird hieraus eine 32-bit Variable? Bisher habe ich nur einfache I/O-Operationen in C geschrieben. Aber jetzt gehts, glaub' ich, ans 'Eingemachte'. Vielen Dank
unsigned long x = R4 | ((unsigned int)TCNT3H << 8) | ((unsigned long)TCNT3L << 16) | ((unsigned long)PORTC << 24); Peter
-
Thread
ATmega16 PORTC prüfen welches Bit zuerst gesetzt wurde
Guten Tag Die acht Eingänge am PORTC sollen ständig überwacht werden. Sobald ein Bit gesetzt ist, soll festgestellt werden, an welchem Pin die Spannung anliegt. Alle später gesetzten Bits können ignoriert werden. Folgender einfacher
-
Thread
AVR Oled Display odm 100-Wie ansteuern?
spannungsversorgung mit 5 v zu betreiben leider hat sich da auch nix getan An den Datenleitungen liegt portC und an den Steuerleitungen port A vorbild für die oled ansteuerungsschaltung war der schaltplan vom terminplaner (dens leider nicht mehr gibt):(da ist auch die pinbelegung vom display) [code] http
Du schreibst was von PORTA und PORTC Laut Deinem Source initialisierst Du aber PORTC als Steuer- und PORTD als Datenleitung wenn ich das richtig sehe?! Wenn es so ist kanns nicht gehen... PORTC = 0b00011101; DDRC = 0b00011111
-
Thread
atmega32 - pwm will nicht
mainloop> if (bit_is_set (TIFR,OCF0)) { // compare match TIFR |= (1<<OCF0); PORTC = 0x0F; } if (bit_is_set(TIFR,TOV0)) { // overflow TIFR |= (1<<TOV0); PORTC = 0x00; } }//</mainloop> return 0; // never reached } [/c]
hilft's wenn du [c] PORTC = PINB; [/c] machst?, sonst vl. den Output-Compare Interrupt probiern oder einen "richtigen" PWM-Mode
-
Thread
ATA Floppy mit ATmega1284P ansteuern
Hallo, was soll das ... [c] PORTC= (PORTC & clr_bit) | stat_command; [/c] machen - keine Definition zu finden. Musst du evl. eine bestimmete Länge für den Resetzyklus einhalten?! Sascha
~0b1111100 Damit ist clr_bit= 0b0000011 auf 8Bit erweitert also 0b00000011 ! Beim verunden mit PortC wird PC7, alias Reset, wieder Low und damit aktiv. Sascha
-
Thread
KS0108_Library
wie im Beitrag die die Hardware an die Software angepasst. [c]// Ports #define LCD_CMD_PORT PORTC // Command Output Register #define LCD_CMD_DIR DDRC // Data Direction Register for Command Port #define LCD_DATA_IN PIND // Data Input Register #define LCD_DATA_OUT PORTD
Hi >Benutze ein Atmega 1284p. Da PortC für den Datenbus verwendetet wird stellt sich die Frage, ob das JTEG-Interface von PortC abgeschaltet ist. MfG Spess
-
Thread
Fernbedien RC5 Empfänger
(myCount < 80000) { myCount++; } else { PORTB = 0xff; PORTC = 0xff; myCount = 0; } } } } [/c]
das für dich zu einer "fehlerhaften" Anzeige kommen. Ich würde PORTB = 0xff; PORTC = 0xff; einfach mal auskommentieren und dann kucken was passiert.
-
Thread
Atmega16 steuert nicht alle Pins an
const int8_t numbers[1] = { 0b000000000, }; void digit (uint8_t wert, uint8_t pin) { PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3); PORTB = numbers[wert]; PORTC &= ~(1 << pin); delay_ms(100); } int main() { DDRB = 0xFF; DDRC |= (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3); PORTC |= (1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3); while(1) { digit(1, PC0); digit(1, PC1); digit(1, PC2); digit(1, PC3); } return 0; } [/c] Hoffe ihr könnt
-
Thread
328P im powersave immer noch 1.8 mA
Programm auf ein Minimum reduzieren: [c] int main() { PORTA = 0xFF; PORTB = 0xFF; PORTC = 0xFF; PORTD = 0xFF; set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); while (1); } [/c] 4) Dann nochmal messen. Wenn du dann immer noch unzufrieden
#include <avr/io.h> #include <avr/sleep.h> int main() { //PORTA = 0xFF PORTB = 0x0; PORTC = 0x0; PORTD = 0x0; set_sleep_mode(SLEEP_MODE_PWR_SAVE); sleep_enable(); sleep_mode(); while (1); } [/c] Da noch eine LED an PB5 verbaut ist, habe ich die PORTs mal schnell mit
-
Thread
Taster abfragen UND dann.
Ich habe folgende Frage, auf deren Lösung ich einfach nicht komme: Ich habe einen Taster an PORTC angeschlossen. Nun soll auf dem Display die Anzahl der Tastendrücke (Zählvariable: iMessung) angezeigt werden. z.B. 1x Drücken = "Messung-1", 3x Drücken = "Messung-3" bis Messung-5. Zur Displayansteuerung
LED2 int main( void ) { DDRC = 0x00; // den Port an dem die Taster hängen vorbereiten PORTC = 0xFF; // die Tastenroutinen basieren auf einem Timer // diesen mal anwerfen TCCR0 = (1<<CS02)|(1<<CS00); // divide by 1024 TIMSK = 1<<TOIE0;
-
Thread
Bascom UART Bytes einzeln empfangen
2 'LCD 2 Zeilen, 16 Zeichen Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portd.7 , Rs = Portb.0 'LCD Pin-Config Config Lcdbus = 4 Config Portc.5 = Output Portc.5 = 1 Enable Interrupts Cls
-
Thread
RFM12 empfängt nur einmal und stürzt dann ab
Spi_sdo = 0 Schleifencount = Schleifencount + 1 If Schleifencount = 0 Then Toggle Portc.3 ' blaue Kontroll LED End If If Count >= Maxchar Then Countl = 0 County = 0 For Count = 1 To Maxchar Print Bin(rfdata
count) = 0 Next Count If Countl >= 3 And County >= 3 Then Print "PORTD.7 && PORTC.5 && PORTC.4" Portd.7 = 1 Portc.5 = 1 Wait 1 Portc.5 = 0 Waitms 500 Portc.4 = 1 Wait 1 Portc.4 = 0 Waitms
-
Thread
Problem mit 16F887
PIC16F690, daran hab ich nichts geändert, da ich keine Unterschiede im Datenblatt fand. Die Led an PORTC 0 leuchtet und manchmal geht sie mal ne Sekunde aus oder auch länger, manchmal blizt sie auch etwas auf. Die anderen Led sind immer aus. Hier noch der Code: [c]#include <pic.h> void delay10( char n); void main( void) { TRISC = 0; while(1) { PORTC = 1; delay10(100); PORTC = 2; delay10(100); PORTC = 4; delay10(100); PORTC = 8; delay10(100); } } void delay10( char n) {
-
Thread
LM75 funktioniert nicht
vom LM75 und gibt es (unter schnöder Mißachtung des 9. Bits - sehr unsauber programmiert ;-) auf PORTC aus, wo ich LEDs angeschlossen habe. Meine Routine ist allerdings auf Port B (0x18) gemünzt, läßt sich aber ja durch 0x15 sehr schnell auf PortC umstellen. Du mußt dann nur die LED-Ausgabe auf einem anderen Port machen (DDRC und PORTC nicht vergessen!). So kannst Du zunächst erstmal eingrenzen, ob an deinem Meßvorgang oder am Terminal irgendwas nicht stimmt. Ich würde auch vor und nach dem Aufruf von lm75_init eine längere Warteschleife
-
Thread
ACME Bit lässt sich nich setzen
ADMUX =0x02; } int main(void) { HARD (); sei(); while(1) { PORTC &=~ (1<<PC3); AC_1(); _delay_us(5); AC_1(); _delay_us(5); AC_2(); _delay_us(5); AC_3(); _delay_us(5); } } ISR(ANALOG_COMP_vect) { PORTC |= (
ADCSRB|= (1<<ACME); sei(); while(1) { ADCSRB |= (1<<ACME); PORTC &=~ (1<<PC3); _delay_us(5); } } ISR(ANALOG_COMP_vect) { PORTC |= (1<<PC3); _delay_us(100); } [/c]
-
Thread
ATmega 1284p Port C
Codebeispiel: [c] int main(void){ pwm_init(); while(1){ DDRC = 0b00000000; PORTC = 0b00000000; _delay_ms(1); DDRC = 0b00111111; PORTC = 0b00000000; _delay_ms(1); DDRC = 0b00111111; PORTC = 0b00111111; _delay_ms(1); } } [/c] vielen Dank
R16,0b00000111 andi R17,0b00111000 or R16,R17 cli ;ab hier nur nötig, wenn PORTC6/7 in R17,DDRC ;anderweitig genutzt werden sollen andi R17,0b11000000 ;ansonsten entfällt das alles bis or R16,R17 ;einschließlich sei ;dieser Zeile
-
Thread
USBN9604 + Atmega32
: Erst die zu lesende Adresse schreiben (wie beim Schreiben), dann PORTC auf Eingang stellen. Dann CS low, RD low, von portc lesen, dann rd und cs wieder high. Problem: Ich lese immer 0b00000000 ein ;/ Mein Testcode macht bisher nix anderes als im Register MCNTRL den
Ok, man sollte PINC statt PORTC einlesen ^^
-
Thread
ltc1665 ansteuern (DAC)
include <util/delay.h> #define SCK PC0 #define DIN PC1 #define CS PC2 void clock(void) { PORTC |= (1<<SCK); _delay_ms(500); PORTC &= ~(1<<SCK); } void daten_senden_eins(void) { PORTC |= (1<<DIN); _delay_ms(500); clock(); } void daten_senden_null(void) { PORTC &= ~(1<<DIN); _delay_ms(500); clock(); } void beginn_daten_senden(void) { PORTC &= ~(1<<SCK); PORTC &= ~(1<<CS); } void ende_daten_senden(void) { PORTC |= (1<<SCK); PORTC |= (1<<CS); } uart_init(); int main(void) { DDRC |= (1<<SCK) | (1<<DIN) | (1<<CS)
-
Thread
Kapazitiver Touchsensor
Elektrode Laden DDRC |= (1<<PC3); //PC3 als Ausgang DDRC &= ~(1<<PC2); //PC2 als Eingang PORTC &= ~(1<<PC2); //Pullup aus PORTC |= (1<<PC3); //PC3 auf high _delay_us(10); //warten //Ladungen verteilen DDRC &= ~(1<<PC3); //PC3 als Eingang PORTC &= ~(1<<PC3); //Pullup aus DDRC |= (1<<PC2); //PC2 als Ausgang PORTC &= ~(1<<PC2); //PC2 auf low _delay_us(10); //warten //Zähler Zaehler++; } while (PORTC & (1<<PC3)); //Abfrage ob PC3 bereits high ist if (Zaehler < 2) { PORTB ^= (
-
Thread
LCD 4bit-Modus
DDRC=0xFF; //PortC ist Ausgang lcd_init(); return 0; } void toggle_E(void) { PORTC|=(1<<PC4); //E-Signal High long_delay(1); PORTC&=~(1<<PC4); //E-Signal low } void lcd_init(void) { long_delay(30); PORTC=0x03; toggle_E(); PORTC=0x03; toggle_E(); PORTC
=com&0x0F; PORTC=com_h; toggle_E(); PORTC=com_l; toggle_E(); long_delay(1); } [/c] erkennt jemand wo das Problem liegt?
-
Thread
MD25-Motor mit RN-Control V1.4 (Atmega32) angesteuert dreht sich nicht
_t n) {PORTB |= (1<<n);} //set PORTB.n high static inline void setportcon(const uint8_t n) {PORTC |= (1<<n);} //set PORTC.n high static inline void setportdon(const uint8_t n) {PORTD |= (1<<n);} //set PORTD.n high //Ports auf LOW setzen static inline void setportaoff(const uint8_t
//Geschwindigkeit rechter Motor {OCR1AL = speed;} void Mlinkszur(void) //Uhrzeigersinn {PORTC |= (1<<PC6); PORTC &= ~(1<<PC7);} void Mlinksvor(void) //mathematischer Drehsinn {PORTC &= ~(1<<PC6); PORTC |= (1<<PC7);} void Mlinksstop(void) //aus { PORTC &= ~(1<<PC6); PORTC &= ~(1<<PC7
-
Thread
Signalauswertung Empfänger (Modellbau)
if(impuls < 47) // Vergleichswert für 1,5ms bei 8MHz und TimerPrescaler 256 PORTC = ~0x00; else PORTC = ~0x01; signalEnd = 0; sei(); } } } [/c] Zur Funktion: Eigentlich ist die Geschichte recht simpel und wird
signalLength = (signal_2nd - signal_1st); if(signalLength < 6) { PORTC = 0xFE; } else { PORTC = 0xFF; } TCCR1B ^= (1<<ICES1); // Capture-Flanke umschalten setMode = 0; // Modus "steigende Flanke
-
Thread
LCD und Makefile Problem
cyblord ---- schrieb im Beitrag #3359195: > Doch die Portzuordnungen. Ja aber nur ob PortD oder Portc .... Diese Einstellung habe ich so belassen mir geht es eher um diese Aussage: // Anpassungen im makefile: // ATMega8 => MCU=atmega8 im makefile einstellen // lcd-routines.c in SRC =
---- schrieb im Beitrag #3359195: >> Doch die Portzuordnungen. > > Ja aber nur ob PortD oder Portc .... Nö. Nicht nur. Auch die einzelnen Leitungen (R/S R/W E) sind in der Regel konfigurierbar. Genauso wie die 4 Datenleitungen. Wobei sich bei letzterem es sich auch oft empfiehlt einen kurzen
-
Thread
Status abfragen, bevor es ins Hauptprogramm geht / BASCOM
0 Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portc.0 , Rs = Portc.1 Config Lcd = 20 * 2 Cursor Off Config Timer1 = Timer , Prescale = 1 Config Int0 = Change Dim Reading As Bit Dim Rc_value As Word Dim Value As Single Dim Signal As String
Rc_read Enable Timer1 Stop Timer1 Enable Int0 Enable Interrupts Config Servos = 1 , Servo1 = Portc.4 , Reload = 10 Cls '################################################### Do Locate 1 , 1 Lcd "Signal:" Locate 1 , 15 Lcd "ms" 'Locate 2 , 1 'Lcd Rc_value Value = Rc_value /
-
Thread
Atmel Mega 8 verhält sich nicht wie in AVR Studio Simulation
von PIN 3/ springt er auf 0x01 bzw. 0x02. Das ganze auf den Atmel geflasht, leuchtet ganz kurz PORTC2 (Also Wert 4) auf, dann springt er auf PORTC0 (Also Wert 1), das Setzen von PIN4 führt zu einem Sprung auf PORTC1 (Also Wert 2), jedoch nur so lange, wie der Taster gedrückt wird, danach erfolgt wieder der Sprung auf PORTC0 (Also Wert 1). PIN3 hat gar keinen Einfluss, offensichtlich wird also immer zu Beginn eines Schleifendurchlaufs der Wert geändert und ich weiß nicht warum. Was ich mich frage, wieso funktioniert
-
Thread
mega32 unterschiedliche Portpegel trotz "gleicher" Initialisierung
Hallo! Fehler beim ATMEGA32 an PORTC, wenn da mal nicht JTAG am Proezessor eingeschaltet ist !? gruß, Bjoern
7Segment/7Segment.html#oben mit dem Unterschied, dass ich digits mit gemeinsamer Kathode habe. PortC stuert die digits, PortA die Segmente.
-
Thread
Interrupt/Timer Problem: Nur einmalige Ausführung
switch_led(LED_DISPLAY,1); wait_ms(10); switch_led(LED_DISPLAY,0); } int main(){ // PORTC for LEDs PORTC = 0xFF; DDRC = 0xFF; // Configure a timer // Clock: 16000000HZ // Prescaler: 1024=>15625 is the clock, CTC Mode TCCR1B = (1<<CS12) | (1<<CS10) | (1<<WGM12); OCR1B
Welcher Controller? (Wegen PORTC -> JTAG-Fuse?)