-
Thread
vusb Probleme - allerdings nur auf PCB
io.h> int main(void){ DDRC = _BV(PC0) | _BV(PC1); while(1){ PORTC |= _BV(PC0); _delay_ms(100); PORTC ^= ~_BV(PC0); _delay_ms(100); PORTC |= _BV(PC1); _delay_ms(100); PORTC ^= ~_BV(PC1); _delay_ms(100); } } [/c] rennt amal... allerdings immer noch kein usb! am breadboard immer noch wunderbar am laufen... langsam wirds merkürdig... soll
-
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
Attiny 861 - nach reset anderes verhalten
define LED_OFF PORTA.OUT |= LED // Schematisch D1 = AUS #define TASTER !(PORTC.IN & ~TA) // Schematisch SW1, Sensor meldet ob Roboter auf Position steht int main(void) { _delay_ms(1000); // PORT PORTA.DIR = 0b10000100; PORTC.DIR = 0b0000; /
0x08 //PC3 is SW1 #define TASTER ((PORTC.IN & TA)==0) [/c]
-
Thread
SPI Kopplung von ATmega8 und ATtiny 2313
Servonummer 1-6 ldi R16,0b11110111 and R15,R16 ; Bit 3 löschen Daten_An_Slave2:cbi PORTC,2 ; Slaveselect durch PORTC2 auf low rcall Datentransfer sbi PORTC,2 ; deselektieren ret Daten_An_Slave1:cbi PORTC,1 ; Slaveselect durch PORTC1 auf low rcall Datentransfer sbi PORTC,1 ; deselektieren ret [/avrasm] und jetzt der ATTiny 2313 [avrasm] mainloop: ;wdr sbic PINB,0 ; warten bis Slaveselect, low-Pegel an SS startet den Ablauf rjmp mainloop
-
Thread
Fenster/Türkontakte auswerten
PC1 als Eingang PORTC |= (1<<PC1); // internen Pull-Up an PC1 aktivieren DDRC &= ~(1<<DDC2); // Pin PC2 als Eingang PORTC |= (1<<PC2); // internen Pull-Up an PC2 aktivieren DDRC &= ~(1<<DDC3); // Pin PC3 als Eingang PORTC |= (1<<PC3); // internen Pull-Up an PC3 aktivieren DDRC &= ~(1<<DDC4); // Pin PC4 als Eingang PORTC |= (1<<PC4); // internen Pull-Up an PC4 aktivieren DDRC &= ~(1<<DDC5); // Pin PC5 als
-
Thread
Ports für GLCD
anschliesse, diesen Port benötige ich jedoch für den ADC, daher dachte ich mir, ich nehme halt ganz einfach portC als Dataport, alles entsprechend umgelötet und in Bascom eingestellt. Genau da liegt mein Problem, denn wenn ich die Datenleitungen an PortC anschliesse, dann funktioniert mein GLCD nicht mehr, bzw
JTAG ist disablet lt. Bascom, ich nehme mal an, das dies von Werk aus schon disablet ist daja sonst portc.2 - portc.5 nicht zur Verfügung stehen würden. Der uC selbst ist ca. 2 jahre alt. Achso unter einem 8535er geht dies ebenfalls wie beim ATMega32 auch nur auf PortA.. Danke aber für deine Info...
-
Thread
2 Servos und 2 verschiedenen Impulslängen mit Timer0?
folgt Port setzen { switch(pos) { case 0x0000: TCNT0 = 0xd5; PORTC &= ~(1<<PC0); break; // 0 Grad case 0x0010: TCNT0 = 0xB0; PORTC &= ~(1<<PC0); break; // 12 Grad ............................................................. .....................
{ if(scount<servolinks) // Impuls wieder auf HIGH setzen 3 entspricht 1ms { PORTC &=~((1<<PC1) | (1<<PC0)); // PIN C0 und PC1 LOW, damit Impulse am Servo HIGH } // Ende if else { if(scount>=3) { { PORTC |=(1
-
Thread
Problem mit Servo an einem Atmega8
Wenn ich über den UART nicht die Position des Servos verändern möchte, sondern lediglich die LEDs an PORTC ein- oder ausschalten will, so funktioniert das nur, wenn der Code für den Servo auskommentiert ist. [c] DDRC=255; //PORTC als Ausgang, PC0-PC3 mit PullUp (Startzustand) PORTC=15; while(1) { if(x==0) PORTC=0; else if(x==1) PORTC=255; } [/c] Wenn der Servo aktiviert ist tritt das gleiche Phänomen wie zuvor auf (Die LEDs flimmern nur kurz auf und werden dann wieder in den Startzustand versetzt
-
Thread
8*4 Eingangsmatrix
'Analog Eingang für Temperatur Matrix_1 Alias Portc.0 Matrix_2 Alias Portc.1 Matrix_3 Alias Portc.2 Matrix_4 Alias Portc.3 Matrix_5 Alias Portc.4 Matrix_6 Alias Portc.5 Matrix_7 Alias Portc.6 Matrix_8 Alias Portc.7 'Ausgänge: Matrix_a Alias
++ Die Schaltung sied so aus: 1 2 3 4 5 6 7 8 <- PortC | | | | | | | | a-------|-----|-----|-----|-----|-----|-----|-----| | | | | | | | | b-------|-----|-----|-----|-----|----
-
Thread
Problem Compilieren myAVR Workpad Plus waitMs()
PORTC = 0b00010110; // LED1 aus; LED2 ein waitMs(4*speed_adc); PORTC = 0b00001110; // LED2 aus; LED3 ein waitMs(4*speed_adc); PORTC = 0b00011110; // alle LEDs aus waitMs(4*speed_adc
PORTC = 0b00011010; // LED2 aus; LED1 ein waitMs(4*speed_adc); PORTC = 0b00011100; // LED1 aus; LED0 ein waitMs(4*speed_adc); PORTC = 0b00011110; // alle LEDs aus waitMs(4*speed_adc
-
Thread
Atmega 2560 zu wenig Spannung am Ausgang
ATMega Pin: 59 Stiftleiste2:13 #define portIN2_13 PORTJ #define portIN1_13 PORTB #define portEN_13 PORTC #define portOCD_13 PORTC #define ddrIN2_13 DDRJ #define ddrIN1_13 DDRB #define ddrEN_13 DDRC #define ddrOCD_13 DDRC Und dann im main: portEN_13 |= (1<<EN_13); // Ich denke der Code ist in
PortC R.I.P.
-
Thread
40x4 LCD Modul Probleme
half of the display { PORTC = i; PORTG = PORTG & 0b11111011; //Set RS to 0 PORTG = PORTG | 0b00000001; //set E2 to 1 _delay_ms(2); PORTG = PORTG & 0b11111110; //set E2 to 0 } /********************************
. Das > Ding dürfte nicht ohne Warnings compilieren. Was? Erste Zeile in den Funktionen: PORTC = i; Das ist nicht "nichts damit machen" ...
-
Thread
AVRGCC und Assemblermacro´s
Geht so einfach nicht. Richtig wäre es, die Aufrufe von PORTC etc. umzuschreiben in _SFR_IO_ADDR(PORTC). Ich befürchte, daß Du dazu keine Lust haben wirst. Alternativ kann man sich mit #define __SFR_OFFSET 0 behelfen. Lesestoff dazu: http://savannah.nongnu.org
SFR_OFFSET 0 an anfang , aber es ändert sich leider nichts.. solls den heissen cbi _SFR_IO_ADDR(PORTC),1 ????
-
Thread
etwas akademische Frage zu C
Fußnote doch eher drauf an, was *nachher* drinstand und nicht vorher?!? Also: PORTA = PORTB = PORTC = 0xFF; wurde vor der Draft-Änderung interpretiert als: PORTC = 0xFF; PORTB = PORTC; PORTA = PORTB; Also: Was jeweils genommen wurde, war der Wert *nach* der vorhergehenden Zuweisung. Nach der Änderung von gcc funktioniert das nun so: PORTC = 0xFF; PORTB = 0xFF; PORTA = 0xFF; ... jedenfalls habe ich es so verstanden.
-
Thread
Tutorials zu PIC C Syntax und co.
einzeln). Programm wie folgt: [c] TRISC = 1; TRISD = 0; PORTD = 0x00; delay(10000) if(0x01 == PORTC) { PORTD = 0xFF; } else { PORTD = 0x0F; } delay(10000) [/c] Hab die definitionen und die delay routine weglassen, sollten ja allgeim bekannt sein.
Hast du den PORTC (den du einzeln über Taster auf VDD legst) über Pull-down Widerstände auf einen definierten Pegel gelegt? Nochmal: Was macht deine Schaltung? Welche LEDs leuchten?
-
Thread
LED mit µC schalten
dem Pin. Was mache ich falsch? [code] $regfile = "m644pdef.dat" $crystal = 16000000 Config Portc.5 = Output Do Portc.5 = 1 Wait 1 Portc.5 = 0 Wait 1 Loop [/code]
auf dem Pollinboard blinken lässt: $regfile = "m644pdef.dat" $crystal = 16000000 Config Portc.5 = Output Config Portd.5 = Output ' main loop Do Portc.5 = 1 Portd.5 = 1 Wait 1 Portc.5 = 0 Portd.5 = 0 Wait 1 Loop Gleichzeitig bleibt der Portc5 auf konstant
-
Thread
LCD (Funduino) ansteuern mit Bascom
Ausgang; Rest als Eingang Portd = &B10001111 'Eingänge auf high legen 'Config Portc.5 = Output 'zur Probe 'Config Portc.4 = Output Config Scl = Portc.5 'Konfigurieren von I2C Config Sda = Portc.4 Config Lcd = 16 * 2 'nicht unbedingt
LCD-Befehl umgesetzt! '****************** Initialisierung *********************** Config Scl = Portc.5 'Konfigurieren von I2C Config Sda = Portc.4 Config Lcd = 16 * 2 'nicht unbedingt nötig Config I2cdelay = 1 Initlcd Waitms 500
-
Thread
AVR unverständliche for Schleife
[c] PORTC = 0x00; PORTD = 0x00; wait( pause ); [/c] Welchen Sinn hat es die Leds 1ms auszuschalten, um sie dann 2µs leuchten zu lassen. PS: Die Wait geht ohne Hilfsvariable: [c] void wait (
------------------- while (1) { u8Idx = 0; while ( u8Idx != u8Max ) { PORTC = pgm_read_byte ( PGM_STAR_C[u8Idx] ); PORTD = pgm_read_byte ( PGM_STAR_D[u8Idx] ); delay_ms (500); u8Idx++; } } } [/c]
-
Thread
Servo am AVR- knallt beim Einschalten und beim Programmieren an Endanschlag
crystal = 14745600 $hwstack = 32 $swstack = 10 $framesize = 40 Config Servos = 2 , Servo1 = Portc.0 , Servo2 = Portc.2 , Reload = 5 Config Portc.0 = Output Config Portc.2 = Output Enable Interrupts Servo(1) = 190 das Problem tritt auch auf, wenn der Servo Befehl nicht drin ist.
-
Thread
Bildwiederholungsfrequenz Cube
--------------------------- Multiplex: '--------------------------- Porta = 0 : Portb = 0 : Portc = 0 : Portd = 0 Incr Ebene If Ebene = 5 Then Ebene = 0 Offset = Ebene * 4 Incr Offset Portd = Marray(offset) Incr Offset Porta = Marray(offset) Incr Offset Portc
Offset > Portc = Marray(offset) > Incr Offset > Portb = Marray(offset) > Return[/code] Schön. Und wie oft wird die in der Sekunde aufgerufen? (Ich bitte dich. Die Frequenz zu bestimmen ist doch einfacher
-
Thread
Bascom EEprom
$crystal = 5120000 'Quartzoszillator 'Display-Konfiguration Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.5 , Rs = Portd.0 Config Lcd = 16 * 2 'Display-Typ Dim Ganzzahl As Integer Dim Kommazahl As Single Dim Ee_ganzzahl
-
Thread
delay Funktion mit IRS ersetzen
PC5 ausgeben if (PINB & (1 << 0)) { // pin is high PORTC |= (1 << 5); } else { // pin is low PORTC &= ~(1 << 5); } // Blinken der LED 2 (rot) an Pin PC0 unter Verwendung der
) { time_prev = millis(); // LED 2 (rot) toggeln PORTC ^= (1 << 0); } } return 0; } [/c]
-
Thread
ATmega + TL16C554 Divisor Latch Problem (DLM)
latch LSB PORTA = 0x18; // 0001 1000 4800 baud PORTC &= ~( 1 << PC1 ); // xxxx xx0x -> IOW = 0 ->> schreiben in den tl16c554 PORTC |= (1 << PC1); // xxxx xx1x -> IOW = 1, kein schreiben PORTB = 0x01; // 0000 0001 A2A1A0=001 divisor latch MSB PORTA = 0x00; // 0000 0000 PORTC &= ~( 1 << PC1 ); // xxxx xx0x -> IOW = 0 ->> schreiben in den tl16c554 PORTC |= (1 << PC1); // xxxx xx1x -> IOW = 1, kein schreiben
-
Thread
AVR-Studio Debugging hängt sich auf
state++; PORTB=b; PORTC=c; break; case 16 : b = b << 1; c = 7; state++; PORTB=b; PORTC=c; break; case 17 : case 18 : case
case 21 : //Reines Verschieben auf PORTB c = c << 1; state++; PORTC=c; break; case 22 : //Startup auf PORTA + Verschieben auf PORTC a = 1; c = c << 1; state++; PORTA=a; PORTC=c; break;
-
Thread
Probleme mit KS0180 Grafikdisplay
DISPLAY uC D0 - D7 ----> PORTB (habe ich in der KS0180.h geändert) D/I ----> PORTC PIN 0 R/W ----> PORTC PIN 1 E1 ----> PORTC PIN 2 E2 ----> PORTC PIN 2 CS1L ----> PORTC PIN 3 CS1H ----> +5V CS2L ----> PORTC PIN 4 CS2H ----> +5V RES
-
Thread
MUX Ansteuerung mit AVR
} else { if(ACO) //Kommentar siehe oben PORTC &= ~(1 << (ntc_mux - 8)); else PORTC |= 1 << (ntc_mux - 8); } } } } Es liegt ein schönes Rechtecksignal an den 3 Portausgängen des AVR's an , aber
du ob die Pegel stimmen am MUX und ob der richtige Kanal an ist. JTAG ist ne DEBUG Interface an PORTC des AVRs wodurch wenn es aktviert ist nicht der ganze PortC verwendet werden kann als IO
-
Thread
Thermometer mit ds18s20 und LED Annzeige
= 0 Then : Portc.2 = 0 : Digit0 = 1 :Digit1 = 0 'C.2=Digit Transistor End If End If 'Zehnerstelle If Val(tempstr) = 0 Then 'Führende Null wegblenden If Digit = 2 And Digit1 = 0 Then : Portc.3 = 0 :Digit1 = 1 'C.3=Digit Transistor End If End If gruß, Tobias ps wenn jemand eine "sauberere Idee hat gerne posten
-
Thread
PIN vs PORT beim OUTPUT
| (1 << PC6) | (1 << PC7)); /* Ausgaenge */ void heater_ON() { if (!blockedOutputs) { PORTC |= (1 << PC7); } virtualTankUp = true; } void heater_OFF() { PORTC &= ~(1 << PC7); } bool heater_STATUS(){ return (PINC & (1 << PC7)); //return (PORTC & (1 << PC7)); }
man ihn abfragt? > bool heater_STATUS(){ > return (PINC & (1 << PC7)); > //return (PORTC & (1 << PC7));
-
Thread
Atmega 8 wie schalter auf pegel halten
Do Debounce Pina.0 , 0 , Tgl , Sub Loop Tgl: Toggle Portc.0 Return
jetzt aber nicht dein Ernst, oder? Do Debounce Pina.0 , 0 , Tgl , Sub Loop Tgl: Toggle Portc.0 Toggle Portc.1 Return Natürlich muss auch PC1 auf Ausgang geschaltet sein. Schau dir doch bitte die benutzten Befehle in der BASCOM Hilfe an.
-
Thread
Nur 2 Zeilen statt 4 auf EA W164B-NLW
Pause nach dem Einschalten movwf loops call WAIT movlw B'00110000' ; 1 movwf PORTC bsf PORTC, LcdE nop bcf PORTC, LcdE movlw D'50' ; 50 ms Pause movwf loops call WAIT movlw B'00110000' ; 2 call Control8Bit movlw B'00110000' ; 3
Pause nach dem Einschalten movwf loops call WAIT movlw B'00110000' ; 1 movwf PORTC bsf PORTC, LcdE nop bcf PORTC, LcdE movlw D'50' ; 50 ms Pause movwf loops call WAIT movlw B'00110000' ; 2 call Control8Bit movlw B'00110000' ; 3 call
-
Thread
DOGM128 und ATmega32L8
glcdeadogm128x6.lbx" Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.2 , A0 = Portc.4 , Si = Portc.6 , Sclk = Portc.5 , Rst = Portc.3 Cls Lcdat 1 , 1 , "11111111" Lcdat 2 , 1 , "88888888" Lcdat 3 , 1 , "MCS Electronics" , 1 Waitms 100 End was ich aus den
Dann arbeitet PortC als JTAG und die Portpins sind nicht verfügbar. Du kannst das Display an einen anderen Port hängen oder die JTAG-Fuse abschalten.
-
Thread
2 8bit Output-Register zu einem 13bit Register machen
die 16 Bit breit ist: [c] #include <stdint.h> .... uint16_t value; ... PORTD = value & 0xFF; PORTC = (value >> 8) & 0xFF; [/c] Da PORTB und PORTC sowieso lediglich 8 Bit breit sind, kannst Du die letzten beiden Zeilen noch vereinfachen: [c] PORTD = value; PORTC = (value >> 8); [/c] EDIT: Wenn die verbleibenden 3 Bits von PORTC für andere Sachen verwenden werden und damit unverändert bleiben sollen, verkompliziert sich die letzte Zeile etwas, nämlich zu: [c] PORTC &= ~1F; // untere 5 Bits löschen PORTC
-
Thread
7-Segment Tutorial (Multiplex) / Frage?
auschalten: ldi temp1, 0xff ; Die 7 Segment ausschalten out PORTC, temp1 statt wie im Programm: ldi temp1, 0x ; Die 7 Segment ausschalten out PORTC, temp1 Verstehe ich da etwas falsch? Grüsse, René
werden: ldi temp1, 0xFF ; Die 7 Segment ausschalten out PORTC, temp1
-
Thread
Relaiskartenschaltung - Fehler
= 1 Config Pind.1 = Input ' Taster 2 Portd.1 = 1 Config Portc.0 = Output ' Relaiskarte 1 Config Portc.1 = Output ' Relaiskarte 2 Config Portc.2 = Output
' Taster 2 Portc.1 = 1 ' Relaiskarte 2 -> ein Portc.3 = 1 ' Status-LED -> ein P = 1 ' Variable
-
Thread
AVR Lauflicht
TIMER0_COMPA_vect) { cli(); if (s == 1) { if (d == 1) { PORTC = r; r = r >>1; if (r == 0) { r = 0x80; } } else { PORTC = l; l = l <<1; if (l == 0x80) { l = 0x00;
Marco G. schrieb im Beitrag #4130597: > PORTC = l; > l = l <<1; > if (l == 0x80) > { > l = 0x00; > } Durch das l = 0x00; hast du dann wenig zum rumscheiben, versuchs mal mit l = 0x01;
-
Thread
ADC s auslesen, LED Matrix
else if (Wert>=204) PORTD = 0xFE; else PORTD = 0xFF; if (Wert>=721) PORTC = 0xF0; else if (Wert>=644) PORTC = 0xF8; else if (Wert>=572) PORTC = 0xFC; else if (Wert>=511) PORTC = 0xFE; else PORTC = 0xFF; } void main(
else if (Wert>=204) PORTD = 0xFE; else PORTD = 0xFF; if (Wert>=721) PORTC = 0xF0; else if (Wert>=644) PORTC = 0xF8; else if (Wert>=572) PORTC = 0xFC; else if (Wert>=511) PORTC = 0xFE; else PORTC = 0xFF; } void main(
-
Thread
Countdown ATMega8
var = 0; digit++; if (digit > 4) { digit = 1; } } PORTC |= 0x1E; PORTC &= ~(1 << digit); PORTD = damn[counts[digit - 1]]; } [/c]
data[0] = zahl % 10; } // Multiplexansteuerung der Anzeige ISR(TIMER0_OVF_vect) { PORTC |= 0x1E; // alles aus digit++; if (digit > 3) digit = 0; PORTD = damn[data[digit]]; // Muster für neues Digit PORTC &= ~(1 << (digit+1)); // Digit einschalten }
-
Thread
Wie kann ich in AVR-Assembler ein Feld erzeugen?
out DDRD, temp ldi temp, 0b00000001 ;Digit0 aktivieren out PORTD, temp ldi temp, 0xFF ;PORTC ist Ausgang für Daten out DDRC, temp loop: lpm temp,Z+ ;Daten ausgeben und Z-Zeiger erhöhen out PORTC, temp rjmp loop ;Tabelle: ;======== Data: .byte 0b10101011
out DDRD, temp ldi temp, 0b00000001 ;Digit0 aktivieren out PORTD, temp ldi temp, 0xFF ;PORTC ist Ausgang für Daten out DDRC, temp loop: lpm temp,Z+ ;Daten ausgeben und Z-Zeiger erhöhen out PORTC, temp rjmp loop ;Tabelle: ;======== Data: .db 0b10101011,0b00001110,0b11110000
-
Thread
SPI: Bidirektionale Datenübertragung
/SS=1 PORTD = SPDR; //data from sklave at PORTC } </c> Weiterhin habe ich die Portrichtung des PORTB des Sklave auf DDRB=0x40 (MISO Output) gesetzt. Durch diese Änderung klappt die DÜ Master->Sklave nicht mehr. Hat jemand eine
Flash speichere, geht die Datenübertragung garnicht mehr. (Master-Byte wird auf Sklave nicht mehr an PORTC ausgegeben). Gibts dafür eine Erklärung? Mfg Thomas
-
Thread
Bootloader mit Microchip Studio
void ) = 0x0000; DDRC = (1 << DDC5); for (uint8_t i = 0; i < 10; i++) { PORTC ^= (1 << PORTC5); // toggle pin _delay_ms (200); } start(); } [/c] So weit. Dann ein Hauptprogramm. Macht das gleiche, nur anderer Ausgang [c] #define F_CPU 1000000UL #include
delay.h> int main(void) { DDRC = (1 << DDC4); for (uint8_t i = 0; i < 30; i++) { PORTC ^= (1 << PORTC4); _delay_ms (50); } } [/c] Hier keine Ergänzung für Linker und kein "erase", sondern "manged by script" So weit klappt das auch beim ersten mal. Ändere ich jetzt
-
Thread
SN74LS164 an AVR
include <util/delay.h> int main (void) { DDRD |= (1<<PC5) | (1<<PC4); //PC4&PC5 als Ausgänge PORTC |= (1<<PC4); //Data auf high PORTC |= (1<<PC5); //Clock auf high _delay_ms(10); //10 ms warten PORTC &= ~(1<<PC5);//Clock auf low while (1); } [/c]
4000000 #include <util/delay.h> int i; int main (void) { DDRD |= (1<<PC5) | (1<<PC4); PORTC |= (1<<PC4); i = 0; while(i < 8) { PORTC |= (1<<PC5); _delay_ms(10); PORTC &= ~(1<<PC5); i++; } while (1); } [/c] Damit gehts immer noch nicht. :(
-
Thread
Xmega: Interne PullUps aktivieren
die mitgelieferte port_driver.c [c]void Example1( void ) { /* Configure data direction for PORTC and PORTD. */ //PORTC.DIRCLR=0XFF; PORT_ConfigurePins( &PORTC, 0xFF, false, false, PORT_OPC_WIREDANDPULL_gc, PORT_ISC_BOTHEDGES_gc ); PORT_SetPinsAsInput( &PORTC, 0xFF ); PORT_SetPinsAsOutput( &PORTD, 0xFF ); /* Continously copy the value from PORTC to PORTD. */ do { uint8_t temp = PORT_GetPortValue( &PORTC ); PORT_SetOutputValue( &PORTD
-
Thread
Taster entprellen
an meinem Progrämmchen falsch? [c] for(;;){ if (bit_is_clear(PINA,7)&&(temp==1)){ PORTC++; temp=0; } else{ temp=1; } } [/c]
if (bit_is_clear(PINA,7) // nach Entprellung immer noch gedrückt? { PORTC++; while(bit_is_clear(PINA,7); // warten bis losgelassen } } Aber: PORTC ist eine in einem Header vordefinierte Konstante. Die kann man doch nicht einfach so inkrementieren
-
Thread
Probleme bei der Stueuerung über Taster!
separaten Datei haben, die im eigenltichen Menue eingebunden wird. Ich muss alt beachten, dass am PortC auch das display hängt. Wie erweitere ich die entsprechende Funktion? Bitte halten sie mich nicht für dumm, aber ich bin langsam Betribsblind, weil ich schon soviel probiere! Wäre toll wenn Sie
gleichzeitig noch T2 gedrückt ist frage nach: // tasten&T2 tasten_bishr=tasten; } PORTC = 0x00; //Pullupwiderstände deaktivieren DDRC |= ( (1<<DDC0) | (1<<DDC1) | (1<<DDC2) | (1<<DDC3)); : : Auswertcode der Tasten, kann direkt auf Display schreiben weil Port : schon wieder
-
Thread
Data-Direction-Adresse immer eine Adresse höher als Port-Ausgabeadresse?
Produziert dasselbe wie die etwas länglichere konventionelle Deklaration: .EQU TWI_SCL_PORT=PORTC .EQU TWI_SCL_DDR=DDRD .EQU TWI_SCL_PIN=PINC .EQU TWI_SCL_BIT=PORTC0 .EQU TWI_SDA_PORT=PORTC .EQU TWI_SDA_DDR=DDRD .EQU TWI_SDA_PIN=PINC .EQU TWI_SDA_BIT=PORTC1 Verhindert dabei sicher Tippfehler
PORT == PORTB) DDRB |= (1<<L2_PIN); if (L3_PORT == PORTB) DDRB |= (1<<L3_PIN); #endif usw PORTC , PORTD ... Gruß scheps
-
Thread
Atmega SPI will nicht
Ich kann ja max 255 verschiedene Werte übertragen. (8Bit) Würde jetzt gerne z.B. "PC4_1" für PortC LED1 On usw übertragen. Später muss ich über SPI die PWM des anderen Atmega steuern können. Hast du zufällig ein Beispiel wie man das anstellt. MFG Christoph
10) { ADC_16=data_IN[2]*256+data_IN[1]; i=0; } if (ADC_16 == 'O','N') PORTC = 0xFF; //LEDs an if (ADC_16 == 'O','F') PORTC = 0x00; //LEDs aus if (ADC_16 == 'ON') PORTC = 0xFF; //LEDs an if (ADC_16 == 'OF') PORTC = 0x00; //LEDs aus }
-
Thread
ATMega8 / BASCOM / Int. Osc. factory setting / LCD
======================== $regfile "m8def.dat" $crystal = 1000000 CONFIG Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 CONFIG Lcd = 16 * 2 Lcd_on ALIAS Portc.7 (Gibt die 2mA Power fur die LCD) DIM I as byte SET Lcd_on 'SCHALTET
-
Thread
ATmega32 Max127/128 Bascom I2C-Problem
regfile = "m32def.dat" $crystal = 8000000 $baud = 4800 'Config LCD Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Config Lcd = 16 * 2 Config Portc = Output Reset Portc.1 Initlcd Cursor Off Cls '$lib "i2c_twi.lbx" Config Sda
Dim Dummy As String * 20 Dim L As Single , Lu As Single ' Konfiguration für I2C Config Sda = Portc.7 Config Scl = Portc.6 ' Konfiguration LCD Config Lcdpin = Pin , E = Portd.2 , Rs = Portd.3 , Db4 = Portd.7 , Db5 = Portd.6 , Db6 = Portd.5 , Db7 = Portd.4
-
Thread
LCD an ATmega644 (später ATmega8) mittels TWI/I2C (Anfängergerecht)
Bits als Steuerleitungen ebenfalls möglich. Das hilft mir zwar weiter, aber die Frage warum es mit PORTC oder PORTD nicht funktioniert bleibt bestehen. Danke.
ein wenig Zeit und Erbarmen hat und mir die main nur so umschreiben das ich über TWI (ATmega 644A , PORTC Pin 0 und 1) eine einzige Meldung aufs LCD schreibe und es mir dann nochmal hochladen? Ich lerne scheinbar an fertigen (funktionierenden) Beispielen am besten. Die Adresse des PCF8574 habe ich wenn
-
Thread
ISP Atmega8 USBprog: Verbindung funktionert nur sporadisch
PORTD = 0b01101011; PORTC = 0b00000001; _delay_ms(10); PORTD = 0b01011011; PORTC = 0b00000001; _delay_ms(10); PORTD = 0b00111011; PORTC = 0b00100001; _delay_ms(10);
PORTD = 0b01101011; PORTC = 0b00000010; _delay_ms(10); PORTD = 0b01011011; PORTC = 0b00000010; _delay_ms(10); PORTD = 0b00111011; PORTC = 0b00000010; _delay_ms(10);