-
Thread
Taktfrequenz im AVR Studio5 angeben
DDB6); //Port Pin DC6 zum Ausgang machen int n =0; while(1) { SETBIT(PORTC, PORTC6); for (n=0; n<10; n++) _delay_ms(100); CLEARBIT(PORTC, PORTC6); for (n=0; n<10; n++) _delay_ms(100); } return(0); } [/c] Die LED am Ausgang sollte
-
Thread
Probleme beim ansteuern des PC1602F B
B anzusteuern, aber das Display zeigt absolut keine Reaktion. Die Datenleitungen sind alle an PORTC. RS, R/W, E sind an PORTB Pin 0, 1, 2 Ich benutze folgenden code: void initialiselcd(void) { _delay_ms(15); PORTB &= ~(1<< PB0) & ~(1<< PB1) & ~(1<< PB2); PORTC = 0x01; _delay_ms(1); PORTB |= (1<< PB2); _delay_ms(10); PORTB &= ~(1<< PB2); PORTC = 0x02; _delay_ms(1); PORTB |= (1<< PB2); _delay_ms(10); PORTB &= ~(1<< PB2); PORTC = 0x06; _delay_ms(1); PORTB |= (1<< PB2); _delay_ms(10); PORTB &= ~(1<< PB2); PORTC
-
Thread
Probleme mit PIC 16F676
movlw b'000000' movwf TRISC Bank0 ; Grundwerte einstellen clrf PORTA clrf PORTC ; Sprungadresse zum Hauptprogramm Goto Hauptprogramm ;*********************************************************************************************************************************** ; Hauptprogramm
****************************************************** Hauptprogramm btfss PORTA,0 bsf PORTC,0 btfsc PORTA,0 bcf PORTC,0 bcf PORTC,1 bcf PORTC,2 bcf PORTC,3 bcf PORTC,4 Goto Hauptprogramm ;************************************************************
-
Thread
atmega8-Timer1 zu langsam
welches die Ziffern an die 7Segmentanzeigen weiter gibt. Diese sind jeweils zwischen Pin5 und Pin0 des PORTC angeschlossen und werden darüber gemultiplext. Es sind 7Segmentanzeigen mit einer CommonAnode. Zum Multiplexen nutze ich den Timer1 der mit 300Hz zwischen den einzelnen Anezigen hinunherschaltet
out_data[4] = anzeige.stunde / 10; out_data[5] = anzeige.stunde % 10; } } [/c] PORTC = stelle[s]; Hier brauchst du ganz sicher nicht ganze 8 Bits des Ports. Mach also besser eine maßgeschneiderte [[Bitmanipulation]].
-
Thread
DotMatrix 16x4 in C ansteuern
// beliebigen Postion anfangen #ifndef LCD_PORTS #define LCD_PORTS #define LCD_PORT PORTC #define LCD_DDR DDRC // 4 Bit LCD Datenbus DB4-DB7, das unterste Bit DB4 kann auf den Portbits 0..4 liegen // LCD DB4-DB7 <--> PORTC Bit PC0-PC3 #define LCD_DB PC1 // LCD Steuersignale RS und EN // LCD RS <--> PORTC Bit PC4 (RS: 0=Data, 1=Command) #define LCD_RS PC6 // LCD EN <--> PORTC Bit PC5 (EN: 1-Impuls für Daten) #define LCD_EN PC5 #endif // LCD_PORTS /////////////
-
Thread
[v] LCDs 320x240 s/w, 6 Zoll, Touch, inkl Controller
nur noch mal sicherheitshalber ^^ --> #define SED1335_DATA_PORT PORTC #define SED1335_DATA_DIR DDRC #define SED1335_DATA_PIN PINC #define SED1335_CONTROL_PORT PORTD #define SED1335_CONTROL_DIR DDRD #define SED1335_CONTROL_PIN PIND #define SED1335
im Beitrag #3903384: > nur noch mal sicherheitshalber ^^ --> > > #define SED1335_DATA_PORT PORTC > #define SED1335_DATA_DIR DDRC > #define SED1335_DATA_PIN PINC > > #define SED1335_CONTROL_PORT PORTD > #define SED1335_CONTROL_DIR DDRD > #define SED1335_CONTROL_PIN PIND >
-
Thread
Hilfe!: Quizmaster mit 8 Tastern
$regfile = "m8def.dat" $crystal = 1000000 Config Pinc.0 = Input 'Rücksetztaster als Eingang Portc.0 = 1 '==> Sollte das nicht Portc.0=1 heißen für den Pullup an c.0 ? Config Portd = Input 'Andere 8 Taster als Eingänge Portd = 1 'Alle Pullups für Taster an Config Portb = Output
DDRB = 0xFF; // output on PORTD = 0xFF; // input: pullups on PORTC = 1; // PC.0 = reset input while( 1 ){ PORTB = 0; // all outputs off mask = 1; input = ~PIND; // invert (low active) do{
-
Thread
AT90USB646 USB wird nicht erkannt
Programm eingespielt und hänge mit dem Osci auf PC0 und PC1: [c] int main() { DDRC = 0xFF; PORTC = 0xFF; int cntr = 0; while(1) { if(cntr == 255) { PORTC |= (1<<PC0); cntr = 0; } else { PORTC &= ~(1<<PC0); cntr++; } } }
-
Thread
ATmega644 Timer1 CTC-Mode Timerinterrupt unregelmäßig
ldi r24, Low (HWRD(COUNT)) ldi r25, High(HWRD(COUNT)) ldi r16, 0x00 out PORTC, r16 _Loop32bit: subi r22, 1 sbci r23, 0 sbci r24, 0 sbci r25, 0 nop nop brne _Loop32bit ldi r16, 0xFF out PORTC, r16 _End: rjmp _End [/avrasm] Schwingt der Quarz mit genau 8 Mhz wird eine an PortC angeschlossene LED exakt eine Stunde lang leuchten. Schau, wieviele Sekunden kürzer oder länger sie wirklich leuchtet (*) und rechne die relative Abweichung aus. (*) Wobei Du natürlich sicherstellen
-
Thread
hd44780 initialisierung
Du setzt deine PORTC Pins für das LCD nicht auf Ausgang.
holger schrieb im Beitrag #2929970: > Du setzt deine PORTC Pins für das LCD nicht auf Ausgang. Das stimmt natürlich. Nachdem ich dies tat blinken sehr kurz alle Pixel auf beim flashen, dann ist wieder ein Pixelloses Display zu sehen... holger schrieb
-
Thread
Studio 4 und my-smart-USB-light
angeschlossen. Nach Definition von stack und den Ports lautet der Anfang meines Programms: sbi PORTC,4 ldi status,0 ;ist als r20 definiert sbi PORTC,1 nn: RJMP nn .... Im debug Mode läuft das Programm bis zum loop nn. Auf dem Chip leuchtet zwar die LED 4 auf, das Programm kommt
zu LED 1. Wenn du die Zeile "ldi status,0" auskommentierst, geht es dann? Wenn du die Zeilen "PORTC,4" und "PORTC,1" vertauschst, verscheibt sich dann der Fehler auf die andere LED oder ist es wieder LED 1 die dunkel bleibt? Nächstes mal bitte den ganzen Quelltext und den Schaltplan zeigen.
-
Thread
[AVR][ATMega8]Problem mit PortB6 und PortB7 als Eingang an Schalter
das Einlesen und Auswerten des Eingangs erfolgt if(PINB&0x40) // PB6 - oben { sbi(PORTC,2); } if(PINB&0x80) // PB7 - unten { cbi(PORTC,2); } if(!PINB&0x80 && !PINB&0x40) // Mittelstellung --> beide Pins = 0 { // DIESER ZUSTAND WIRD
jetzt :D So sieht mein Quellcode jetzt aus: [c] if(!(PINB&0x40)) // PB6 - oben { sbi(PORTC,2); } if(!(PINB&0x80)) // PB7 - unten { cbi(PORTC,2); } if(PINB&0x80 && PINB&0x40) // Mittelstellung --> beide Pins = 0 { cbi(PORTC,2);
-
Thread
DS1990A und ATmega 8
1wire = Portb.1 Config Lcd = 16 * 2 ' LCD 16x2 mit HD 44780 Controller Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 Dim Rom_data(8) As Byte Dim I As Byte , W As Word Declare Sub Crc8_check() Cls Do Rom_data(1) = 1wsearchfirst
-
Thread
AVR-Simulator im AVR Studio
möchte kann ich während der Laufzeit: erstens nicht die das 1. I/O Pin am PORTC "an- ausschalten" zweitens ändert sich der Portzustand an PORTB nicht sichtbar? Habt Ihr eine Idee was ich falsch mache respektive nicht richtig eingestellt habe? Programmablauf per Einzelschritt
{ // Datenrichtung an PORTB: Alle Pins sind Ausgang DDRB = 0xff; // Datenrichtung an PORTC: Alle Pins sind Eingang DDRC = 0x00; // Interner Pullupwiderstand an PC0 einschalten PORTC |= (1<<PC0); while(1) { // wenn GENAU JETZT HIGH an PC0 anliegt // Pullup an
-
Thread
Wert eines Knopfes lesen
Programm schreiben, das alle Ein- und Ausgänge prüft. Als Ausgänge habe ich nur 4 LEDs (verbunden an PORTC0-3), und die kann ich problemlos steuern (mit einem anderen Programm alle einzelnen geprüft). Dazu habe ich zwei Eingänge (angeschloßen an PORTD2+3). Als Testprogramm habe ich was in der Art geschrieben: [c] // PORTD2 und 3 als Eingang DDRD &= ~(1<<2); DDRD &= ~(1<<3); // PORTC0-3 als Ausgang DDRC |= (1<<0) | (1<<1) | (1<<2) | (1<<3); while(1 == 1) { if(bit_is_set(PIND_PIN, 2)) PORTC &= ~2; else PORTC |= 2; } [/c] Nun bleibt das LED2 immer an, egal
-
Thread
Zerstörte Ausgänge am Atmega16 16PU am Pollin Evaluation Board Ver 2.01
Hi Hast du das JTAG-Imterface abgeschaltet? Sonst sind einige PINs von PortC blockiert. MfG Spess
Bei einigen AVRs liegt auf PORTC das JTAG. Entweder per Fuse-Bit oder per Befehl das JTAG disablen.
-
Thread
uC liest Taster nicht richtig ein - warum?
Limit erreicht if ((antiBounceCounter < CNT_2S) && (KEY_PIN & (1<<KEY_PINNO))) { PORTC |= (1<<PC1); //zur Signalisierung wait100(); wait100(); PORTC &= ~(1<<PC1); } if ((antiBounceCounter > CNT_2S)) //länger als 2sekunden betätigt { PORTC |= (1<<PC1); //zur Signalisierung wait100(); wait100(); PORTC &= ~(1<<PC1); } } } [/c] Definitionen: [c] #define CNTMIN 7 // Min. Zeit um Tastendruck
-
Thread
XMEGA SPI Registerfehler
Hier der code für den ATXMEGA128A3: [c] int spi_init_master(unsigned char port) { PORTC_DIR |= (1<<DD4); ///SS pin as in/out must be hold high PORTC_OUT |= (1<<DD4); //Driven high PORTC_DIR |= (1<<DD5); //MOSI pin as output PORTC_DIR &= ~(1<<DD6); //MISO pin as input PORTC_DIR |= (1<<DD7); //SCK pins as output SPIC.CTRL = 0x00; SPIC.CTRL|=(1<<SPI_CLK2X_bp); //Doubles Frequency in Master Mode SPIC.CTRL|=(1<<SPI_DORD_bp);
-
Thread
Atmega 16 PWM über Komparator unterbrechen
lcd_string("Akku"); lcd_setcursor( 0, 2); lcd_string("leer!"); _delay_ms(1000); PORTC &= ~(1 << PC0); } return 0; } [/c]
in der Nullposition ist while(1) { if (pwm == unten) { break; } } PORTC |= (1 << PC0); } [/C] kann man ganz leicht machen [C] void Knueppelstellung(void) { while( pwm != unten ) ; PORTC |= (1 << PC0); } [/C] das ist erstens kürzer und zweitens
-
Thread
Absturz nach Spannungsabschaltung
//Reed 0 DDRD &=~(1<<RFM_IRQ); //IRQ_IN //interne Pull-Up-Widerstände einschalten PORTC |= (1<<DIP1); //DIP-Schalter PORTC |= (1<<DIP2); //DIP-Schalter PORTC |= (1<<DIP3); //DIP-Schalter PORTC |= (1<<DIP4); //DIP-Schalter PORTD |= (1<<REED_0); //Reed-Kontakt
-
Thread
LCD Variableninhalt ausgeben, itoa()
while(1){ if(Empfang1){ PORTC = ~a; Empfang1 = 0; } if(Empfang2){ lcd_string(az); Empfang2 = 0; } } } Bitte um Hilfe. Danke im voraus.
while(1){ if(Empfang1){ PORTC = ~a; Empfang1 = 0; } if(Empfang2){ lcd_string(az); Empfang2 = 0; } } } [/c] Danke über die Infos zur Formatierung.
-
Thread
DS18S20 auslesen (finde den fehler nicht)
ow_reset() stimmt also der ds18s20 antwortet So gesehen JA! Schmeiss mal diese Code Zeilen PORTC |= (1<<PC5) und das PORTC &= ~(1<<PC5); raus Es reicht völlig mit DDRC zuarbeiten. PULL-UP Ein- und Auschalterei ist völlig überflüssig. Und mach das hier endlich in main rein. PORTC =
-
Thread
Bitschubserei / Testerei (kein Osterei) in AVR GCC klappt nicht
Korb_getroffen) { ... } [/c] Makros helfen auch bei Schaltausgängen: [c] #define Sirene_an PORTC |= (1<<PC1) #define Sirene_aus PORTC &= ~(1<<PC1) if ... { Sirene_an; } else { Sirene_aus; [/c] Falls dir solche Makros suspekt sind, schreibe stattdessen Funktionen mit sprechenden Namen. [c] bool Sabotage_erkannt() { return PortB & (1<<PB4) } void Sirene_an() { PORTC |= (1<<PC1) } if (Sabotage_erkannt()) { Sirene_an(); } [/c] Gerade bei AVR sind Funktionsaufrufe "billig". Außerdem optimiert der Compiler solche einzeiligen Funktionen meistens komplett
-
Thread
Variablenübergabe bei _delay_ms
arbeiten. Mögliche Lösung: [c]void Ebenen_ansteuern(unsigned char ebenen, unsigned char dauer) { PORTC=ebenen; while(dauer--) _delay_ms(1); } [/c]
Noch ne Möglichkeit: Makro (etwa so): [c] #define Ebenen_ansteuern(ebenen, dauer)\ do{\ PORTC = ebenen;\ _delay_ms(dauer);}\ while(0) [/c]
-
Thread
Die ersten Versuche in C
anschaust, wird dir auffallen, das die Fallunterscheidung sich nur darin unterscheidet, das du in PORTC ein anderes Muster lädst: [c] TCNT0=128; // Preload für Timer Interrupt 128 = 1ms switch(in) { case0: // Digit 0 { PORTC = LED_off; // Alle LEDs aus SPDR =
RCK); // RCK Low PORTB |= (1<<RCK); // RCK High - Daten werden in Register Ÿbernommen PORTC = ebene_0; // LEDs fŸr ebene 0 an break; } [/c] Du könntest also den Grossteil der Routinen gemeinsam machen und nur das Setzen des PORTC dann mit switch-case machen. Ausserdem ist
-
Thread
Mehrere Ports in arrays möglich?
PORTC alle Segmente belegen, jedoch das letzte musste ich auf PB2 legen(auf das letzte Segment also der Punkt kann ich verzichten) [segment_2] Nun mein Problem: Sobald ich ein char schreibe und das dann
SegmentBits -> untere 4Bits auf PORTA */ PORTB PIN 7||| /* Segment Bit3 -> Bit4 auf PORTB */ PORTC PIN 432 /* untere 3 SegmentBits -> Bits2..4 auf PORTC */ [/code] - Segmentwert in temporäre Variable übernehmen - gewünschte Bits maskieren und verschieben - Zielbits löschen - mit PORTx
-
Thread
LCD-display 2.zeile?
0x80); _delay_ms(1); } void LCD_commando(unsigned int befehl) { PORTD= befehl; PORTC= (0<<RS)|(0<<RW)|(1<<EN); _delay_ms(1); PORTC= (0<<RS)|(0<<RW)|(0<<EN); _delay_ms(50); return; } void LCD_write(unsigned char buchstabe) { PORTD = buchstabe; PORTC = (1<<RS)|(0<<RW)|(1<<EN); _delay_ms(1); PORTC = (1<<RS)|(0<<RW)|(0<<EN); return; } void LCD_write_string(unsigned char str[]) { int i=0; while (str[i] != 0) { LCD_write(str[i]); i++; } }
-
Thread
einfaches programm
DDRC |= (1<<DDC2) | (1<<DDC3) |(1<<DDC4) |(1<<DDC5); DDRB &= ~(1<<DDB0); if (PINB &(1<<PINB0)) { PORTC |= (1<<PC2); } else { PORTC &= ~(1<<PC2); } } ich hoffe ihr könnt mir helfen :) Dankeschön :)
DDC5); DDRB &= ~(1<<DDB0); while(1) // do forever { if (PINB &(1<<PINB0)) { PORTC |= (1<<PC2); } else { PORTC &= ~(1<<PC2); } } } [/c]
-
Thread
ADC-Wert nicht linear beim Einlesen
Kommentar steht. // ADC Port als Eingang, Pullups sicher ausschalten DDRC = (1 << DDC0); PORTC &= ~(1 << PC0);
schrieb: >> // ADC Port als Eingang, Pullups sicher ausschalten >> DDRC = (1 << DDC0); >> PORTC &= ~(1 << PC0); > > Damit machst du den Pin zum Ausgang, nicht zum Eingang. Oh mein Gott, natürlich. So ist es, wenn man sich darauf verlässt, was man in das Kommentar schreibt, dann findet man
-
Thread
Problem mit Portexpander und I²C
i2c_twi.lib" '############################## 1²C Bus ########################## Config Sda = Portc.1 'Pin23 Config Scl = Portc.0 Config Portc.1 = Output Config Portc.0 = Output 'Pin22 I2cinit Waitms 200 ''''Portexpander
-
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
Display anteuern - was muss wohin gelötet werden?
Welche Pins müssen wie verbunden sein? Das ist ein Pollin 128x64 display. Ich glaube ich muss PORTC mit den Steuerkabeln verbinden wie definiert, und dann PORTC die 8 Steuerbits. Stimmt das? [code] // Die muss ich so mit Portc verbinden. OK - easy #define LCD_E PC5 #define LCD_RW PC4 #define
LCD_RES PC1 inline void LCD_Write(char isData,char data) { PORTB=data; if (isData) PORTC|=(1<<LCD_A0); else PORTC&=~(1<<LCD_A0); // set bit 'LCD_E' -> write PORTC|=(1<<LCD_E); // asm volatile("nop"::); // unset bit 'LCD_E' -> stop write PORTC&=~(1<<LCD_E);
-
Thread
LM75 mit Mega88PA auslesen
Frage zum Auslesen des Temperaturregisters. Ich gebe das High-Byte und das Low-Byte direkt am PortC und PortB aus und lasse mir das Ergebnis mit LED´s anzeigen. Das Ergebnis bei Raumtemperatur (rund 22°C): High Byte: 0010 0000 = 0x20h Low-Byte: 0001 0111 = 0x17h Lt. Datenblatt sollte das
hih byte Low_Byte = i2c_readNak(); // read low byte PORTC = High_Byte; // output high byte on the LED's PORTB = Low_Byte; // output low byte on the LED's i2c_stop(); } _delay_ms(
-
Thread
LED leuchten lassen Gesperrt
; _delay_ms(500); PORTC ^= (1<<PC1); _delay_ms(500); //GElb aus PORTD |= (1<<PD7); //alle Ampeln sind aus PORTC |= (1<<PC4); PORTC |= (1<<PC1); PORTB ^= (1<<PB0); _delay_ms(500); //Fußgänger 1 Rot Ein PORTD ^= (1<<PD6); //Fußgänger 2 Rot Ein _delay_ms(500); PORTC ^= (1<<PC5); //Auto 1 Rot Ein _delay_ms(500); PORTC ^= (1<<PC2); //Auto 2 Rot Ein _delay_ms(500); PORTC ^= (1<<PC4); //Auto A1 und A3 kommt gelb dazu _delay_ms(500); PORTD |
-
Thread
Genauigkeit interner Oszillator Mega8 ...
Erweiterungsmöglichkeiten - PortB komplett durch 8bit ADC verwendet - PortD komplett durch 8bit ADC verwendet - PortC steuert via Software PWM zwei Pumpen PC0&PC1 (ist so :( ) - PortC Pin5&4 ist TWI=I2C Slave - PortC Pin2&3 ebenfalls ADC - Frei nur noch PC6 Aufgabe: Dritte Pumpe soll 30 Minuten angehen, wenn
-
Thread
wie kann ich Flanken detektieren
Abfragen) und PORT C (8 LED): #include <avr/io.h> int main(void) { PORTB = 0; DDRB = 0; PORTC = 0; DDRC = 0xFF; unsigned char temp; unsigned int i; while (1) { temp = PINB; //do somethin else //... // if (temp != PINB) //wenn Änderung { for (i = 0x01; i <= 0x80; i = i
if ((temp & i) ^ (PINB & i)) //wenn Unterschied { if(PINB & i) //wenn H-Input PORTC |= i; //dann H-Output else PORTC &= ~i; //L-Output } } } } return 0; }
-
Thread
Ein "kleines" Problemchen in meinem Programm
Z1 und Z2 sind die 2 Zeilen im Display Ich verwende ein DS18S20 Sensor Plus Minus Ausgang am Portc.5 angeschlossen
aufgerufen wird und die Ausgabe gemacht wird. > Ich verwende ein DS18S20 Sensor Plus Minus Ausgang am Portc.5 Mit einem Schaltplan könnte ich mir das besser vorstellen.
-
Thread
Taster funktioniert nicht obwohl Simulation richtig abläuft
(PIN A3 low) { PORTC = (1<<PC5); //wenn Taster gedrückt LED an P5 an } } } [/c] Ich hoffe jemand hat ein Tipp für mich. Vielen dank schonmal Viele Grüße Stefan
Probiere es mal mit: [c] if (!(PINA & (1<<PINA3))) //Taster an A3 gedrückt (PIN A3 low) { PORTC = (1<<PC5); //wenn Taster gedrückt LED an P5 an } else { PORTC = 0x00; //!!! LED ausschalten } [/c] lg, david
-
Thread
Character LCD für AVRs mit 4bit Bus
200000-5) Und natürlich müssen die Port-Zuweisungen für die Controls und 4bit-Daten LCD_rs_ = (PORTC<<8) + 1 LCD_rsd_ = (DDRC<<8) + 1 LCD_e_ = (PORTC<<8) + 3 LCD_ed_ = (DDRC<<8) + 3 LCD_wr_ = (PORTC<<8) + 2 LCD_wrd_ = (DDRC<<8) + 2 ; LCDdout = PORTC LCDdin = PINC LCDddr = DDRC auf
-
Thread
Atmega328P Firmware hängt nach Watchdog Reset
for(;;){ // main event loop wdt_reset(); //restart watchdog timer PORTC=(PORTC & ~0x3E) | ((counter >> 11) & 0x3E); //LED blinking action char key=PINB & 1; PORTC=(PORTC & ~1) | key; //output to LED, normally high counter--; if (key==0){
-
Thread
USART TXC Interrupt
/delay.h> int main(void) { DDRD = 0xFF; DDRB = 0xFF; DDRC = 0xFF; PORTC= 0xFF; //test led an //---USART config registers--- //UCSRA |= (1<<UDRE); UCSRB |= (1<<TXCIE) | (1<<TXEN); //rxc interrupt enable, transmitter enable alternative: 1<<TXCIE UCSRC |=
synchron, 8-bit, Rising XCK Edge UBRRL=25; //2400bps error 0.2% sei(); while(1) { PORTC=0xFF; } } ISR(USART_TXC_vect) { UDR=0xFF; while ( !(UCSRA & (1<<UDRE)) ); PORTB = 0x00; _delay_us(10); PORTB = 0x00; PORTC = 0x00; //schaltet test led aus }
-
Thread
ATXmega - Pin Eingang oder Ausgang
0x0B; // RES, AWG, D/C, R/W // Initial Value PORTB.OUT = 0x00; // // Initial Value PORTC.DIR = 0x00; // LOGIC PORTC.INT0MASK = 0x01; // PC0 (SDA) will be the interrupt 0 source PORTC.INT1MASK = 0x80; // PC7 (SCK) will be the interrupt 1 source PORTD.DIR = 0x1F
/ VP1 Map to PORTE, VP0 Map to PORTB PORTCFG.VPCTRLB = 0x32; // VP3 Map to PORTD, VP2 Map to PORTC key = 0; [/c] Vielen Dank Fabian
-
Thread
MPLAB X und PICkit 3 - Plötzlich "failed to program device"
CP_OFF & _MCLRE_ON org 0 Start: movlw ~(1<<T0CS) option MOVLW 0h TRIS PORTC CLRF PORTC BSF PORTC,0 GOTO $ END Erzeugt beim Bauen keine Fehler. Ist es eigentlich normal, dass er manchmal "waiting for unfinished Jobs" anzeigt und dann nach Abbruch
-
Thread
programmieren funktioniert nicht
{ volatile uint16_t i; volatile uint16_t ii; //PORT C Output; DDRC = 0xFF; PORTC = 0xff; // Port C BitMuster 1111 1111 while(1) { for(ii=0; ii<4; ii++) { for(i=0;i<40000;i++); } PORTC =~ PORTC; // Port C invertieren } }
-
Thread
Frage zu Compiler-Optimierung
hoffe, alle arbeiten gleich. wenn ich eine Funktion habe: [c] int var; var = funktion( ); PORTC = var; [/c] ich definiere also eine zwischenzeitliche Variable "var" , das dient der Übersicht. Natürlich kann ich auch schreiben: [c] PORTC = funktion( ); [/c] Das macht den Code kleiner
Wenn es PORTC = funktion( ); tut, würde ich das niemals durch int var; var = funktion( ); PORTC = var; ersetzen. Was soll denn dadurch übersichtlicher werden?
-
Thread
ADC + Schieberegister + PORTA
############# ' Einstellen des LCD Display's von myAVR in BASCOM 'Config Lcdpin = Pin , Db4 = Portc.7 , Db5 = Portc.6 , Db6 = Portc.5 , Db7 = Portc.4 , E = Portc.3 , Rs = Portd.7 'Config Lcd = 16 * 2 '##########################################################################################
################################################ 'configure the scl and sda pins Config Sda = Portc.1 Config Scl = Portc.0 'address of ds1307 Const Ds1307w = &HD0 ' Addresses of Ds1307 clock Const Ds1307r = &HD1 Config Clock = User
-
Thread
Timer Problem
wird, die dann beim nächsten Interrupt ins OCR geschrieben wird. if(NrOverflow % 2 == 0) PORTC &= ~(1 << PC0); else {PORTC |= (1 << PC0);} könnte man auch so machen: if(NrOverflow & 0x01) PORTC |= (1 << PC0); else {PORTC &= ~(1 << PC0);}
-
Thread
DRAM und Refresh
//reload timer outp(TI1_L, TCNT1L); for (i=0;i<1024;i++) // 1024 cycles { cbi(PORTC,PC3); // CAS lo cbi(PORTC,PC2); // RAS lo sbi(PORTC,PC3); // CAS hi sbi(PORTC,PC2); // RAS hi } } Siegfried
-
Thread
Atmega16 Taster an Port C einlesen und Display-Ausgabe.
uint8_t eing=PINC; eing = eing&0x3C; eing = eing<<2; return eing; } void ResetRS() { PORTC &=0x7F; } void SetRS() { PORTC |=0x80; } void SetE() { PORTC |=0x40; } void ResetE() { PORTC &=0xBF; } void SchreibeReg(uint8_t reg) { ResetRS(); _delay_ms(1);
-
Thread
Nochmal Hilfe zum DOGXL
while(1) { //test ob uC läuft DDRC = 0xff; //AUSGANG PORTC=0b11111111 ; //LED } return 0; }
initialisieren //Hauptschleife while(1) { DDRC = 0xff; //AUSGANG PORTC=0b11111111; //LED } return 0; }