-
Thread
RFM12 Recieve Programm
LEDG_OUTPUT() DDRC |=~ (1<<6) //#define LEDR_OUTPUT() DDRC |=~ (1<<7) //#define LEDG_ON() PORTC&=(1<<6) //Led 6 auf Megacard //#define LEDG_OFF() PORTC|=(1<<6) //#define LEDR_ON() PORTC&=(1<<7) //Led 7 (links) auf Megacard //#define LEDR_OFF() PORTC|=(1<<7) //Leds 6
define LED7_OUTPUT() DDRC |=(1<<7) #define LED5_OUTPUT() DDRC |=(1<<5) #define LED5_TestON() PORTC |=(1<<5) #define LED6_ON() PORTC |=(1<<6) #define LED7_ON() PORTC |=(1<<7) #define LED5_TestOFF() PORTC &=~(1<<6) #define LED6_OFF() PORTC &=~(1<<6) #define LED7_OFF() PORTC &=~
-
Thread
Volatile Variable wird immer als undeklariert gemeldet
void); void ladestatus_pruefen_anzeigen(void); init_cpuClock(); // Ein- Ausgangs Deklaration PORTC.DIR |= (1<<PIN0) | (1<<PIN1) | (1<<PIN2) | (1<<PIN3) | (1<<PIN4); PORTE.DIR |= (1<<PIN0) | (1<<PIN3); PORTD.DIR = 0b00000000; PORTA.DIR = 0b00000000; // Timer-PWM Konfiguration TCC0.CTRLB =
Interrupts aktivieren ( HIGH LOW MIDDLE) // LED`s #define led_pwm TCC0.CCA #define port_led PORTC #define pin_ledgruen PIN1 //LED Gruen #define pin_leddualgruen PIN3 //Dual LED Gruen #define pin_leddualrot PIN2 //Dual LED Rot //Ladecontroller #define port_stat PORTD #define
-
Thread
Timer_Anfängerproblem
hab ich im Forum entdeckt.... ************************************************************** PORTC ^= 0xff; Da schalte ich einfach den Ausgang vom PORTC um. Wenn an einem Pin bisher eine 0 war, dann wird eine 1 daraus und umgekehrt. Eine angeschlossene LED wird also entweder ein oder aus geschaltet
-
Thread
atmega128 receive uart0 funktioniert nicht
is interrupt controlled sei(); char Command [LENGTH+1]; for(;;) { PORTC = 0xAA; uart0_gets( Command, LENGTH ); uart0_puts( Command ); uart0_puts( "\r\n" ); if(strcmp(Command, "start") == 0) { PORTC = 0xFA;
start"); _delay_ms(10); } else if(strcmp(Command, "exit") == 0) { PORTC = 0xBA; for(int i=0; i<19; i++) uart1_puts("exit"); _delay_ms(10); } } return 0; }[/c]
-
Thread
Timer2 beim ATmega8 tut nicht richtig
Statusregister sichern in temp, SREG push temp ;Timer2 Compare-Interrupt ;Motor ausschalten sbi PORTC, PC_Motor0 sbi PORTC, PC_Motor1 pop temp out SREG, temp reti TIM2_OVF: ;Verwendete Register sichern push temp ;Statusregister sichern in temp, SREG push temp ;Timer2
andi temp, 1 << ST_Motor_Direction breq TIM2_OVF_b ;Motor läuft rückwärts sbi PORTC, PC_Motor0 cbi PORTC, PC_Motor1 rjmp TIM2_OVF_a TIM2_OVF_b: ;Motor läuft vorwärts cbi PORTC, PC_Motor0 sbi PORTC, PC_Motor1 TIM2_OVF_a: pop temp
-
Thread
STM32 Tutorial
Wie schaffe ich es denn, dass ich z.B. Pin 8 und 9 bei PortC als Ausgang habe und Pin 5 an PortC als Eingang für nen Knopf... bzw einen anderen Pin an Port C als Analog? Also wie muss dann meine Init Struct aussehen? Irgendwie raff ich es noch nicht so ganz. Angenommen ich erstelle mit nun noch eine neue Struct und schreibe die dann auch auf PortC wird die vorherige nicht ersetzt?
-
Thread
swap in C Vs. Asm
Schleife wirklich teilweise unrollen will, kann ja im C-Quellcode die Zeile [c] PORTD = swap(PORTC); [/c] mehrmals hintereinander schreiben. Entsprechendes müsste der C-Hater auch in Assembler machen, um mehrere Swaps pro Schleifendurchlauf auszuführen.
Yalu X. schrieb im Beitrag #3304290: > PORTD = swap(PORTC); Dieser Code geht noch kürzer: [c] PORTD = 0; for(;;); [/c] Du meintest warscheinlich: [c] for(;;) PORTD = swap(PINC); [/c]
-
Thread
ATmega8-16 DIP Anfänger Probleme
crystal = 8000000 $regfile = "m8def.dat" $hwstack = 64 $swstack = 64 $framesize = 64 Config Portc.4 = Output Open "comb.4:9600,8,n,1,inverted" For Output As #1 Print #1 , "Blinker" Do Portc.4 = 1 Waitms 25 Portc.4 = 0 Waitms 25 Loop End
-
Thread
Array und schiebeoperator problem.
; muster[3][2] = 0b111111110; } void multiplexSetColumns0(int ntesmuster) { set(); PORTC = (muster[ntesmuster][0]>>1); //Dies funktioniert in der praxis uint16_t fuerporta = muster[ntesmuster][0]; // bei ntesmuster=3 gilt: fuerporta = 0b111111110 fuerporta &= ~(0b111111110); // fuerporta
folgender änderung funktionierts: [c]void multiplexSetColumns0(int ntesmuster) { work(); PORTC = (muster[ntesmuster][0]>>1); uint16_t fuerporta = muster[ntesmuster][0]; fuerporta &= ~(0b1111111111111110); fuerporta = (fuerporta<<3); uint8_t fuerporta2 = (PORTA & ~(0b00001000));
-
Thread
Problem mit OP LM324
DDRD = 0x1F; // PortD 0 bis 5 als Ausgang DDRC = 0x00; // PortC als eingang PORTC = 0xFF; //Pull up Widerstände acktivieren PORTD = 0xE0; // PORTC7 als eingang PORTD |= (1<<PD7); //Pull up Widerstand ein
-
Thread
LCD Initialisierungsproblem
>>hab auch vorsichtshalber mal RW auf >>GND gelegt und E und RS an PortC angeschlossen. Wie, mal vorsichtshalber angeschlossen? Diese Signale solltest Du schon fest in Deinem Programmcode mit einplanen. Ohne wirds niemals laufen. RW kannst Du fest auf Masse legen,
PortB hängen, siehe erstes Post und dann hab ich RW auf Grund + großzügige Zeiten und RS und E an PortC gepackt, weil PortB z.T. für den AnalogComperator benötigt wurde.
-
Thread
Atmel 32 - Problem
Huhu... Ich habe Probleme mit meinem Atmel 32.. Wenn ich ganz simple PortA und PortC mittels einem Basic-Programm deklariere, erhalte ich nicht die "programmierten Werte" an den jeweiligen Portpins... auch wenn ich den Eeprom/Flash zwischendurch reinige mittels PonyProg Erase, bzw
Config Serialin = Buffered , Size = 20 Enable Interrupts Config Porta = Output Config Portc = Output Portc = 0 Porta = 0 Do Porta = 1 Portc = 1 Loop End ------------------------------------------------------------
-
Thread
UC1608 Grafik LCD
Ich ESEL hab den Fehler gefunden, PORTC &= ~(1<<PC6) so, und nicht PORTC &= (1<<PC6) so!!! Werde die Library hier posten, wenn sie fertig ist.
|= (1<<PG1); // /RD wieder auf HIGH PORTC &= ~(1<<PC6); // CS auf LOW return(ucReturn); }
-
Thread
Mega32 und Steckbrett (Anfängerproblem)
Port-Register an die Bitstelle für das Pin eine 1 schreibt. Sollte bei dir etwa so aussehen: PortC = 1<<PC0 Allerdings kenne ich mich mit C nicht sonderlich aus. MfG Spess
> PortC = 1<<PC0 > Allerdings kenne ich mich mit C nicht sonderlich aus. PORTC |= 1 << PC0; ( |= bewirkt, dass die restlichen Bits so bleiben wie sie sind, sollte man sich immer angewöhnen bei bitweisen
-
Thread
ADWandler beim ATMEGA
ziemlich schmal. Daher meine Frage: Kann ich einen Pin als AD Eingang nutzen und einen anderen des Portc als Digitaleingang? Das würde alle meine Probleme lösen. Somit könnte ich bsp Portc.0 als AD Eingang nehmen und die Pins c.5-7 als Eingänge der Bedientasten. Oder ist das ausgeschlossen, indem Sinne, dass wenn der Portc als AD Eingang definiert ist, alle Pins als AD Pins blockiert sind. Gruß aus dem Norden
-
Thread
vergleice von zahlen
nicht: eingabe = PORTD; // output the higher 8 bits if (eingabe > 0x0F) { PORTC |= (1 << PC0); } if (eingabe < 0x0F) { PORTC &= ~(1 << PC0); } port d ist als eingang und funktioniert auch, port c ist ein ausgang und funktioniert auch. habe ich getestet mit "PORTC = PIND;" im selben programm. aber irgendwie ist PORT PC0 immer low, egal welchen wert ich an port D über schalter eingebe. wieso ist das so, ich komme da absolut nicht drauf, wo der fehler sein
-
Thread
Analog Digitalwandler ATmega8535
= (1<<ADIF); result /= 4; } if (result == 0) { for (;;) { set_Portc(PC1);//Lampe ein wait(2000); reset_Portc(PC1);//Lampe aus wait(2000); } } } Bin für jede Hilfe Dankbar. Gruß Micha
einzuwenden, nur ein bisschen arg unübersichtlich geschrieben. Geht auch in einer Zeile... @Micha: PORTC.1, an dem anscheinend eine Lampe hängt, wird nirgends als Ausgang konfiguriert. Das kann so nix werden.
-
Thread
Xmas LEDs AVR 8x8->16x10 längst auf quer
diesen durch mein Anzeigefenster zu schieben. An der Schaltung hat sich nichts geändert, PORTA und PORTC stellen die linke und rechte Hälfte des Dispalys dar. PORTD hat den Zeilendecoder (7442) und taktet die Zeilen von oben nach unten. Ich habe jetzt nochmal von vorne begonnen und mit WINAVR ein wenig
indx<19;indx++) sr[indx]= shadow_ram[indx]; i= 0; frame_rate++; } else { PORTC =sr[i++]; //Jetzt die Werte den Ports zuweisen PORTA =sr[i++]; PORTD = zeile++; // Jeweilige Zeile aktivieren } } [/pre]
-
Thread
AVR-Anfängerprojekt (LED-Leiste, DCF77, SHARP-IR)
wer hätte das gedacht, funktioniert es nicht wie geplant. Ich vorübergehend ein Displaymodul an PORTC angeschlossen um erstes debugging zu betreiben- ich kriege auf dem Display nichts angezeigt (auf dem RN-Controllerboard klappt es, also sollte es kein SW Fehler sein) Verdrahtung vom Display zum Controller
Yunus schrieb im Beitrag #4281145: > > Ich vorübergehend ein Displaymodul an PORTC angeschlossen um erstes PORTC ist auch der JTAG Port. Wenn du den für normales I/O benutzen willst, solltest du die JTAG Funktion über die Fuse abschalten.
-
Thread
Atmega128 Ports durcheinander
und D verteilt. Und bei folgenden Zeilen gibts dann Probleme: // 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
die Datenleitungen (DB0...DB7) und auch die Steuerleitungen (Enable, R/W, usw..) sind jeweils auf PORTC und PORTD verteilt. Es muss doch eine Möglichkeit geben beliebige Pins zu einem Port zusammen zu fassen, quasi eine Art virtuellen Port zu erstellen, auf den man dann entsprechend zugreifen kann
-
Thread
ATxmega32A4U - 9 Bit UART Problem
USART_BAUDCTRL_BSEL_9600 = 621 * USART_BAUDCTRL_BSCALE_9600 = -2 */ void init_usart_slv(void) { PORTC.DIRCLR = PIN6_bm; PORTC.DIRSET = PIN7_bm; PORTC.PIN7CTRL = PORT_INVEN_bm; // TX Inverted I/O data USART_NineBits_InterruptDriver_Initialize(&USART_SLV, &USARTC1, USART_DREINTLVL_LO_gc);
-
Thread
Arduino Micro Programm läuft nicht auf dem Mega
/Signalvergleich if (D[n] < val*S[m]) { //Dreiecksignal kleiner als Sinussignal bitSet(PORTC, 6); //Pin 5 HIGH } else { //Dreiecksignal größer als Sinussignal bitClear(PORTC, 6); //Pin 5 LOW } if (D[n] < val*S[m]) { //Dreiecksignal
Hallo Black D, beim Arduino Micro wird der Arduino-Pin D5 über PORTC6 angesteuert und der Arduino-Pin D6 über PORTD7. Beim Arduino Mega 2560 sind aber für den Arduino-Pin D5 PORTE3 und für D6 PORTH3 zuständig. Siehe die Dateien "pins_arduino.h" in den Ordnern C:\Program
-
Thread
invertierten UART Empfangen mit Atmega88
hardware mache. Das ist der Code: ISR(PCINT2_vect) { if(PIND & (1<<PIND2)) { PORTC &= ~(1<<PORTC5); } else { PORTC |= (1<<PORTC5); } } void PCINT_Init() { PCMSK2 |= (1<<PCINT18); // D2 PCICR |= (1<<PCIE2); } Jemand ne Idee ?
-
Thread
Einstieg ATMega644
das Datenregister des Ports die Registerinhalte geschickt (im IO View-Fenster). Eine LED sitzt an PORTC0 mit Rv 1kOhm an Vcc. JTAG-Flag habe ich ausgeschaltet. RESET liegt, ausser beim Programmieren, auf HIGH, also müsste die Kiste doch den Code durchlaufen? Testprogramm besteht aus einem schnellen
.include "m64def.inc" ;liegt im Pfad ldi r16, 0xFF out DDRC, r16 start: ldi r16,0xFF out PORTC, r16 ldi r16,0x00 out PORTC, r16 rjmp start [/avrasm] Egal, an welche Ports ich die Befehle schicke, sie bleiben laut Oszi auf LOW. Wo bin ich falsch abgebogen? Danke im Voraus
-
Thread
LCD springt nicht an
Treiber 8 Wiederstände und dann ein LED Display, dass von anderen Pins (und ein Paar Transistoren) des PORTC gemultiplext wird. Sprich: Die Pins sind sowieso genutzt, und warum dann nicht gleich das LCD ranhängen ? Geplant ist, dass bei einem Zugriff auf das LCD das LED-Display kurzzeitig ausgeschaltet
: Datenbus an LCD und Segmentanodeneingänge des LED-Displays PORTB : Steuerausgänge (alle 8) PORTC0,1 : LCD Enable 1 und 2 PORTC2,3 : LED Select 1 und 2 PORTC4-7 : Steuerausgänge (alle 4) PORTD0-6 : Mikrotaster PORTD7 : LCD Register Select Aufgrund der Anordnung der Pins am DIL-Gehäuse
-
Thread
Stoppuhr-Programm für ATmega8 bleibt immer an der gleichen Stelle hängen
mov r18, digit1 andi r18, 0b00111111 ori r18, 0b00001000 out PORTB, r31 out PORTC, r18 ldi R29, $21 WGLOOP0: ldi R30, $64 WGLOOP1: dec R30 brne WGLOOP1 dec R29 brne WGLOOP0 ldi r31, 0b00000010 sbrc digit2,7 ori r31, 0b00100000
ori r31, 0b00010000 mov r18, digit2 andi r18, 0b00110111 out PORTB, r31 out PORTC, r18 ldi R29, $21 WGLOOP2: ldi R30, $64 WGLOOP3: dec R30 brne WGLOOP3 dec R29 brne WGLOOP2 ldi r31, 0b00000100 sbrc digit3,7 ori r31, 0b00100000
-
Thread
Steuerwort des DA-Wandlers (LTC1456)
----------------------------- //--------------------------------------------------------------- PORTC |= (1<<PC2); // Clock _delay_us(wait); // Ti #1.1 PORTC |= (1<<PC1); // Load _delay_us(3); // Ti #1.2 PORTC |= (0<<PC2); // !Clock _delay_us(6); // Tp PORTC |= (0<<PC1); //
for(int i = 0; i<=11; i++) // Zählerschleife { if (leistung40[i] == 1) { PORTC |= (1<<PC0); // Port setzen } else { PORTC |= (0<<PC0); // Port setzen } _delay_us(3); // Tp PORTC = (1<<PC2); // Takt, Daten
-
Thread
SPI zwischen zwei ATMEGA8A mit SPI-Interrupt
ATMEGA8A, mit 8MHZ interner Oszillator getaktet, einer (der Slave) in STK500 der auf die Leds über PORTC angeschlossen ist. Der Master ist an einem Experimentier Board und mit kable verbunden. (ich habe einen skizzenhaften Schaltplan angehängt an den die SPI Verbindungen ausgezeichnet sind) Besten
//SPI Transfer Complete Interrupt starting on page 124 in datasheet ISR(SPI_STC_vect){ PORTC = 0xf0; zyklus = SPDR; } void init_spi_slave() { SPCR |= ((1 << SPIE) | (1 << SPE) | (0 << DORD) | (0 << MSTR) | (1 << CPOL) | (1 << CPHA) | (0 << SPR1) | (0 << SPR0)
-
Thread
Tastaturmatrix Entprellen
DDRC &= ~(ROW0 | ROW1 | ROW2 | ROW3); // Inputs DDRD &= ~(COL0 | COL1 | COL2 ); // Inputs PORTC |= ROW0 | ROW1 | ROW2 | ROW3; // with pullup PORTD |= COL0 | COL1 | COL2; // with pullup PORTD &= ~COL0; // Low DDRD |= COL0; // Output
DDRC &= ~(ROW0 | ROW1 | ROW2 | ROW3); // Inputs DDRD &= ~(COL0 | COL1 | COL2 ); // Inputs PORTC |= ROW0 | ROW1 | ROW2 | ROW3; // with pullup PORTD |= COL0 | COL1 | COL2; // with pullup PORTD &= ~COL1; // Low DDRD |= COL1; // Output
-
Thread
Bascom - C Umstieg Teil 1 - IDE-Probleme
AVRispMK2-Progammer) [c] #include <avr/io.h> #include <util/delay.h> int main(void) { PORTC.DIR = PIN0_bm | PIN1_bm; while (1) { PORTC.OUTSET = PIN0_bm; _delay_ms(10000); PORTC.OUTCLR = PIN0_bm; _delay_ms(10000); } } [/c] Version 1:
-
Thread
Fehler durch Konstante?
STEPS 256; volatile uint8_t i = 0; ISR(TIMER0_OVF_vect) { i++; if(i == RED) { PORTC |= (1<<PB0); } if(i == GREEN) { PORTC |= (1<<PB1); } if(i == BLUE) { PORTC |= (1<<PB2); } if(i==STEPS) { i=0; PORTC &= ~((1<<PB0) | (1<<PB1) | (1<<PB2));
-
Thread
delay geht nicht...
delay.h> int main(void) { DDRA = 0xff; PORTA = 0xff; DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0xff; DDRD = 0xff; PORTD = 0xff; _delay_ms(1000); PORTA=0; PORTB=0; PORTC=0; PORTD=0; _delay_ms(1000); PORTA=0xff; PORTB=0xff; PORTC=0xff; PORTD=0xff; _delay_ms(1000); PORTA=0; PORTB=0; PORTC=0; PORTD=0; return 1; } Das ganze ergibt aber keine Sekundenpausen, sondern nur eine sehr kurze Unterbrechung an den Ausgängen. Zum Thema F_CPU siehe Dateianhang. Was mach ich noch falsch?
-
Thread
ATxMega: DMA arbeitet nicht wie erwartet
Meine Konfiguration sieht folgendermaßen aus: [Code] PORTD_DIR = 0xFF; PORTB_DIR = 0xFF; PORTC_DIR = 0xFF; PORTC_OUT = 0; TCC1_CTRLA = TC_CLKSEL_DIV1_gc; TCC1_PERBUF = 256; //TCC1_INTCTRLA = 0x02; DMA.CH0.CTRLA = DMA_CH_SINGLE_bm | DMA_CH_BURSTLEN_2BYTE_gc; //
800Hz. Ich lösche das Interrupt Flag mit dem Schreiben einer 1: [c] ISR(DMA_CH0_vect){ PORTC_OUTTGL = PIN6_bm; DMA.CH0.CTRLB |= (1<<4); DMA.CH1.CTRLA |= DMA_CH_ENABLE_bm; //reloadBuffer(DMA_Buffer1); } ISR(DMA_CH1_vect){ PORTC_OUTTGL = PIN5_bm; DMA.CH1.CTRLB |= (1<<4);
-
Thread
IRMP - Infrared Multi Protocol Decoder
0x1234 //{ switch (irmp_data.command) { case 0x9A65: PORTC|=(1<<PC1); break; // Taste grün case 0x18E7: PORTC|=(1<<PC2); break; // Taste gelb case 0x1AE5: PORTC|=(1<<PC3); break; // Taste rot
durch die flags sowieso nicht gesetzt. Besser wäre so etwas: [c] for (;;) { PORTC |= 0x01; //Status LED if (irmp_get_data (&irmp_data)) { PORTC = 0xFF; _delay_ms (1000); PORTC = 0x00; } } [/c] Dann sollten
-
Thread
Atmega8 +ADC+Timer = Programmierung nur mit Reset-Taste
@Hubert G: Wie gesagt bis auf das PortC als Eingang konfiguriert wird mache ich mit dem PIN nichts. @Karl Heinz: Der Pin ist am STK500 unberührt. An PortC6 ist keine Hardware angeschlossen. Hab das Gefühl der Programmer bekommt den
angeschlossen. Kannst du auch nicht so ohne weiteres. PIN1 (Reset) ist nicht mit PC6 der Stiftleiste PortC verbunden sondern mit PORTE/AUX Pin RST. MfG Spess
-
Thread
Fehler bei CONFIG PIC 18F2420
CCP2MX = PORTBE ich hab doch gesagt, alter mist ... wann lernst du endlich LESEN?! CCP2MX = PORTC/PORTB
finde ich nicht die richtigen Stellen. Sag mir doch mal bitte, wo ich die Information "CCP2MX = PORTC/PORTB" finden kann. Im Datenblatt finde ich es auch nicht.
-
Thread
atmega88 portb probleme lastseite ausgänge
, vielleicht kann mir jemand weiterhelfen? Bei meinem Atmega88 verhält sich PORTB anders als PORTC. Mit dem PORTC steuer ich die Schaltung einer 4-stelligen 7-Segment-LED-Anzeige an. Die Schaltung mit gemeinsamer Anode wie hier auf den Seiten im Tutoral abgebildetet ist. Sobald ich die Segmente
anwählen cbi PORTD, 6 ; Anzeige 3 anwählen cbi PORTD, 7 ; Anzeige 4 anwählen cbi PORTC, 0 ; Segment a anwählen sbi PORTC, 1 ; Segment b anwählen cbi PORTC, 2 ; Segment c anwählen sbi PORTC, 3 ; Segment d anwählen cbi PORTC, 4 ; Segment e anwählen sbi PORTC
-
Thread
Bitte um Begutachtung von Schaltungsentwurf
Ich weiß ja nicht was du mit Portc machen willst, aber ein GND und vieleicht auch VCC Anschluß an JP4 könnte nicht schaden. Vor dem Spannungsregler am besten noch eine Verpolschutzdiode falls es möglich ist da etwas falsch anzuschließen
Sinn hattest). Das sind die beiden Eingänge für den internen Analog Komperator. ADC gibts nur an PORTC.
-
Thread
RAM-Bankswitching - wie am geschicktesten mit GCC auf AVR?
Benedikt K. wrote: > PORTF=(PORTF&0x0F)|(adr.b[3]<<4); > PORTC=adr.b[2]; //(oder wo auch immer A8-15 liegen) Die Indizes würde ich nochmal überdenken. Ich bin übrigens nicht sicher, ob die Variante über Speicheradressen via union schneller ist, als die geschickte
address, uint8_t byte){ CONVERTDW adr; adr.dw=address; PORTF=(PORTF&0x0F)|(adr.b[2]<<4); PORTC=adr.b[1]; //(oder wo auch immer A8-15 liegen) uint8_t *zeiger = (uint8_t *) adr.b[0]; *zeiger = byte; } [/c] > Ich bin übrigens nicht sicher, ob die Variante über Speicheradressen via >
-
Thread
String über UART an LCD
Also ich habe jetzt den Interrupt so konfiguriert: [avrasm] receive: cli SBI PORTC,3 push temp1 clr r27 ;XH auf 0 ldi r26, 0x0060 ;Anfang des SRAMs beladen = XL in temp1,UDR st X+, temp1 out UDR,temp1 rcall senden ;Feedback, was gesendet wurde
temp1 pop zl pop zh ret [/avrasm] [avrasm] receive: cli SBI PORTC,3 push zl push zh ldi zl, low(text) ldi zh, high(text) push temp1 warten: sbis UCSRA, RXC rjmp warten in temp1, UDR st Z+, temp1
-
Thread
2 x 24 LCD Bascom intialsierung klappt nicht
Config Lcd = 24 * 2 '4 MHz Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portd.3 , Rs = Portd.2 Config Lcdbus = 4 Cls Locate 1 , 1 Lcd "Hallo Welt" Pinbelegung entspricht Quellcode. LCD zeigt nur die
-
Thread
Servo BASCOM geht nicht mehr
Hi! Vielleicht ein Konflikt mit dem JTAG-Interface? PortC und JTAG=ON = Probleme ... Gruselwusel7
Mit DIM kannst Du nur Variablen definieren. DIM Port....geht nicht. Du mußt "CONFIG Portc = Output" schreiben, oder für einzelne Portpins: Config Pind.2 = Output MfG Paul
-
Thread
Nokia LCD: Problem mit SBI
Hallo, cih habe hier den Code: [c] while ((SPSR & (1<<SPIF)) != (1<<SPIF)) { PORTC |= 2; nop(); } PORTC &= 2; [/c] Mein Problem ist PC2 leuchtet immer :( spwich er haenngt in der While schleife aber warum? was mich wundert ist, das ich 2 .. 3 mal Daten senden kann und
schaltest du nach der Schleife alle außer PC2 aus. Meintest du nach der Schleife vielleicht: [C] PORTC &= ~2; [/C]
-
Thread
LCD 162C mit ATMega16 ansteuern.
wunderbar. Nun brauche ich aber für eine Anwendung einen ATMega16( int. 1 MHz ), bei dem ich das LCD an PORTC statt PORTD betreiben möchte. Geht nicht anders. Ich habe also im Code alles betreffende auf PORTC umbenannt, inkl. der DDRC. Im Programm ist auch der µC umgestellt. Wenn ich dann das Programm auf
Tobias P. schrieb: > für eine Anwendung einen ATMega16( int. 1 MHz ), bei dem ich das LCD an > PORTC statt PORTD betreiben möchte. Mega16 und PORTC JTAG Fuse abgeschaltet?
-
Thread
Controller Board Pollin
Carsten G. schrieb im Beitrag #2639185: > DDRC = ( 1 << PC0 ); > PORTC = ( 1 << PC0 ); > > while( 1 ); Ich sehe schon wie der OP das kopiert ... Eher damit testen: [c] #include <avr/io.h> int main (void) { // PC0 als Ausgang setzen DDRC = (1<<PC0); // PC0 auf 1 setzen PORTC = (1<<PC0); while(1) { // Hier könnte noch mehr Quelltext stehen } return 0; [/c] } Wie aber alles funktioniert
-
Thread
Entwicklungsboard Easy PIC v7 (PIC18F45K22)
static unsigned char counter= 0; TRISD= 0x00; TRISC= 0x00; TRISB= 0x01; PORTD= 0x00; PORTC= 0x01; RCONbits.IPEN= 1; /*enable low interrupts generally*/ INTCON2bits.TMR0IP= 0; /*timer0 auf low int*/ INTCONbits.PEIE = 1; // Enable Peripheral interrupt INTCONbits.GIEL = 1; /
FALLING_EDGE_INT &PORTB_PULLUPS_OFF); WriteTimer0(0); while(1){ if(counter %2) PORTC= 0xF0; else{ PORTC= 0x0F; counter= 0; } Delay10KTCYx(255); counter++; } } [/c]
-
Thread
Timer Interrupt wird nicht ausgelöst?
/Ausgang; Die vier Anoden der 7-Segmentanzeigen //vier 7-Segmentanzeigen aktivieren PORTC|=(1<<PC0); PORTC|=(1<<PC1); PORTC|=(1<<PC2); PORTC|=(1<<PC3); while(1) { int i=0; do { PORTD=sieben_seg_ziffer[i]; if(extraTime
-
Thread
Problem mit Standard-LCD an AVR
Standard-LCDs. Ich habe den Assembler-Code aus dem Tutorial für WinAVR umgeschrieben. Seinerzeit auf PortC hat das auch wunderbar funktioniert. Jetzt wollte ich auf PortD umstellen, da ich PortC anderweitig benötige (A/D-Wandlung) und in PortD die beiden Nibble vertauscht und E an Pin 3 und RS an Pin 2
Falls einer von euch mal einen Blich drauf wergen könnte... hier noch die Belegung: alt neu PortC PortD 0 DB4 - 1 DB5 - 2 DB6 RS 3 DB7 E 4 RS DB4 5 E DB5 6 - DB6 7 - DB7 danke Dirk
-
Thread
LCD WINTREX WD-C2704M-1HNN
' NMEA Schnittstelle Dim ___lcdno as Bit Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 Config Lcd = 40*4 Initlcd Cursor Off Do ___lcdno = 0 Initlcd Cls Cursor Off Home Locate 1 ,
-
Thread
PWM Tonhöhe und Lautstärke
binary_foo_bin_end - _binary_foo_bin_start; DDRC=0xFF; for (i=0; i<size; i++) { PORTC = pgm_read_byte(&_binary_foo_bin_start[i]); } } [/c] Man muss nur noch das Objektfile dem Linker mitteilen, das geht in den Projektoptionen unter AVR Studio 4.18 so. Project -> Configuration
foo.bin" }; int main () { for (size_t i = 0; i < sizeof (foo_bin); ++i) { PORTC = foo_bin[i]; } }[/c] Praktischerweise kann man auch andere Sachen mit ins Array packen, zum Beispiel eine abschließende \0 um einen C-String zu bekommen: [c]static const __flash char foo_c