-
Thread
Probelme bei einem Programm
0b00001010 ;Vergleich mit Maske "S1 && !S2 && S3" breq led_ein ;Springe zu "LED einschalten" sbi portc, 0 ;LED an PORTC.0 aus rjmp loop led_ein: cbi portc, 0 ;LED an PORTC.0 ein rjmp loop
;Vergleich mit Maske "S1 && !S2 && S3" breq led_ein ;Springe zu "LED einschalten" sbi portc, 0 ;LED an PORTC.0 aus rjmp loop led_ein: cbi portc, 0 ;LED an PORTC.0 ein rjmp loop Ich verzweifel langsam noch.. sich das selber beizubringen ist nicht so einfach wie ich
-
Thread
Microcontroller über Windows Applikation anpassen. Aber wie?
Sequence[nextNr]; nextNr++; if( nextNr == lenSequence ) { nextNr = 0; PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC2); PORTC &= ~(1<<PC3); PORTC &= ~(1<<PC4); } if( command & ROT ) { PORTC |= (1<<PC4); // Turn On Red LED } if( command
nextNr]; nextNr++; if( nextNr == lenSequence ) { nextNr = 0; } PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC2); PORTC &= ~(1<<PC3); PORTC &= ~(1<<PC4); if( command & ROT ) { PORTC |= (1<<PC4); // Turn On Red LED } if(
-
Thread
XMega: ISR wird nicht getriggered
-256.html Das getestete Program: [c] #include <avr/io.h> #include <avr/interrupt.h> ISR(PORTC_INT0_vect) { PORTC.OUTTGL = 14; } int main() { PORTC_DIRCLR = PIN0_bm; // PORTC_INT0 als Eingang PORTC.PIN0CTRL = PORT_OPC_TOTEM_gc | PORT_ISC_FALLING_gc; PORTC.INTCTRL = (PORTC.INTCTRL
[c]ISR(PORTC_INT0_vect){ PORTC.OUTTGL = 14; }[/c] meinst du da nicht 0x14?
-
Thread
Potentiometer mit ADU Atmega328PB [HILFE]
Mich irritiert dies hier > PORTC = 0xFF; // Alle Segmente der 7-Segemntanzeige ... Anschließend wird mit PC_Bitmaske verodert, da ändert sich folglich dann gar nichts. Muss das nicht PORTC = 0 heißen (je nach Segment-Beschaltung
Vorschlag: PORTC &= PC_Bitmaske[number]; (Vielleicht auch PORTC &= ~(PC_Bitmaske[number]), je nachdem, wie PC_Bitmaske codiert wurde)
-
Thread
Schieberegister mit Atmega88 unter Verwendung von AtmelStudio und mySmartUSBlite ansteuern
{ pin_ein(PORTC,PC4); //Schiebetakt aktivieren pin_aus(PORTC,PC4); //Schiebetakt reserten pin_aus(PORTC,PC1); //Seriellen Eingang auf dig. Null } pin_ein(PORTC,PC3); //Speichertakt
//pin_aus(PORTC,PC1); //Seriellen Eingang auf dig. Null //} pin_ein(PORTC,PC3); //Speichertakt aktivieren. pin_aus(PORTC,PC3); //speichern. pin_aus(PORTC,PC2); //Ausgänge
-
Thread
Schieberegister ohne SPi
PORTC &= ~(1<<A); //A auf Ausgangsposition } else { PORTC &= ~(1<<A); //stelle (zur Sicherheit) Datenbus auf Low PORTC |= (1<<SHIFTCLOCK); //und gibt eine
byteOut (uint8_t word) { for (uint8_t i = 0;i < 8;i++) { if (word & (1<<0)) PORTC |= (1<<A); else PORTC &= ~(1<<A); PORTC |= (1<<SHIFTCLOCK); PORTC &= ~(1<<SHIFTCLOCK); word >>= 1; } PORTC |= (1<<LATCHCLOCK); PORTC &= ~(1<<LATCHCLOCK);
-
Thread
bascom spinnt
Hallo, Ich habe folgendes problem, wenn ich zb den portc.0 als ausgang konfiguriere und dann eine schleife mache die do aussieht: Do Portc.0=1 Loop Musste die led an portc.0 doch leuchten oder versteh ich das falsch? Die led leuchtet nicht, ich hab
Hast Du den Ausgang so konfiguriert: Config Portc.0 = Output Hast Du die LED richtig angeschlossen?
-
Thread
PORTC bei Atmega16 Problem
90S8515 haben alle Aus- und Eingänge funktioniert. Nun habe ich auf den Atmega 16 gewechselt und bei PortC funktionieren die Bits 2 bis 5 nicht. Die anderen gehen. Hat jemand eine Idee?
-
Thread
Geisterbilder auf einer 8 x 8 Matrix
PORTB = VRAM[2]; PORTC |= (1<<PC5); _delay_ms(2); PORTC &= ~(1<<PC5); PORTB = 0x00; PORTB = VRAM[3]; PORTC |= (1<<PC4); _delay_ms(2); PORTC &= ~(1<<PC4); PORTB = 0x00;
case 1: PORTC |= (1<<PC6); break; case 2: PORTC |= (1<<PC5); break; case 3: PORTC |= (1<<PC4); break; case 4: PORTC |= (1<<PC3); break; case 5: PORTC |= (1<<PC2); break
-
Thread
Drehregler an uC - geht das?
Und PORTC geht schonmal garnicht. Peter
TCCR2 = _BV (CS22) | _BV (WGM21); OCR2 = 124; TIMSK = _BV (OCIE2); DDRC = 0xf3; // PortC als Ausgang, 1111 0011, bis auf PC2,PC3 PORTC = 0x0c; // 0000 1100 sei (); } SIGNAL (SIG_OUTPUT_COMPARE2) { static uint16_t lc=0; // interner Counter char i = 0; // Peter's Code
-
Thread
sleep oder NOP in asm
Register mit 1111 1111 füllen out PORTA, r16 ;PORTA auf 0xFF setzen -> alle LEDs an out PORTC, r16 ;PORTC auf 0xFF setzen -> alle LEDs an ldi r16, 0xC0 ;r16 Register mit 1000 0000 füllen out PORTD, r16 ;PORTD auf 0x80 setzen -> LED7 an ret ;wieder zurück
Register mit 1111 1111 füllen out PORTA, r16 ;PORTA auf 0xFF setzen -> alle LEDs an out PORTC, r16 ;PORTC auf 0xFF setzen -> alle LEDs an ldi r16, 0xC0 ;r16 Register mit 1000 0000 füllen out PORTD, r16 ;PORTD auf 0x80 setzen -> LED7 an ret ;wieder zurück
-
Thread
bidirektionale RS232 Funkbrücke mit RFM12
Senderoutine 4 mal durchlaufen. Für jeden Buchstaben einmal. Meine LEDs (low aktiv): #define LED_TX PORTC_4 // TX LED #define LED_RX PORTC_3 // RX LED #define LED_RETRANS PORTC_2 // Retransmit LED #define LED_ERR PORTC_1 // Error LED #define LED_POWER PORTC_0 // Power
<MSTR); + SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0); // clk/16 leds.h ====== - #define LED_TX PORTC_2 - #define LED_RX PORTC_3 - #define LED_RETRANS PORTC_1 - #define LED_ERR PORTC_0 + #define LED_TX PORTD_5 + #define LED_RX PORTD_5 + #define LED_RETRANS PORTD_6 + #define
-
Thread
Wie Assembler ISR in C integrieren ?
"I" (_SFR_IO_ADDR(GPIOR1), [gp2] "I" (_SFR_IO_ADDR(GPIOR2), [port] "I" (_SFR_IO_ADDR(PORTC))); [/c]
Programm bisher aber noch nichts. Sollen die Kurven in einem externen Eeprom gehalten werden mit PORTC als Adresseingang? Im Augenblick liefert ein DAC an PORTC nur eine Sägezahnkurve. Gruß, Stefan
-
Thread
Wie External SRAM mit GCC Optimierung ansteuern?
Probier's mal so herum: [pre] PORTC &= 0b00001111; PORTC |= (MemLowAdr << 4); asm volatile ("nop"); [/pre] oder besser gleich [pre] PORTC = (PORTC & 0b00001111) | (MemLowAdr << 4); asm volatile ("nop"); [/pre]
PORTC &= 0b00001111; // KonfigByte anlegen PORTD = ((MemQuart | (1 << CUSPtoDRDY))); //Wahl des Quartals, CUSP aus, WRITE = Low PORTD &= ~(1 << PD3); PORTC |= (MemKonfigAdr << 4); PORTC &
-
Thread
Bei meinem Atmega88 verhält sich PORTB anders als PORTC
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
PORTC, 4 ; Segment e anwählen sbi PORTC, 5 ; Segment f anwählen ; cbi PORTC, 6 ; Segment g anwählen ; sbi PORTC, 7 ; Segment . anwählen
-
Thread
AVR als EPROM benutzen (C-Optimierung)
Tim T. schrieb im Beitrag #4751313: > PORTC = pgm_read_byte(&speicher[(PINB << 8) | PINA]); Was passiert, wenn Du stattdessen > PORTC = pgm_read_byte(&speicher[(PINB << 8) + PINA]); verwendest?
.ORG FIRSTBOOTSTART main: ;1 in ZL,PINA ; 1 in ZH,PINB ; 1 lpm R0,Z ; 3 out PORTC,R0 ; 1 ;2 in ZL,PINA ; 1 in ZH,PINB ; 1 lpm R0,Z ; 3 out PORTC,R0 ; 1 ;3 in ZL,PINA ; 1 in ZH,PINB ; 1 lpm R0,Z ; 3 out PORTC,R0 ; 1 ... ;511 in ZL,PINA
-
Thread
Warum funktioniert mein AVR Assembler Code nicht?
was erscheint auf der Anzeige mit so einem Programmschnipsel:ldi r17, > 0b00110000; > out Port portc,r17; Nix. Auf deinem Monitor allerdings: error: PORTC: Unknown instruction or macro
nur PORTC. Hoffentlich ist das Elend bald zu Ende.
-
Thread
Variablen vergleichen
() >100 || z==1) // Greifer schließen { while(i<52) { writeString_P("Greifer schließen\n"); PORTC |=(1<<0); mSleep(1); PORTC &=~ (1<<0); mSleep(19); i++;} } if(i>50) // Schwenkarm nach oben { while(a<52) { writeString_P("Schwenkarm nach oben\n"); PORTC |=(1<<1); mSleep(2); PORTC
getStopwatch1()>200 || z==1) // Greifer schließen { while(i<52) { writeString_P("Greifer schließen\n"); PORTC |=(1<<0); mSleep(1); PORTC &=~ (1<<0); mSleep(19); i++;} } if(i>50) // Schwenkarm nach oben { while(a<52) { writeString_P("Schwenkarm nach oben\n"); PORTC |=(1<<1); mSleep(2); PORTC
-
Thread
Warum kann nicht alles so einfach wie Arduino sein?
case 6: PORTB |= (1 << PB6); break;\ case 7: PORTB |= (1 << PB7); break;\ \ case 8: PORTC |= (1 << PC0); break;\ case 9: PORTC |= (1 << PC1); break;\ case 10: PORTC |= (1 << PC2); break;\ case 11: PORTC |= (1 << PC3); break;\ case 12: PORTC |= (1 << PC4); break
case 6: PORTB &= ~(1 << PB6); break;\ case 7: PORTB &= ~(1 << PB7); break;\ \ case 8: PORTC &= ~(1 << PC0); break;\ case 9: PORTC &= ~(1 << PC1); break;\ case 10: PORTC &= ~(1 << PC2); break;\ case 11: PORTC &= ~(1 << PC3); break;\ case 12: PORTC &= ~(1 << PC4)
-
Thread
Nach einer Interrupt Routine wird der PORT zurückgesetzt
define INT1_vect _VECTOR(2) volatile uint8_t temp; ISR(INT0_vect) { PORTC = 0x01; } ISR(INT1_vect) { switch (temp) { case 0: PORTC = 0x01; temp++; break; case 1: PORTC = 0x02; temp++; break; case 3: PORTC = 0x03; temp
define INT1_vect _VECTOR(2) volatile uint8_t temp; ISR(INT0_vect) { PORTC = 0x01; } ISR(INT1_vect) { switch (temp) { case 0: PORTC = 0x01; temp++; break; case 1: PORTC = 0x02; temp++; break; case 3: PORTC = 0x03; temp
-
Thread
ATMega328-basierter Sprach-Synthesizer für den CPC 464 - Schnelles Byte-weises Lesen mit dem 328?
keine 8bit "am Stueck" frei an den Ports, deswegen musste ich ein Nibble vom PORTB und eines vom PORTC lesen und verknusen. Evtl. kostet selbst das zu viel Zeit... evtl. sollte ich die Daten lieber "Raw" in 2 Arrays speichern (eines fur PORTB, eines fuer PORTC), und vor dem Abspielen / Senden an den
int main(void) { DDRB = 0; DDRC = 0b00110000; initUSART(); clearBit(PORTC, 5); clearBit(PORTC, 4); while (receiveByte() != ':'); buffer_index = 0; last_low = 0; last_high = 0; initInterrupt(); while ( 1 ) { setBit(PORTC, 5
-
Thread
AVR Einstieg / Probleme mit Programm Interrupt
0b000010; GetWaitTime(); PORTB = 0b000001; GetWaitTime(); PORTB = 0b000000; PORTC = 0b000001; GetWaitTime(); PORTC = 0b000010; GetWaitTime(); PORTC = 0b000100; GetWaitTime(); PORTC = 0b001000; GetWaitTime(); PORTC = 0b000100; GetWaitTime(); PORTC =
> PORTB = 0b100000; > PORTC = 0b001000; >da läuchtet Da drehen sich mir gleich die Fussnägel hoch. "Leuchtet" heisst das. > allerdings nur PORTC Pin 4 Es ist PORTC3. >PORTB Pin 1 bleibt dagegen aus, Kein
-
Thread
Problem bei Einlesen der Analogwerte
Port C als Ausgang setzen while( 1 ) { if( PINA & ( 1 << PA0 ) ) PORTC |= 1<<PC0; else PORTC &= ~(1<<PC0); if( PINA & ( 1 << PA1 ) ) PORTC |= 1<<PC1; else PORTC &= ~(1<<PC1); // Ansonsten setze PC0 LOW } }
PORTC &= ~(1<<PC1); [/c]
-
Thread
Es geht einfachnicht in meinen Kopf rein.
r16,PortC ist falsch da es ein IN r16,PINC sein muss. In dem Fall nicht. Er will die Bits am PORTC manipulieren. Dazu muss er sich den aktuellen Wert vom PORTC holen, die Bits entsprechend umdrehen und dann wieder auf PORTC rausschreiben. Ihm geht es nicht darum, was extern am PINC anliegt, sondern wie PORTC aktuell gesetzt ist. Daher IN r16, PORTC das ist schon richtig so. > Nun benutze ich mal diesen Thread und frage, kann man auch die PINC > erhalten wenn der Port ein Ausgang ist um so Informationen
-
Thread
Atmega PortC Problem
zu wechseln. Auf jedem anderen Port funktionierte es einwandfrei. Also habe ich einfach mal alle PortC Pins auf Ausgang ung high geschaltet und dann mit einer LED über nen Widerstand mit Masse verbunden. Dabei ergab sich, dass an manchen Pins die LED hell leuchtete, an manchen schwach und an einem gar
-
Thread
ATMega32 PortC
Ich habe einen AtMega32 und daran 2 Taster an den Port6 Pin7 und Pin8 angeschlossen. Ich versuch die anzusteuern doch es funktioniert nicht. Ich habe es so versucht: int main(void) { DDRC &= ((1<<PC6) | (1<<PC7)); while(1) { if (DDRC = 64) { ioexpand_send_recive(Port1,2,OUTPUT); } else { ioexpand_send_recive(Port1,1,OUTPUT); } } }
-
Thread
PINC, PORTC, DDRC "umrechnen"
mich nerven die ewig langen Header Dateien zur GPIO Konfiguration, daher will ich Konstanten PINC, PORTC und DDRC umrechnen. Im Header File soll nur noch eine Konstante stehen, der Präprozesser soll die Schreibarbeit machen. Hab zwei Ansätze, bin jedoch noch mit keinem zu einer Lösung gekommen.
1 (leider schon gelöscht, hier das Prinzip): #define _DDR(port) ( (port==PORTB)?DDRB:((port==PORTC)?DDRC:0) ) Das kann man natürlich ewig fortsetzen,... Nachteil: mann muss sich was für die nicht definierten PORTA,... überlegen, welche villeicht bei anderen AVRs vorhanden sind. Habe diese mit
-
Thread
AVR Programm, brauche Hilfe bei Kommentar bitte
schaltet zwischen den case durch die variable i { case 0: // Wenn 1. Durchlauf PORTC=0xFF; // alle LED aus i++; break; case 1: PORTC=0b1111110; // letzte LED an i++; break; case 2: PORTC=0b1111100; // letzte und vorletzte LED an i++; break; case 3: PORTC=0b1110100; // zusätzliche LED 4 an i++; break; case 4: PORTC=0b1100100; // und LED 5 an i=0; // Zähler wieder auf 0 setzen break; } TCNT1=53816;
-
Thread
C code UART Atmega und Optimierung
case 'C': PORTC |= ( 1 << PB2 ); break; case 'c': PORTC &= ~( 1 << PB2 ); break; case 'D': PORTC |= ( 1 << PB3 ); break; case 'd': PORTC &= ~( 1 << PB3 ); break; case 'E': PORTC |= ( 1 << PB4 ); break; case 'e': PORTC &= ~( 1 << PB4 ); break; case 'F': PORTC |= ( 1 << PB5 ); break; case 'f': PORTC &= ~( 1 << PB5 ); break;
-
Thread
Laufzeitverhalten main-Funktion
PORTC ^= (1<<PC3); trigger_1ms = false; } [/c]
Aber der TO wollte das haben: PORTC ^= (1<<PC4); und nicht das: PORTC = (1<<PC4); Und "PORTC ^= (1<<PC4);" ist nicht interruptsicher
-
Thread
volatile Funktionen
damit die Schleife nicht wegoptimiert wird } while (i>0); // Ergebnis ausgeben PORTC=i; } [/c] Jetzt wird zwar innerhalb der Schleife i immer schön neu aus dem RAM gelesen, aber zum Schluss wird doch wieder einfach 0 auf PORTC ausgegeben: [pre] 000000b4 <main>: b4: 8f
ATOMIC_BLOCK(ATOMIC_FORCEON) { iRead = i; } // Ergebnis ausgeben PORTC=iRead; }[/c] Hab grad keinen Compiler zur Hand.
-
Thread
led toogle mit mega88
if( counter >= 5 ) { switch( PORTC ) { case 0x00: PORTC = 0xFF; case 0xFF: PORTC = 0x00; } counter = 0; } } [/c] Ich habs jetzt schon so oft kontrolliert aber ich find
[c] switch( PORTC ) { case 0x00: PORTC = 0xFF; case 0xFF: PORTC = 0x00; } [/c] Das ganze ist ziemlich umständlich. Schreib lieber [c] PORTC ~= PORTC; [/c] oder [c]
-
Thread
DMX Dimmerpack bauen
Set PORTC.3 Stop Timer1 Start Timer1 Compare1=&h5 status = 2 Case 2 'nach 200ms Reset PORTC.3 Stop Timer1 Start Timer1 Compare1=&h4DD status = 3 Case 3 'nach 1,5s Set PORTC.3 Stop Timer1 Start Timer1 Compare1=&h5 status = 4 Case 4 'nach 200ms Reset PORTC.3 Stop Timer1 Disable Oc1A End Select End Interrupt [/Code]
-
Thread
ATMEGA88 PORTC Ausgänge brechen ein
Port D auf Ausgang out PORTD, temp ldi temp, 0b00000000 ; Port D auf Ausgang out PORTC, temp reti
schreiben also in den Memory-Mapped-Bereich an die IO-Adressen der beiden Register. Und was liegt dort? PORTC und DDRC.
-
Thread
Atmega 32 zu hoher Low Pegel
= (0 << 6); DDRC |= (0 << 7); MCUCSR = (1<<JTD); MCUCSR = (1<<JTD); while(1==1) { PORTC |= (0 << 7); PORTC |= (0 << 6); PORTC |= (0 << 5); PORTC |= (0 << 4); PORTC |= (0 << 3); PORTC |= (0 << 2); PORTC |= (0 << 1); PORTC |= (1 << 0); } }
) ; SETBIT0(DDRC,7) ; MCUCSR |=(1<<JTD); MCUCSR |=(1<<JTD); while(1==1) { SETBIT0(PORTC,0) ; SETBIT0(PORTC,1) ; SETBIT0(PORTC,2) ; SETBIT0(PORTC,3) ; SETBIT0(PORTC,4) ; SETBIT0(PORTC,5) ; SETBIT0(PORTC,6) ; SETBIT0(PORTC,7) ; } } Müsste ja stimmen oder? Aber wieder 1,2V
-
Thread
Anfänger Frage zu variable hochzählen
include <util/delay.h> #include <stdbool.h> #include <avr/io.h> #define led (1<<PC0) #define ein PORTC |= #define aus PORTC &= ~ bool tastergedrueckt = true; int main(void) { DDRC = (1<<PC0); PORTD =(1<<PD0); void ledblink() { PORTC |= (1<<PC0); _delay_ms(400); PORTC &= ~(1<<PC0); _delay_ms(400); PORTC |= (1<<PC0); _delay_ms(400); PORTC &= ~(1<<PC0); _delay_ms(400); } while(1) { if (!(PIND&(1<<PD0))) { _delay_ms(300); tastergedrueckt
-
Thread
Atmega8 Einstiegsprobleme
Led Toggle */ void LedSet(unsigned char state) { switch (state) { case 0: PORTC &= ~(1<<5); break; case 1: PORTC |= 1<<5; break; default: if (PORTC & 1<<5) PORTC &= ~(1<<5); else PORTC |= 1<<5; } } int
m8def.inc" ldi r16, 0xFF out DDRC, r16 ldi r16, 0x00 out PORTC, r16 ende: rjmp ende [/avrasm] Gruß Lasse
-
Thread
Byte auf verteilten Ausgängen ordnen
); if (byte & 0x08) PORTD |= (1 << PD3); else PORTD &= ~(1 << PD3); if (byte & 0x10) PORTC |= (1 << PC3); else PORTC &= ~(1 << PC3); if (byte & 0x20) PORTC |= (1 << PC2); else PORTC &= ~(1 << PC2); if (byte & 0x40) PORTC |= (1 << PC1); else PORTC &= ~(1 << PC1); if (byte & 0x80) PORTC |= (1 << PC0); else PORTC &= ~(1 << PC0); } int main( void ) { while( 1 ) portout2( PINB ); return 0; } [/c] Trotzdem würde ich eher die 1. Variante nehmen, da die 2. bei
-
Thread
BCD auf C: was mache ich falsch?
hier muss auch was mit Index her, ANPASSEN [/c] Hier ist gerade das Problem. Weil: [c] /* VL0 PORTC PC3 */ #define setVL0 (PORTC |= (1<<PC3)) #define resVL0 (PORTC &= ~(1<<PC3)) /* VL1 PORTC PC2 */ #define setVL1 (PORTC |= (1<<PC2)) #define resVL1 (PORTC &= ~(1<<PC2)) /* VL2 PORTC PC1 */ #define setVL2 (PORTC |= (1<<PC1)) #define resVL2 (PORTC &= ~(1<<PC1)) /* VL3 PORTC PC0 */ #define setVL3 (PORTC |= (1<<PC0)) #define resVL3 (PORTC &= ~(1<<PC0)) /* VL4 PORTB PB2 */ #define setVL4 (PORTB |= (1
-
Thread
LCD Display zeigt nur Balken, keinen Text. 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 Config Lcdbus = 4 Cls Locate 1 , 1 Lcd "lululululululululu" End Beschaltung -------------------------
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 Cls Locate 1 , 1 Lcd "lululululululululu" End So sieht der neue Quelltext aus, leider hat auch der nichts
-
Thread
LCD am AVR Problem
m16def.dat" Config Lcd = 16 * 2 'damit läuft auch ein 8*2 LCD Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls Cursor off locate 1,1 Lcd "Zeile 1" locate 2,1 Lcd "Zeile 2" end Gruß
angeschlosse: VDD, VIN, VOUT, RESET, PSB auf +5V VSS, CSB aus GND RS, RW, D0-D7 an PORTB und PORTC des ATMega8515 Habe auch gemessen, dass alles korrekt angeschlossen ist und die Signale ankommen. Besten Dank im voraus, mgvfG Peter
-
Thread
Display Ansteuerung - 16 x 4 DotMatrix LCD
----- Ddrc = &B11111111 Ddrd = &B11111111 Config Lcd = 16 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.6 Portd.7 = 1 Waitms 20 Locate 2 , 4 Lcd "Hallo" End ------------------------------------------------
.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.6 Portd.7 = 1 '----------------------------------------------------------------------- Waitms 50 Initlcd Cls Cursor On Blink Locate 1 , 1 Lcd "Hallo"
-
Thread
HILFE Seltsames Verhalten Atmega 328P auf Arduino-Board mag Code nicht
im Beitrag #6342462: >> RS liegt auf PC4, EN auf PC4. Tipfehler! (RS = Register select) <-> PORTC PortBit 4 (EN = Enable) <-> PORTC PortBit 5
> umschaltet und natürlich auch ein Latch? Sory war Tippfehler! (RS = Register select) <-> PORTC PortBit 4 (EN = Enable) <-> PORTC PortBit 5
-
Thread
UHR- if-bedingung
>wenn ein PullUP eingeschaltet ist, dann wird diese mit PORTC = (1 << >PC3); wieder abgeschaltet. Nur zum Verständnis: PORTC = ( 1 << PC0); entspricht PORTC = b'0000 0001' dadurch schalte ich mein Pull-up Widerstand ab, also muss ich PORTC = ( 1
>PORTC |= ( 1 << PC0) jetzt dämmerts :D
-
Thread
Bitoperationen Zusammenfassen
hat, aber ich möchte sie gerne noch benutzen. Also schreibe ich PORTC = 0x02 um in PORTC |= 0x02 um Bit 1 zu setzen und PORTC &= ~ 0x02; um Bit 1 auf 0 zu bringen. Das ist überschaubar, solange der Zustand, den das Bit bekommen soll bekannt ist. Bei PORTC = (cmd
oberen 4 Bit unverändert zu lassen, egal was in der Variablen x steht, würde ich sowas versuchen: PORTC = (PORTC & 240) | (x & 15); Allerdings bin ich mir da gerade nicht so ganz sicher, ob das mit dem PORTC auf der rechten Seite funktioniert. Sollte es eigentlich, da ein PORTC |= y auch nichts anderes
-
Thread
SHT11 Problem
hier ja wohl auf Ausgang, aber den Clock auf Eingang, zuminsdest danach: #define DATA_OUT PORTC.1 #define DATA_IN PINC.1 #define SCK PORTC.0 Ich hab jetzt aber keine Zeit den ganzen Code durchzugehen. Gruß Volker
#define DATA PORTC.1 #define SCK PORTC.0 char s_write_byte(unsigned char value) { unsigned char i,error=0; DDRC = 0b00000010; // DATA Ausgang Ja aber Clock steht nun auf Eingang, also falsch
-
Thread
Timer und ADC bei Atmega16 mit WinAVR
ATMega16 und PORTC? Da klingelts sofort: Hast Du das JTAG deaktiviert?
Auslieferungszustand des ATMega16 gesetzt und das JTAG-Interface blockiert die 4 mittleren Pins von PORTC (Pins 5...2). Du musst diese Fuse unbedingt löschen, um PORTC benutzen zu können!
-
Thread
Schalter PORTC 1-5 C
DDRC &= ~(1<<DDC2); DDRC &= ~(1<<DDC3); DDRC &= ~(1<<DDC4); DDRC &= ~(1<<DDC5); PORTC |= (1<<PC1); /* internen Pull-Up an PC1-5 aktivieren */ PORTC |= (1<<PC2); PORTC |= (1<<PC3); PORTC |= (1<<PC4); PORTC |= (1<<PC5); /* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite
DDRC &= ~(1<<DDC2); DDRC &= ~(1<<DDC3); DDRC &= ~(1<<DDC4); DDRC &= ~(1<<DDC5); //PORTC |= (1<<PC1); /* internen Pull-Up an PC1-5 aktivieren */ PORTC |= (1<<PC2); PORTC |= (1<<PC3); PORTC |= (1<<PC4); PORTC |= (1<<PC5); /* Wenn Taster gelickt ist soll LED an gehen*
-
Thread
I/O Ports ATmega16
Hallo. Ich wollte einen Chip mit dem ATmega16 programmieren. Die Datenleitungen hängen an PORTC.0 bis .7 Wenn ich nun etwas über die Ports ausgeben will, setze ich den Port auf Ausgang (DDRC=0xFF) und setze eine 0x80. Also: PORTC=0x80; Wenn ich nach dem Befehl eine endlosschleife setze, zeigt
also PC2-PC5 beinhalten die standartmäßig eingeschaltete JTAG ohne die auszuschalten läuft auf portc2-5 nichts ! MFG winne
-
Thread
Lauflicht mit Latches Übergangproblem
= 1 'LATCH Erste Modul enable Portb.0 = 1 Portb.1 = 1 Portc.5 = 1 Portc.4 = 1 Portc.3 = 1 Portc.2 = 1 Portc.1 = 0 Portd.6 = 0 Portd.7 = 0 Nur das funktioniert zwar, ist allerdings mit riesen Schreibaufwand verbunden Von daher, wie kann
Hi > Portb.0 = 1 > Portb.1 = 1 > Portc.5 = 1 > Portc.4 = 1 > Portc.3 = 1 > Portc.2 = 1 > Portc.1 = 0 Was soll das bewirken? MfG Spess