-
Thread
AVR an Handy C35
= Buffered , Size = 20 Config Serialout = Buffered , Size = 20 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.7 , Rs = Portc.6 'da hab ich mein LCD dran Config Lcd = 16 * 2 '16Zeichen 2Spalten Dim Name As String * 32 Name = "atd+49171
-
Thread
Grafik VFD GU128x64 an Mega32
); comwrite(0b10000110); } int datawrite(a){ PORTD = 0xFF; //CSS AN PORTA = 0xFF; //CD AN PORTC = 0xFF; // WR AN _delay_us(10); PORTD = 0x00; // CSS AUS PORTA = 0x00; //CD AUS _delay_us(10); PORTC = 0x00; // WR AUS PORTB = a; _delay_us(10); PORTC = 0xFF; // WR AN _delay_us(10); PORTB
= 0x00; //CD AUS } int comwrite(a){ PORTD = 0xFF; //CSS AN PORTA = 0xFF; //CD AN PORTC = 0xFF; // WR AN _delay_us(10); PORTD = 0x00; // CSS AUS _delay_us(10); PORTC = 0x00; // WR AUS PORTB = a; PORTC = 0xFF; // WR AN _delay_us(10); PORTB = 0x00; _delay_us(10); PORTD = 0xFF;
-
Thread
Problem mit UART
Hallo, ich bin ein Anfänger und habe dieses Programm für meinen atmega32 geschrieben: Config Portc.7 = Output Dim I As Byte Do I = Inkey() If I = 0 Then Portc.7 = 1 Exit Do else Portc.7 = 0 Print "1" End If Loop Dieses Programm soll den UART auslesen
danke, aber leider funktioniert es immer noch nicht. Mein Code sieht jetzt so aus: Config Portc.7 = Output Dim I As Byte Do If Ischarwaiting() <> 0 Then I = Inkey() If I = 1 Then Portc.7 = 1 Print "0" else Portc.7 = 0 Print "1" End If End If Loop
-
Thread
Verständnissproblem LCD 4-Bit Mode
Schau dir den Unterschied zwischen PORTC = irgendwas; und PORTC |= irgendwas; bzw. PORTC &= irgendwas; an http://www.mikrocontroller.net/articles/Bitmanipulation
aber wenn du die Daten- und Steuerleitungen an Port C hast dann zerschießt du dir mit der Zeile PORTC = data; // Daten auf LCD port kopieren natürlich deine Steuersignale.
-
Thread
1602 LCD mit ATmega8535 und Bascom läuft nicht
"lcd4busy.LBX" $regfile = "m8535.dat" $crystal = 8000000 Config Lcd = 16*2 Const _lcdport = Portc Const _lcdddr = Ddrc Const _lcdin = Pinc Const _lcd_e = 1 Const _lcd_rw = 2 Const _lcd_rs = 3 Cls Locate 1,1 Lcd "Es funktioniert!" [/c] Karl B. schrieb im Beitrag #6988802: Angehängte
LCD Display konfigurieren ' Config Lcdbus = 4 ' LCD 4 Bit Modus Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 40x2 ' Display 40 Zeichen 4 Zeilen Cursor off Noblink CLS ' 'I2C konfigurieren ' $lib "i2c_twi.lbx
-
Thread
der Interrupt für xmega256A3 wird nicht ausgelöst
PIN9 DIGI_PORT.DIRSET = OPTO_PIN; // Port C Pin 0 opto-coupler as digital output PORTC.PIN0CTRL= PORT_OPC_WIREDANDPULL_gc; PORTC.INTCTRL = PORT_INT0LVL_LO_gc | PORT_INT0LVL_MED_gc | PORT_INT0LVL_HI_gc; PORTC.PIN3CTRL = PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc; PORTC.INT0MASK
} /***********************************/ ISR(PORTC_INT0_vect) // interrupt für I/O Port { uart_send_string("\ninterrupt ausgeloest\n"); // Diese serielle Ausgabe wird nicht an Termite angezeigt perioden_dauer = zaehler_auswerten(); interrupt
-
Thread
Unkontulliertes LED geblinke
sbi(PORTC,MOTORAUSGANG_X); } } return(0); } ISR (TIMER2_OVF_vect) { if(motor_x != 0) { toggle(PORTC,MOTORAUSGANG_X); toggle(PORTD,DIODE_X); } TCNT2 = 70; toggle(PORTD,
DDRD = 0b00111111; //Pullup-Widerstände der Eingänge Aktivieren PORTB = 0b00100000; PORTC = 0b00111111; Deine Endschalter haben keinen PullUp.
-
Thread
ICP mit ATmega88 und Multiplexer
(" "); } while(!(PINC&(1 << PC3))); } if (kanal == 1) { PORTC &= ~((1<<PC0) | (1<<PC1) | (1<<PC2)); // Alle Adressleitungen auf 0 } else if(kanal == 2) { PORTC |= (1<<PC0); PORTC &= ~((1<<PC1) | (1<<PC2)); // A auf 1 B
Kanal wählen if (kanal == 4) { kanal = 1; } if (kanal == 1) { PORTC &= ~((1<<PC0) | (1<<PC1) | (1<<PC2)); // Alle Adressleitungen auf 0 } else if(kanal == 2) { PORTC |= (1<<PC0); PORTC &= ~((1<<PC1) | (1<<PC2)); // A auf 1 B
-
Thread
AVR Programmierung C++
SwitchState() { if(PINB&(1<<pin_sw)) return 0; return 1; } void SetLED(int state) { if(state) PORTC|=(1<<pin_led); else PORTC&=~(1<<pin_led); } void SetFan(int state) { if(state) PORTC|=(1<<pin_fan); else PORTC&=~(1<<pin_fan); } void SetGainSig(int state) { if(state) PORTC |= (1<<pin_Gain_sig_En); else PORTC &=~(1<<pin_Gain_sig_En); } void SetGainLo(int state) { if(state) PORTD |= (1<<pin_Gain_lo_En); else PORTD &=~(1<<pin_Gain_lo_En); } void PrintTemp() { for(int i=0; i<4; i++) {
-
Thread
Erfahrung wäre nicht schnell
PORTB &= ~(1<<PB0); } int main(void) { Init(); // Init starten do{ sollwert = 10*PORTC; // einlesen von "sollwert" }while(1); }
. [c] DDRC = 0xff; //PORTC auf Input PORTC = 0xff; //Pull-Ups an PORTC initialisieren ... sollwert = PINC; //auslesen [/c] Liloba schrieb im Beitrag #2288481: > was heist "volatile definieren" ist das ein Typ einer
-
Thread
Pls alle rein
PORTC |= ( 1 << PC0 ); LongWait(ElapsedPressedButton); PORTC &= ~( 1 << PC0 ); LongWait(ElapsedPressedButton); ElapsedIntervall = 0; }
)) { PORTC |= ( 1 << PC0 ); LongWait(ElapsedPressedButton); PORTC &= ~( 1 << PC0 ); //LongWait(ElapsedPressedButton); LongWait(1000); PORTC
-
Thread
xmega port remap
Hallo, versuch mal den PORTC_OUTSET = PIN7_bm; PORTC_DIRSET = PIN7_bm; als Ausgang zu schalten Gruß G.G.
funktioniert nicht. Das Signal bleibt auf PC3 (wo es nicht bleiben soll). Laut Debugger wird das PORTC_REMAP-Register gar nicht beschrieben. Hat jemand vielleicht einen Tipp für mich? Hier mein Code: [c] //Remap TC0D from PC3 to PC7 PORTC_DIRSET = 1<<PIN7_bp; PORTC_REMAP = 1<<3;
-
Thread
ATMega16+Bascom+STK500: Nicht alle Ports werden Ausgänge:-(
output "Hier blinken nur 4 Ausgänge config portb = output "Hier blinken alle außer Ausgang 7 config portc = output "Hier blinken alle 8 Ausgänge !! config portd = output "Hier blinken nur 3 Ausgänge, einer ist immer an do porta = 255 portb = 255 portc = 255 portD = 255 waitms 50 porta = 0
Hallo sorry ich habe portc und Portb oben in meiner Beschreibung vertauscht. portc liefert nur 7 Ausgänge und bei portb leuchtet alles. Und ja, der atmega sitzt im richtigen Sockel (rechts im orangenen von den LEDs gesehen
-
Thread
Register erstellen mit vorhandenen Pins
... uint8_t sreg = SREG; cli(); PORTA = (uint8_t) val; if (val & (1 << 8)) PORTC |= (1 << 1) else PORTC &= ~(1 << 1); if (val & (1 << 9)) PORTC |= (1 << 6) else PORTC &= ~(1 << 6); if (val & (1 << 10)) PORTC |= (1 << 3) else PORTC &= ~(1 << 3); if (val & (1 << 11)) PORTC |= (1 << 5) else PORTC &= ~(1 << 5); SREG = sreg; } [/c]
-
Thread
Benötige hilfe bei ATmega8 Timer
15625 Hz bzw. 1/15625 = 0,064 ms */ bruchteile++; if(bruchteile == 15625) { PORTC ^= (1<<PC5); bruchteile=0; } } (Meine while-Schleife ist jetzt leer) Allerdings tut sich immernoch nichts.
abfragen, und nach einmaligem toggeln wieder zurücksetzen: while(1) { if(bruchteile == 0) PORTC ^= (1<<PC5); flag &= ~(1<<0) } return 0;
-
Thread
geht es noch schneller in ASM?
so sieht es jetzt aus (das Datenregister R17 sei vorher geladen): 'init: 'portb.4 ist data 'portc.2 ist clock in R19, portb '1 in R20, portc '1 andi R20, &HFB '1 für clock=0 in R21, portc '1 ori R21, &H04 '1 für clock=1 out portc, R20 '1 'erstes bit bst R17, 7 '1 bld R19, 4 '1 out portb, R19 '1 out portc, R21 '1 out portc, R20 '1 'zweites bis 8. bit genauso.. das macht also 6 Takte für die Init und 8*5 für die Bits = 46 Takte. Ich glaube, schneller geht's nicht. Wer unter 44 kommt, kriegt
-
Thread
LCD und kein Ende
lcd-routines.c" int sekunde=0; // Variable definieren // ISR einbinden ISR(TIMER1_COMPA_vect) { PORTC ^= (1<<PC5); // Blinken der LED lcd_setcursor(2,1); lcd_data(sekunde); sekunde++; if (sekunde == 9) { sekunde=0; PORTC ^= (1<<PC4); } } int main(void) { lcd_init
== 59) { sekunde=0; PORTC ^= (1<<PC4); } sei(); } Was mache ich denn nun wieder falsch?
-
Thread
Problem mit DA-Wandler
define WR2 (1<<PC3) #define XFER (1<<PC4) void writeDA(uint16_t v) { PORTC = ILE | WR2 | XFER; //Einlesen in input Register _delay_us(1); PORTB = v; _delay_us(1); //Uebergabe der Bits an den input Register PORTC = ILE | WR1; //Sichern
Hast du nicht zufällig PORTC gemeint, welchen ich löschen soll?
-
Thread
Atmega16 + DS18B20 + Timer = LCD Zeichenwirrwarr?
standart aus Ebay) - Atmega16 - Stabile 5V Spannungsversorgung Das Display hängt an: Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.3 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0 Der 1wire Bus ist auf Pin D6. Wenn ich die Routine ohne Timer1 aufrufe, ist alles bestens, das LCD stellt die Werte
-
Thread
Kann man folgenden Code platzsparender schreiben
reset the DDS circuitry. */ SPCR = 0; PORTC |= _BV(0); PORTC &= ~_BV(0); /* * After reset, initiate one W_CLK pulse followed by one FQ_UD pulse * to activate the serial configuration control word. */ PORTB |= _BV(7); PORTB &= ~_BV(7); PORTC |= _BV(1); PORTC &= ~_BV(1); /* * Now, we're ready to hand over the data transmission to SPI. */ SPCR = _BV(SPE) | _BV(DORD) | _BV(MSTR); SPSR = _BV(SPI2X); } [/c] Kann es
-
Thread
LCD kaputt? Text bleicht aus
Auszug) $regfile = "m8def.dat" $crystal = 4000000 CConfig Lcdpin = Pin , Db4 = PortD.2 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Config Lcd = 24 * 2 Config Lcdbus = 4 Cursor = Off Config Adc = Single , Prescaler = Auto Dim Adc_vh As Byte Dim W_vh As Word
= Off Config Adc = Single , Prescaler = Auto Dim Adc_vh As Byte Dim W_vh As Word Adc_vh = Portc.0 Start Adc Main: Cls Locate 2 , 1 W_vh = Getadc(adc_vh) Lcd "wert:" ; W_vh Locate 2 , 10 Lcd "TESTTEST" End If Goto Main PS: ADC ist nebensächlich.
-
Thread
hilfe! Bascom/UART-Interrupt hängt
Config Servos = 2 , Servo1 = Portc.0 , Servo2 = Portc.1 , Reload = 10 Inputstr = "" Main: Servo(1) = Ml * 10 Servo(2) = Mr * 10 Print Ml ; Mr Goto Main Onrxd: Do
* 6 Dim Mr As String * 6 Config Servos = 2 , Servo1 = Portc.0 , Servo2 = Portc.1 , Reload = 10 Inputstr = "" rechtslinks = 0 Main: Servo(1) = Ml * 10 Servo(2) = Mr * 10 Select Case (rechtslinks) Case 1
-
Thread
Linvor Bluetooth Modul antwortet Atmega8 nicht wie erwartet
while ( !(UCSRA & (1<<RXC)) ) { //warten bis senden fertig long_delay(300); PORTC |= ( (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) ); long_delay(300); PORTC &= ( ~(1<<PC0) & ~(1<<PC1) & ~(1<<PC2) & ~(1<<PC3) ); long_delay(300); PORTB = UDR; PORTC
) & ~(1<<PB3) ); long_delay(700); cReceive=UDR; PORTB = cReceive; PORTC = ( cReceive >> 4); long_delay(2000); } PORTC |= (1<<PC4); long_delay(500); PORTC &= ~(1<<PC4); long_delay(150); } } [/c] Equinox
-
Thread
Anfängerfrage AVR GCC
1 << DDD0); // Pin 0 von Port D als Ausgang PORTD |= (1 << PD0); // PD0 im PORTD setzen PORTC |= (1 << DDC0); // internen Pull-Up an PC7 aktivieren for(;;) { // main loop if ( PINC & (1<<PINC0) ) PORTD = PIND ^ ( 1 << PD0 ); // LED
LEDs sind auf dem STK500 mit dem PORTD über das Flachbandkabel verbunden. Genauso die Taster mit PORTC. Beides funktioniert auch einwandfrei, z.B. mit dem Entprellprogramm von Peter D. Solange ich den Taster gedrückt halte geht die LED aus. Wenn ich im falschen Moment drücke, bleibt sie an, aber
-
Thread
Diamex ISP will nicht
angeschlossen. Jetzt konnte folgenden Code flashen [code] $regfile = "m328pdef.dat" Config Portc.5 = Output Do Portc.5 = 1 Waitms 800 Portc.5 = 0 Waitms 800 Loop End [/code] Jetzt blinkt meine LED aber nicht in einem 800ms Abstand (immerhin blinkt sie
angeschlossen. Jetzt konnte folgenden Code > flashen > $regfile = "m328pdef.dat" > > Config Portc.5 = Output
-
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
BASCOM RC5 Aquariumsteuerung
m8def.dat" $crystal = 3684600 Dim Adress As Byte Dim Command As Byte Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 1 Config Rc5 = Pind.7 Config Pind.7 = Input Enable Interrupts Rot Alias Portb.0 Config Rot
-
Thread
Bit auf Variable setzen?
schnellerem Code: [c] $cat test.c #include <avr/io.h> #include <stdbool.h> void f1(bool x) { PORTC= (PORTC & ~(1<<PC0)) | (x<<PC0); } void f2(bool x) { if (x) PORTC= PORTC | (1<<PC0); else PORTC= PORTC & ~(1<<PC0); } [/c] Compilieren mit [code]avr-gcc -c -mmcu=atmega8 -save-temps
-
Thread
Ladung or Entladung eines Kondensator mit Free Running Mode ATmega 8
mitten drinn? und warum summierst du den ADC Wert? Darf man fragen, was das hier [c] if ( PORTC |= 0x01) // Set PC0 [/c] sein soll? Wozu ein if? Welchen Zweck soll das haben?
{ PORTC &= ~0x01 ; //Reset PC0 } } return (0); } Danke im Voraus
-
Thread
Problem beim auslesen den IIC
1 // SDA Port D, Pin 1 #define SCL 0 // SCL Port D, Pin 0 #define SDA_PORT PORTC // SDA Port C #define SCL_PORT PORTC // SCL Port C [/C] Du musst SDA an PC1 hängen und SCL an PC0 und *NICHT* an Port D wie im Kommentar oben. Erste Anweisung
darin, dass sich der Tempsensor nicht angesprochen füllt.. die zeilen #define SDA_PORT PORTC // SDA Port C #define SCL_PORT PORTC // SCL Port C hab ich aus peter f´s i2cmaster.S rauskopiert weil ich snst niergends im programm auser in der datei i2cmaster.S eine
-
Thread
ATMEGA8 in C: 1 Tastendruck --> 2 verschiedene Funktionen -->Hilfe!
TURN_ON_MOTOR( CLOSE ); liest sich nun mal schon viel besser und aussagekräftiger als PORTC |= ( 1 << PC0 ); PORTC &= ~( ( 1 << PC0 ) | ( 1 << PC1 ) ); PORTC |= ( 1 << PC1 ); obwohl es genau dasselbe in anderer Verpackung ist.
Beitrag #2025500: > liest sich nun mal schon viel besser und aussagekräftiger als > PORTC |= ( 1 << PC0 ); > > PORTC &= ~( ( 1 << PC0 ) | ( 1 << PC1 ) ); > > PORTC |= ( 1 << PC1 ); das stimmt, allerdings - muss selber ständig nachschaun! mfg
-
Thread
UART verursacht Reset(?)
dem Oszi (oder wahlweise LED) zu sehen wenn er den Reset durchführt. [avrasm]ldi r16,0xFF out PORTC, r16 call delay100ms call delay100ms call delay100ms call delay100ms ldi r16,0x00 out PORTC, r16 [/avrasm] Vielleicht kannst du ja bei dir mal schaun ob das auch passiert
weil ich das am Oszi besser sehe, als die LED resets. [avrasm] ldi r16,0xFF out PORTC, r16 call ledgreen ... call delay100ms ldi r16,0x00 out PORTC,r16 [\avrasm] Wenns das Steckbrett ist rast ich aus... Aber ich hab hier irgendwo
-
Thread
Zeitproblem UART Daten speichern und mit Timerinterrupt ausgeben.
ISR (TIMER1_COMPA_vect) { /* Interrupt Aktion alle (16000000Hz)/ 362 = 44100 Hz */ PORTC_temp = fifo_get_nowait(&infifo); if (PORTC_temp != -1) { PORTC = PORTC_temp; } }[/c] Wenn ein Byte in der Warteschlange ist (also fifo_get_nowait(&infifo)!=-1) wird der Wert an PORTC ausgegeben, an dem ein DAC hängt. Das Problem ist, dass am Ausgang des DAC nur etwa mit 300 Hz Daten herauskommen. Ich vermute mal, dass sich die Interrupts gegenseitig behindern... Aber im Moment
-
Thread
ARM Luminary LM3S811 GPIO Probleme
6MHZ | SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); GPIOPadConfigSet(GPIO_PORTC_BASE, USER_LED, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); GPIODirModeSet(GPIO_PORTC_BASE, USER_LED, GPIO_DIR_MODE_OUT); GPIOPinWrite(GPIO_PORTC_BASE, USER_LED, 1); for(;;) ; } [/C]
{ unsigned int i; SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); GPIOPadConfigSet(GPIO_PORTC_BASE, USER_LED, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD); GPIODirModeSet(GPIO_PORTC_BASE, USER_LED, GPIO_DIR_MODE_OUT); for(;;) { GPIOPinWrite(GPIO_PORTC_BASE, USER_LED, 0xff); i =
-
Thread
Externer Interrupt INT0 und INT1 mit internen PullUps
aktivieren sei(); // Interrupts einschalten ... } ... ISR( INT0_vect ){ PORTC ^= 0x01; } ISR( INT1_vect ){ PORTC ^= 0x02; }
//Interrupts //---------- ISR( INT0_vect ){ PORTC |= 0x01; } ISR( INT1_vect ){ PORTC |= 0x02; } beide interrupt lösen sofort aus.
-
Thread
PORTA RA0 bis RA3 auf input setzen
pin's //**********Define********************************************** #define LEDl PORTC.RC0 //LED low liegt an Port RC0 #define LEDh PORTC.RC2 //Led high liegt an Port RC2 #define SIGNAL PORTA.RA4 //SIGNAL liegt an Port RA4 #define meml PORTC.RC4
wertl; void main(void) { // Hauptprogramm TRISC = 0x30; // set PORTC 0-3=output, 4+5=input PORTC = 0x30; // set PORTC 0-3 0V
-
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
AD Wandler ADS8320
dabei. #ifdef ADS8320 uint get_adc() // 7822 und 8320 { uint temp; char n, samples=0; PORTC &= ~ADC_CS; // cs auf 0 n = SAMPLES_8320; do { PORTC &= ~ADC_CLK; // clk auf 0 kurz(); samples++; // kurz(); PORTC |= ADC_CLK; // clk auf 1 // kurz();
-bit erscheint n = 16; // immer 16 bit lesen while(n--) { // 16 bit einlesen PORTC &= ~ADC_CLK; // clk auf 0 temp <<= 1; // ergebnis schieben PORTC |= ADC_CLK; // clk auf 1 if(PINC & ADC_DAT) temp++; // bit 1 uebernehmen } PORTC &= ~ADC_CLK; //
-
Thread
GLCD DG12864-12 / Bascom
'3 +5V +5V '4 -9V -9V potmeter '5 /WR PORTC.0 '6 /RD PORTC.1 '7 /CE PORTC.2 '8 C/D PORTC.3 '9 NC not conneted '10 RESET PORTC.4 '11-18 D0-
'3 +5V +5V '4 -9V -9V potmeter '5 /WR PORTC.0 '6 /RD PORTC.1 '7 /CE PORTC.2 '8 C/D PORTC.3 '9 NC not conneted '10 RESET PORTC.4 '11-18 D0-
-
Thread
Micropersonalcomputer
Haupt-Codefresser [C] void LED(int On, int Loop, int MS) { if(Loop) { while(Loop) { PORTC |= (1 << PC0); //An _delay_ms(MS); PORTC &= ~(1 << PC0); //Aus _delay_ms(MS); Loop--; } } else { if(On) PORTC |= (1 << PC0); //An else
void LED(int On, int Loop, int MS) > { > if(Loop) > { > while(Loop) > { > PORTC |= (1 << PC0); //An > _delay_ms(MS); > PORTC &= ~(1 << PC0); //Aus > _delay_ms(MS); > Loop--; > } > } > else > { > if(On) > PORTC |= (1 << PC0)
-
Thread
LCD Routinen aus Tutorial
mov temp2, temp1 swap temp1 andi temp1, 0b00001111 out PORTC, temp1 rcall lcd_enable andi temp2, 0b00001111 out PORTC, temp2 rcall lcd_enable rcall delay50us ret ;erzeugt den Enable-Puls lcd_enable: sbi PORTC, 5 ;Enable high nop ;3 Taktzyklen warten nop nop cbi PORTC, 5 ;Enable wieder low
-
Thread
bit invertieren in C
nicht ganz konform - aber mit CodeVision geht auch: PORTC.2=~PORTC.2; Ich finde es sehr praktisch.
ich benutze immer: Portc.1=!Portc.1 mfg
-
Thread
2x mal Button soll interrupt auslösen hilfe :/
PD2)) // if button pressed x++; } } ISR(TIMER1_COMPA_vect) { if (x >= 2) { PORTC &=~ (1 << 5); // Turn LED on _delay_ms (1000); PORTC |= (1 << 5); // Turn LED off x=0; } } ////////////////////////////////////////////////////////////////////// gruß R.
down + up) != 2) // if no toggle between on off on Flowmeter turn LED on as ALARM { PORTC &=~ (1 << PC5); // turn LED on down = 0; up = 0; t=0; } else // at least one toggle in 100ms { PORTC ^= (1 << PC5); down = 0; up
-
Thread
Atmega8: ähnlich garagentorsteuerung programmieren
ich auch verständlich. Hier mein code bis jetzt: [c] #include <avr/io.h> void stop() { PORTC &= ~(1<<PC0); PORTC &= ~(1<<PC2); } void move(uint16_t dir) { switch (dir) { case 0: PORTC |= (1<<PC1); PORTC |= (1<<PC2); PORTC |= (1<<PC0); break; case 1: PORTC &= ~(1<<PC1); PORTC |= (1<<PC2); PORTC |= (1<<PC0); break; } } int main(void) { PORTD = 0xFF; PORTB = 0xFF; PORTC = 0x00; PORTC |= (1<<PC3); DDRB = 0x00;
-
Thread
Finde Fehler nicht !
of yellow LED { // if OFF PORTC |= (1<<PC1); // yellow LED ON _delay_ms(100); } else { // if ON PORTC &= ~(1<<PC1); // yellow LED OFF _delay_ms(100); } break; /* case 3: _delay_ms(20); if ((PINC & (1<<PC2))==0 )
--------------------------------------------------------*/ // pushbutton on PORTB 1 // LED on PORTC 0 #include <avr/io.h> #include <util/delay.h> int main (void) { DDRC &= ~(1<<DDC1); // set PORTC1 for input other keep unchanged DDRC |= (1<<DDC0); // set PORTC0 as OUTPUT for LED
-
Thread
LED mit einaem Taster andimmen, mit anderem ausdimmen.
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 Config Pinc.1 = Input Portc.1 = 1 Taster_plus Alias Pinc.1 Config Pinc.2 = Input Portc.2 = 1 Taster_minus Alias Pinc.2 Do Debounce Taster_plus , 0 , Led_plus , Sub Debounce Taster_minus , 0 , Led_minus , Sub Loop End
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 Config Pinc.1 = Input Portc.1 = 1 Taster_plus Alias Pinc.1 Config Pinc.2 = Input Portc.2 = 1 Taster_minus Alias Pinc.2 Pwm1a = 1 Do Debounce Taster_plus , 0 , Led_plus , Sub Debounce Taster_minus , 0 , Led_minus ,
-
Thread
problem: led blinken (über timer interrupt)
Entwicklungsumgebung AVRStudio folgendes problem mit nachfolgendem Code: Nach reset wird auf PortC 0b?1111111 ausgegeben. Wenn der Timer Interrupt kommt, wird PortC eingelesen, invertiert und wieder auf PortC ausgegeben. (sollte dann etwa auf 0V ausgegeben werden). An den Ports liegt allerdings
;Port toggeln in temp, PINC <<<<<<<<<<<< ??? com temp out PORTC, temp
-
Thread
Zeitschleife mit Variablen
Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.3 = Output Config Portc.5 = Output Config Portc.4 = Output Config Timer0 = Timer , Prescale = 256 Enable Timer0 On Timer0 Timer0_isr Enable Interrupts Do X = 1 A = 1 Waitms 200 X = 0 Y = 1 Waitms 200
1 D = 1 Waitms 200 X = 0 Y = 1 Waitms 200 Y = 0 D = 0 Loop End Timer0_isr: Portc.5 = X Portc.4 = Y Portd.0 = A Waitms 2 Portd.0 = 0 Portd.1 = B Waitms 2 Portd.1 = 0 Portd.2 = C Waitms 2 Portd.2 = 0 Portd.3 = D Waitms 2 Portd.3 = 0 Portc.5 = 0 Portc
-
Thread
Wieder einmal Temperaturmessung mittels PT1000.
Dysplay zeigt mir keine Werte an. Tja, kürze das Programm bis nur config lcdpin = pin , db4 = portc.2 , db5 = portc.3 , db6 = portc.4 , db7 = portc.5 , E = portc.1 , Rs = portc.0 config Lcd = 20 * 4 Cls Cursor off Locate 1 , 1 Lcd "Test " stehen bleibt. Wenn du dann immer noch nichts
-
Thread
Globale Variablen im ISR
include <avr/interrupt.h> #include "uart.h" int main() { uart_init(); DDRC = 0xFF; // PORTC Ausgang sei(); while (1) { PORTC = uart_string[0]; _delay_ms(5000); PORTC = uart_string[1]; _delay_ms(5000); PORTC = 0xFF; _delay_ms(50); PORTC = 0x00; _delay_ms(50); PORTC = 0xFF; _delay_ms(5000); } return 0; // never reached } [/c] In jedem File wird das und nur das #includ-iert was tatsächlich in diesem File (sei es Header oder C-File) notwendig