-
Thread
LCD Zeichen anzeigen
Befehle einzeln geschrieben. Die Zeichenausgabe mache ich so: PORTD = 0b00000000; PORTC |=(1<<PC0); PORTD = 0x48; PORTC |=(1<<PC2); _delay_us(50); PORTC &= ~(1<<PC2); /* h schreiben */ PORTC &= ~(1<<PC0); _delay_ms(2000); Wobei PC0 das RS Signal
(50); PORTC &= ~( 1 << LCD_E ); PORTC &= ~( 1 << LCD_RS ); _delay_ms(2000); [/C] so sieht man im Code gleich viel besser, welche Einstellungen in welcher Reihenfolge vorgenommen werden.
-
Thread
C Preprocessor, Gluebefehl ##
So ist es in der Entwicklungsphase einfach umzustellen, vor allem auch zwischen normalen Ports wie PORTC_3 und virtuellen Ports (SERPA), die z.B. über SPI an einen seriell-parallel-Wandler wie 74*595 ausgegeben werden. [c] enum { PORT_LED = PORTC_2, PORT_SENSE = PORTC_3, PORT_NIXIE_POWER = PORTC_5, PORT_PWMA = PORTB_1, PORT_PWMB = PORTB_2, // SS PORT_PWMC = SERPA2_0, PORT_PWMD = SERPA2_1, PORT_PWME = SERPA2_2, ... [/c] Das wird dann so verwendet: [c] MAKE_OUT
-
Thread
f*** mega8 ->I²C
Anschlussschema kann man zu solchen Problemen fast gar nichts sagen (ausser vielleicht bei Megaxx, LCD an PortC funktioniert nicht :-)
.equ i2c_port = PORTC .equ i2c_pin = PINC .equ i2c_ddr = DDRD //???
-
Thread
Matrix 3x7 Auswerten / AtMega 8515
lcd_lib.h" #define KEY_COL0 PORTB2 #define KEY_COL1 PORTB1 #define KEY_COL2 PORTB0 #define KEY_ROW0 PORTC0 #define KEY_ROW1 PORTC1 #define KEY_ROW2 PORTC2 #define KEY_ROW3 PORTC3 #define KEY_ROW4 PORTC4 #define KEY_ROW5 PORTC5 #define KEY_ROW6 PORTC6 #define KEY_ROW7 PORTC7 void init_keypad
-
Thread
LCD von Powertip PC 2004A wird spürbar warm
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 Die Beschaltung wurde schon in einem
-
Thread
Arduino Leonardo stellt sich tot
Main/arduino-leonardo-schematic_3b.pdf. Die Onboard-LED hängt am Arduino-Pin IO13, also an PC7 von PORTC!
/uploads/Main/arduino-leonardo.... Die > Onboard-LED hängt am Arduino-Pin IO13, also an PC7 von PORTC! Im Schaltplan vom "Leonardo" ist als Taktquelle ein Quarz eingezeichnet. Thomas schrieb im Beitrag #3134426: > SUT_CKSEL: EXTXOSC_8MHZ_XX_16KCK_65MS Deutet das nicht auf einen externen
-
Thread
LED an AVR ATmega16 bleibt dunkel
1) /* loop forever */ { _delay_ms(1000); /* wait a second */ PORTC = 0xff; /* turn all output pins on */ _delay_ms(1000); /* wait again a second */ PORTC = 0x00; /* turn all output pins off */ } return 0; /* never achieved
Das stimmt, portC läuft über aVCC, den solltest du beschalten
-
Thread
Tastenmatrix 3x4 Problem
uint8_t pressed,down,line,row,col; DDRC|=0xE0; DDRB&=0x3C; PORTB|=0x3C; row=0; while(1) { PORTC=(PORTC|0xE0)&scan[row]; pressed=~PINB; down=pressed&~last[row]; for(col=0;col<4;col++) if(down&line[col]) { if(key[col][row]!=0xFF) screen(key[col][row]); } last[row]
Wieder einer der die PortC Pins auf High/Low setzt damit man schön Kurzschluss machen kann wenn man 2 Tasten gleichzeitig drückt !!!
-
Thread
GCC ignoriert Zuweisung in struct
befindet sich jetzt folgende Schleife: while (1) { if (bit_is_clear(PINC,0)) { sbi(PORTC,2); servo1.high = 46; servo1.low = 224; } else { cbi(PORTC,2); servo1.high = 31; servo1.low = 64; } } Mit dieser Schleife kann ich bei drücken auf den
SBI 0x15,2 Entspricht sbi(PORTC,2); RJMP PC-0x0003 CBI 0x15,2 Entspricht cbi(PORTC,2); RJMP PC-0x0005 d.h. gcc ignoriert einfach meine Zuweisung. Jetzt bin ich etwas ratlos. Ich hoffe, es
-
Thread
Pollin 16080 Touch mit ATMEGA32 und BASCOM
eine sehr doofe Frage: Zum testen der Lauffähigkeit meines Controlers wollte ich gerade am freien PORTC.7 eine LED drankleben und diese mit BASCOM ein oder auch mal ausschalten. PORTC.7 = 0 -> Theoretisch ja logisch AAABER: Tut nicht, PORTC.7 wird nicht 0. ??? Gruß Thomas
Das wäre jetzt wirklich gut um sicher zu gehen ob das Display OK ist. Das mit der Test-LED an PORTC war mein Fehler, das klappt schon, danke für den Tipp Sven!
-
Thread
Probleme bei T6963C initialisierung (C)
define WR PC1 #define RD PC2 #define CE PC3 #define RST PC4 #define DATA PORTD #define CONTROL PORTC void long_delay(uint16_t ms) {for(; ms>0; ms--) _delay_ms(1);} void CLOCK(void) { CONTROL &= ~(1<<CE); //Low-Flanke am CE long_delay(10); //DELAY CONTROL |= (1<<CE
Ich habe eben gesehen das Du PortC für die Control-Signale nutzt. Oft wird in den AVRs der PortC für die JTAG's genutzt evtl. Fuses falsch gesetzt? Ich weiß nicht welchen AVR Du nutzt um es genauer zu sagen. Harry
-
Thread
RGB LED 3x3x3
0b00001111; DDRB = 0b00000110; DDRD = 0b00000010; CLEAR_BIT(PORTB,2); //Output Enable SET_BIT(PORTC,3); //SDI //Ebenen SET_BIT(PORTC,2); SET_BIT(PORTC,1); CLEAR_BIT(PORTC,0); /** Hauptschleife **/ while(true) { //CLK CLEAR_BIT(PORTB,1); _delay_ms(1000);
Ulrich schrieb im Beitrag #4119608: > SET_BIT(PORTC,3); //SDI Und ? Die LEDs sind aus, was willst du da sehen ?
-
Thread
LCD-Ansteuerung wie im AVR-GCC-Tutorial aber anderer Port
Was mache ich falsch oder ist PORTC nicht geeignet?
Sorry, ich meinte R/W anstatt R/S. R/W muss auf GND. Ist noch etwas anderes am PORTC angeschlossen?
-
Thread
Benötige Hilfe bei 4x20 LCD Treiber von Peter Danegger
Betreiben tue ich das Display im 4 Bit Modus. Mein Microcontroller ist der ATMEGA32. Enable an PORTC 7 RS an PORTC 2 R/W an GND DB4 an PORTC 6 DB5 an PORTC 5 DB6 an PORTC 4 DB7 an PORTC 3 Die LCD Beleuchtung funktioniert immerhin. Ich benutze zum Flashen das AVR Studio
-
Thread
LCD 204B-NLW & AtMega32
routinen.h so übernommen. Dazu habe ich die routinen.h angepasst... [c] // LCD DB4-DB7 <--> PORTC Bit PC0-PC3 #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_DB PC0 // LCD RS <--> PORTD Bit PC4 (RS: 0=Data, 1=Command) #define LCD_RS PC4 //
Moment mal, ATMega32 und Portc? Dann JTAG abschalten;)
-
Thread
Ladekurve Kondensator, Analog Comparator, ACI
to output sbi(DDRC, DISCHARGE_C); // switch to 0 for discharge cbi(PORTC, DISCHARGE_C); // wait until C is discharged _delay_ms(100); // set to input cbi(DDRC, DISCHARGE_C); // set to output sbi(DDRC, CHARGE_C); // start charging sbi(PORTC, CHARGE_C); // wait for interrupt while(!util_IsBitSet(ACSR, ACI)) wdt_reset(); _delay_ms(100); } } ISR(ANA_COMP_vect) { // clear interrupt sbi(ACSR
-
Thread
Limit für Zeitmessung Abfrangen
> Müsste diese Zeitmessung nicht erst in ISR_INT2 gestartet werden? Nein. Die Messung soll mit PORTC |= (1<<PC5) starten und mit einer steigenden Flanke an PD2 enden.
Hal Smith schrieb im Beitrag #2235311: > Die Messung soll mit PORTC |= (1<<PC5) starten und mit einer > steigenden Flanke an PD2 enden. ok ... vielleicht ist es so verständlicher: Die Messung soll mit dem Schalten von PC5 von Low auf High starten (PORTC |= (1<
-
Thread
ATmega8 Fuses?
UART 2-7:Dotmatrix Display. (4bit Datenbus) PORTB 0-5:Taster nach GND 6-7:XTAL für UART... PORTC 0-1:ADC 2-3:Steuerausgänge 4-5:I2C soll nach Möglichkeit für Erweiterungen frei bleiben 6: der ominöse RESET Pin :-I 7: nicht vorhanden Nun min. 2 Steuerausgänge fehlen mir. Das mit den Taster
Datenbus PortC.4..7 in r16, DDRC andi r16, 0x0f out DDRC, r16 //Datenbus auf Eingang in r16, PORTC ori r16, 0xf0 out PORTC, r16 //pullups einschalten cbi sw_out //sw_out aktiv schalten nop in r17, PINC //Schalterzustand einlesen sbi sw_out //sw_out inaktiv In R17 hat man jetzt
-
Thread
AT90S4433 -> PORTC/PINC
eine Taste gedrückt, leuchted die korrespondierende LED. Wenn ich jetzt aber statt PORTD den PORTC verwende: //------------------- #include <avr/io.h> int main(void) { DDRB = 0xFF; PORTB = 0x00; DDRC = 0x00; PORTC = 0xFF;
-
Thread
Schieberegister 74HC595 ansteuern
direkt hinbekommen habe, habe ich mal diesen Code testweise ausprobiert: ldi temp, 0b00000000 out PORTC, temp inc temp out PORTC, temp inc temp out PORTC, temp . . 12 mal noch hoch 10 mal noch runter . . dec temp out PORTC, temp dec temp out PORTC, temp dec
soll, ist mir leider nicht klar... Werte von 0 bis irgendwas aufwärts und dann wieder abwärts an PORTC ausgeben. Wo besteht da der Zusammenhang zu dem Shiftregister? Wie ein Shiftreg. funktioniert, hast Du doch verstanden. Dann schalte doch die Leitungen einfach mal entsprechend (Datenbit an MOSI
-
Thread
kleines Programm
Hmm ich würde das ganze so verstehen, dass er PORTC einliest, negiert und letztlich wieder mit PORTC verodert und das ganze an PORTA ausgibt... Allerdings macht das keine großen Sinn, denn da kommt dann immer 0 raus..
/* C starts here */ volatile * const unsigned char PORTA = ..... volatile * const unsigned char PORTC = ..... unsigned char zeichen; { zeichen = *PORTA; zeichen= !zeichen; /* zeichen = ~zeichen */ *PORTC = zeichen; } /* das war jetzt VHIT, also vom Hirn ins Terminal, ohne Test oder
-
Thread
Wie AtMega8 mit Bascom programmieren
Was mach ich hier Falsch? $regfile = "m8def.dat" $crystal = 1000000 Config Portc.3 = Input Config Portd.2 = Output Config Portd.3 = Output Config Portd.4 = Output Config Portd.5 = Output Config Portd.6 = Output Config Portd.7 = Output Config Portb.0 = Output Config Portb
= 0 Waitms 150 Loop If Pinc.3 = 1 Then Gosub 1 Do Loop Sub Unterprogramm Portc.5 = 1 End Sub
-
Thread
Mikrocontroller
Danke schon mal im vorraus. PS: Bin im Internet auf diese befehle gestoßen: PORTCFG_VIRTMAP0_PORTC_gc; PORTCFG.VMAP0; PORTCFG_VIRTMAP0_PORTD_gc; PORTCFG.VMAP1; PORTCFG.VMAP1; PVIRT0.DIR = 0xFF; weiß aber nicht was mit anfangen.
mappen, damit ist dein I/O Zugriff schneller. Hier ein Codeschnipsel, sollte selbsterkärend sein. //PORTC wird als Virtueller Port definiert PORTCFG.VPCTRLA |= PORTCFG_VP02MAP_PORTC_gc; //Der Virtuelle Port0 wird als Ausgang definiert VPORT0.DIR = PIN0_bm; Dann z.B. mit VPORT0.OUT = 0x00; den PortC
-
Thread
Controller führt befehle die er vom PC bekommt nicht aus (Bascom)
hwstack = 32 $crystal = 14745600 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0 Dim B1 As Byte Cls If B1 = 65 Then Cls Locate 1 , 1 Lcd "LED A" End IF If B1 = 66 Then Cls Locate 1 ,
-
Thread
ATmega32, PC2 bis PC5 funktionieren nicht!?
DDRB=0xFF; // Output DDRC=0; // input DDRD=0xFF; // Output PORTA=0xFF; PORTB=0xFF; PORTC=0; PORTD=0xFF; while(1){ PORTB=PINC; } return 0; } [/c] Programm PORTC als Ausgang: [c] #define F_CPU 16000000L #include <avr/io.h> //#include <util/delay.h> //#include
DDRB=0xFF; // Output DDRC=0xFF; // Outup DDRD=0xFF; // Output PORTA=0xFF; PORTB=0xFF; PORTC=0xFF; PORTD=0xFF; while(1){} return 0; } [/c]
-
Thread
Mega8: VQC10 LED-Matrix 5x7 Zeitmultiplex - Bestimmte Bits eines unsigned char auf Ports ausgeben
spaltendaten(daten_st2) temp33 = spaltendaten(daten_st3) temp44 = spaltendaten(daten_st4) PORTC = 8 PORTB = temp11 PORTC = 9 PORTB = temp22 PORTC = 10 PORTB = temp33 PORTC = 11 PORTB = temp44 PORTC = zeile End Interrupt [/pre] Ich hoffe, ich werde fürs FastAVR
-
Thread
Uhrenquarz an Atmega8
|= (1 << INT0); // externen Interrupt freigeben while (1) { PORTC = 0b11111111; _delay_ms(1000); PORTC = 0b00000000; _delay_ms(1000); GIMSK |= (1 << INT0); // externen Interrupt freigeben set_sleep_mode
//overflow Von Timer 2 cli(); TCNT2 = 0x00; //Init counter PORTC = PINC ^ ( 1 << PC0 ); sei(); }; [/c] Ich vermute das irgendwelche der Register falsch Beschrieben sind aber ich weiß nicht welche...
-
Thread
AVR-GCC: Welchen Datentypen haben SFRs?
ReadFromPort(PORT) (\ (&PORT==&PORTA) ? (DDRA) :\ ( (&PORT==&PORTB) ? (DDRB) :\ ( (&PORT==&PORTC) ? (DDRC) :\ ( (&PORT==&PORTD) ? (DDRD) :\ 0 ) ) )\ ) [/c] wird zu: [code] uint8_t a = ReadFromPort(PORTC); 1f28: 84 b3 in r24, 0x14 ; 20 1f2a: 08 95
fooPort( A ) = barPort( B ); foobarPort( C ); [/c] jenes da: [c] PORTA = PINB; DDRC = 0x2a; PORTC = 0x2a; [/c]
-
Thread
Cocktailmixer Steuerung
m8adef.dat" $crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 'Ausgänge Led1 Alias Portc.1 Config Led1 = Output Led2 Alias Portc.2 Config Led2 = Output Led3 Alias Portc.3 Config Led3 = Output Led4 Alias Portc.4 Config Led4 = Output Led5 Alias Portc.5 Config Led5 = Output
-
Thread
Powertip PG12864 tut nichts
LCD_DP = PORTD ;LCD Data Port .equ LCD_DPD = DDRD ;LCD Data Port Direction .equ LCD_CP = PORTC ;LCD Control Port .equ LCD_CPD = DDRC ;LCD Control Port Direction .equ LCD_RS = PORTC0 ;LCD Register Select Pin .equ LCD_RW = PORTC2 ;LCD Read/Write Pin .equ LCD_EN = PORTC1 ;LCD Enable Pin .equ LCD_CS1 = PORTC3 ;LCD Chip Select 1 Pin .equ LCD_CS2 = PORTC4 ;LCD Chip Select 2 Pin .equ LCD_RE = PORTC5 ;LCD Reset Pin .org 0x000 rjmp reset reset: ldi temp, HIGH(RAMEND) out SPH, temp
-
Thread
atxmega und externer interrupt
ich habe ein Problem mit meinem externen interrupt am Atxmega16D4. Ich habe folgenden Code: [c] PORTC.INTCTRL |= 0x03; PORTC.INT0MASK |= PIN0_bm; PORTC.PIN0CTRL |= PORT_ISC_RISING_gc; PMIC.CTRL |= PMIC_HILVLEN_bm; SREG |= 0x80; sei(); ISR(PORTC_INT0
am Ende der ISR die > Interrupt Flags löschst, indem du eine 1 an die Bitposition schreibst: > PORTC.INTFLAGS = INT0IF_bm; Dies hat scheinbar wunderbar funktioniert. Danke an alle.
-
Thread
For Schleife nur bestimmte Werte hochzählen lassen
vorgegangen: ... int x[9]={9,2,3,4,5,6,7,8,1}; int i; ... for(i=0; i<10; ++i){long_delay(5); i[z]; PORTC=i} Er zählt von 1 bis 9 hoch. Bleibt bei 9 stehen. Wenn ich in die Klammer "i<sizeof(x)" schreibe zählt er bis 15.
> int x[9]={9,2,3,4,5,6,7,8,1}; > int i; > ... > for(i=0; i<10; ++i){long_delay(5); i[z]; PORTC=i} Der Code macht nicht nur keinen Sinn, er ist auch noch ziemlich bescheuert.
-
Thread
Sinuserzeugung im c
Ich habe die Vermutung das, das irgenwiemit dem aktiviertem ADC zu tun hat. Der ist nämlich auf PORTC und ich brauche die ersten beiden niedriegsten Bit (ADC0 und ADC1) um etwas einzulesen. Ich nehme mal an, dass er alle möglichen ADC-Eingänge aktiviert. Wie kann ich auf PIC.3 denn den ADC ausschalten
den für das LCD brauche. Hat mir jemand diese Zeilen geschrieben, die die 2 höchstwertigen Bits auf PORTC.5 und PORTC.4 ausgibt. Die Zeilen schaun so aus: PORTB=(temp&0x3F); PORTC=((temp&0xC0)/0x04); Allerdings wie gesagt, habe ich das nicht selbst geschrieben und ich vertehe dies 2 Zeilen nicht
-
Thread
Hardware PWM Timer1 funktioniert nicht
void) { DDRC = 0b1111111; DDRD = 0b1111111; DDRB = 0b1111111; DDRA = 0b0000000; PORTC = 0xFF; TCCR1A |= (1<<COM1A0)|(1<<COM1A1)|(1<<WGM11); TCCR1B |= (1<<WGM13)|(1<<CS11); TIMSK |= (1<<OCIE1A); ICR1=10000; OCR1A=9450-1; sei(); while(1) { if(!(PINA &(1<<PINA0))) { PORTC &=~ (1<<PB0); } if(PINA &(1<<PINA0)) { PORTC |= (1<<PB0); } if(!(PINA &(1<<PINA1))) { PORTC &=~ (1<<PB1); } if(PINA &(1<<PINA1)) { PORTC
-
Thread
Wie geht das denn?!
auf PIN PB5. PORT C ist als Ausgang deklariert. Wie kann es dann sein, dass die Aussage [c]PORTC = PORTB;[/c] dazu führt, dass auf PORT C etwas völlig anderes auftaucht?! :-O Bin da was mim Latein am Ende. PORTC wird auch im Programmverlauf nirgends anders benutzt...?!
c]PORTC = PINB;[/c]
-
Thread
HC4094 Schieberegsiter Problem
Ausgänge zu legen, vielmehr sind alle Ausgänge immer HIGH. Das Programm: ------------- cbi PORTC, 2 ; Data LOW ldi tmp, 50 outzahl1: sbi PORTC, 3 ;clk HIGH dec tmp cbi PORTC, 3 ;clk LOW brne outzahl1 Ich hab jezt shcon mehrmals das Datenblatt studiert und auch nachgemessen das Alles "
-
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
If wird nicht richtig ausgewertet
hand = 0; tuer = 0; PORTC &= ~(1<<PC0); } if ( PINA & (1<<PINA1) ) { // Regen? PORTC |= (1<<PC1); } else { PORTC &= ~(1<<PC1); } if ( PINA & (1<<PINA3) ) { // Fenster? PORTC |= (1<<PC2); } else { PORTC &= ~(1<<PC2); } if ( PINA & (1<<PINA4) ) { // Fenster? PORTC |= (1<<PC3); } else { PORTC &= ~(1<<PC3); } if ( PINA & (1<<PINA5) ) { // Fenster? PORTC
-
Thread
symbole in c?
miteinander ich bin relativ neu in der welt der mikrokontroller und habe nur eine kurze frage: PORTC |= (1 << PC5);/*LED OFF*/ was bedeutet der dieses symbol nach PORTC "|"
bedeutet das : PORTC |= (1 << PC5);/*LED OFF*/ wenn mein PORTC= 0b00000000 ist verknüpf ich dies durch bitweises OR 0b00100000 (1 << PC5) und erhalte so 0b00100000 ?
-
Thread
Mit VB 2005 Express einen AVR mit RTL8019AS steuern
ior_pin Alias Pinc.5 Ne2000_iow_pin Alias Pinc.6 Ne2000_reset_pin Alias Pinc.7 Ne2000_a0 Alias Portc.0 Ne2000_a1 Alias Portc.1 Ne2000_a2 Alias Portc.2 Ne2000_a3 Alias Portc.3 Ne2000_a4 Alias Portc.4 Ne2000_ior Alias Portc.5 Ne2000_iow Alias Portc.6 Ne2000_reset Alias Portc.7 Ne2000_d0_
-
Thread
ADC Wandler ADCL
if ((RegelspannungL & 0x02)== 1) PORTD |= (1<<7); else PORTD &= ~(1<<7); PORTC = RegelspannungH;
Ich habe zum test ADCL auf PortC ausgeben, (ADCH auf PortC ging ohne Probleme) dann mit dem Oszi jeden Pin gemesen keine Änderungen alle bleiben auf 0.(ich habe natürlich die eingelesene Spannung verändert)
-
Thread
PWM unterbrechen
a =1023; int d_time = 200; // delay time DDRC &= ~(1<<PC1); //TASTER Pullup PORTC |= (1<<PC1); uint8_t next = 1; while(1) { if(next == 1){ _delay_ms(d_time); PORTC &= ~(1<<PINC3); PORTC &= ~(1<<PINC5); DDRB |= (1<<PINB1);
if(bit_is_set(PINC,PINC1)){ PORTC |= (1<<PINC5); } else{ PORTC &= ~(1<<PINC5); next = 1; } } } }
-
Thread
LCD will nicht mit BASCOM und ATmega16
.4 jetzt: Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 ich hab die Ports jetzt schon x mal ueberprueft und finde keinen Fehler mehr im Anschluss. Im µC laeuft eine Schleife
Bei einem neuen Mega16 und Problemen mit PortC nachschauen ob JTAG in den Fuses deaktiviert ist, das ist bei neuen immer aktiviert ! Dann schreibtst Du nix vom RW-Pin des LCD, das sollte bei Verwendung von Bascom immer auf Gnd liegen, da es
-
Thread
SPI-Schnittstelle mit avrgcc
dataout, SPDR); outp(dataout, PORTA); while(bit_is_clear(SPSR, SPIF)); outp((inp(SPDR)), PORTC); cbi(SPSR, 7); while ((inp(PIND)&(0x02))==0); dataout=0x55; outp(dataout, SPDR); outp(dataout, PORTA); while(bit_is_clear(SPSR, SPIF)); outp((inp(SPDR)), PORTC); //cbi
dataout, SPDR); outp(dataout, PORTA); while(bit_is_clear(SPSR, SPIF)); outp((inp(SPDR)), PORTC); //cbi(SPSR, 7); while ((inp(PIND)&(0x08))==0); dataout=0xcc; outp(dataout, SPDR); outp(dataout, PORTA); while(bit_is_clear(SPSR, SPIF)); outp((inp(SPDR)), PORTC);
-
Thread
DS 1307 via I2C an atmega328-brauche Hilfe
dem avr habe ich zum schreiben der Daten folgendes: void write_RTC() { power_twi_enable(); PORTC |= (1<<PORTC5) | (1<<PORTC4); TWBR = 2; _delay_ms(5); TWCR = 0xA4; //start while (!(TWCR & (1<<TWINT))); TWDR = 0x08; //SLA + W TWCR = 0x84; while (!(TWCR & (1<<
0x94; //stop _delay_ms(5); } und zum lesen: void read_RTC() { power_twi_enable(); PORTC |= (1<<PORTC5) | (1<<PORTC4); TWBR = 2; _delay_ms(5); TWCR = 0xA4; //start while (!(TWCR & (1<<TWINT))); TWDR = (0x08 | 0x01); //SLA + R TWCR = 0x84;
-
Thread
Probleme mit C
DDRD = 0xFF; // PortD alles als Ausgang DDRC &= ~ (1<<DDC0) | (1<<DDC1) | (1<<DDC2); // PORTC 0...2 als Eingang DDRC |= (1 << DDC3) | (1 << DDC4) | (1 << DDC5); // PortC 3..5 als Ausgang PORTC |= (1 << PC3) | (1 << PC4) | (1 << PC5);// PORTC 3..5 High = Digits aus // Timer 1 konfigurieren
-
Thread
90can128 ignoriert if Abfrage
Controller DDRC&=~(1<<0); DDRC&=~(1<<1); DDRC&=~(1<<2); DDRC&=~(1<<3); //Declaration Logic Inputs //PORTC=(1<<PORTC0)|(1<<PORTC1)|(1<<PORTC2)|(1<<PORTC3);//Pullups Logic Input on //DDRA|=(1<<2)|(1<<3)|(1<<4); //Declaration Logic Output while(1) { if (PINC && (1<<PC3)) //Check { PORTA
sich auf einem Sokel, die Treiber ebenfalls. zur momentanen Funktion des Programms: Wenn Pin3 am PortC gesetzt wird, soll in die Abfrage gesprungen werden, die 2 LEDs (über Treiber und FETs angesteuert) blinken lässt, und eine LED dauerhaft ausschaltet Das Momentane Verhalten des Programms: Die
-
Thread
Atmega32, Pin0 des PortC funktioniert nicht richtig
das JTAG hängt beim ATMEGA32/16 beim PortC an den Pins 2,3,4,5(an 0,1,6,7 nicht)
-
Thread
UART (MAX232)
- PortC als Ausgabeport eingerichtet - Interrupts eingeschaltet Ich bin also mit Hyperterminal zugange gewesen, aber die LEDS am PortC blieben komplett an (wie Zustand nach Reset) (Hyperterminaleinstellung
rjmp rx_com ;RX-Complete - Rotine rx_com: in temp,udr ;read value out PORTC,temp reti start: ldi temp,LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse out SPL,temp ldi temp,HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse out SPH,temp sbi
-
Thread
RS232 Übertragung geht nicht - Hilfe
D'120' movwf senddatatopc ;##### START OF SENDING STARTBIT movlw D'17' movwf loops2 bcf PORTC,1 startbitwait nop ; 1 Befehl nop ; 1 Befehl nop ; 1 Befehl decfsz loops2,1 ; 1 Befehl goto
Befehl movwf loops2 ; 1 Befehl btfsc senddatatopc,7 ; 1 Befehl bcf PORTC,1 ; 1 Befehl btfss senddatatopc,7 ; 1 Befehl bsf PORTC,1 ; 1 Befehl waiting nop ; 1 Befehl nop