-
Thread
7 Segment Anzeige?!
das Anzeigt wird alles Angezeigt -.- Was mache ich falsch? $regfile = "m88def.dat". Config Portc = Output Config Portb = Output Config Portd = Output Segment_1 Alias Portc.0 'Änderung der Portnamen für Schalt Segmente Segment_2 Alias Portc.1 Segment_3 Alias Portc.2 Segment_4 Alias Portc.3 Segment_5 Alias Portc.4 Segment_6 Alias Portc.5 Segment_a Alias Portd.0 'Anderung der Portnamen für Anzeige Segmente Segment_b Alias
-
Thread
AVR-Tutorial - 4. LCD in fastavr-basic umgesetzt
(temp1) temp1= temp1 And &b00001111 PORTC=temp1 lcd_enable() temp2=temp2 And &b00001111 PORTC=temp2 lcd_enable() WaitUs 5 End Sub Sub lcd_init() WaitMs 250 PORTC=&b00000011 lcd_enable() WaitMs 5 lcd_enable
lcd_command() WaitMs 5 End Sub Sub lcd_enable() PORTC.4=1 Nop 3 PORTC.4=0 End Sub
-
Thread
Trivialprogramm für PIC16F1936 - Was mache ich falsch?
. Such mal im Datenblatt nach einem Register das ANSEL oder so ähnlich heißt. Ich sehe gerade PORTC ist nicht davon betroffen. Versuch mal comf LATC, 1 Welchen Wert hat F in deinem Fall?
LATA banksel TRISA clrf TRISA Genau so würde ich es erst mal machen, nur mit PORTC, LATC und TRISC Und dann, falls COMF weiter nicht geht, dann halt weiter mit banksel LATC movlw 0x00 movwf LATC movlw 0xff movwf LATC
-
Thread
AVR Studio und Funktion _delay_ms()
delay_time = 2000; DDRB = 0xFF; // PORTB STK500 LEDs PORTB = 0x00; DDRC = 0xFF; // PORTC 2x 74C48 PORTC = 0x00; for (;;) { for (int i = 0; i <= 255; i++) { _delay_ms (delay_time); PORTB = i; PORTB = ~PORTB; PORTC = i; _delay_ms (delay_time
-
Thread
Atmel Addonboard - LCD ansteuerung
CURSOR_HOME 0x02 // Pinbelegung für das LCD, an verwendete Pins anpassen #define LCD_PORT_4 PORTC #define LCD_DDR_4 DDRC #define LCD_D4 PC0 #define LCD_PORT_5 PORTC #define LCD_DDR_5 DDRC #define LCD_D5 PC1 #define LCD_PORT_6 PORTC #define LCD_DDR_6 DDRC #define LCD_D6 PC2 #define LCD_PORT_7 PORTC #define LCD_DDR_7 DDRC #define LCD_D7 PC3 #define LCD_RS_PORT PORTC #define LCD_RS_DDR DDRC #define LCD_RS PC4 #define LCD_EN1_PORT PORTC #define LCD_EN1_DDR DDRC
-
Thread
Fusebit Einstellung bei Atmega644P und AVRISP MK 2
. aber wie willst du sehen, ob was passiert, wenn nix dran hängt? Dein Programm setzt doch nur PortC als Ausgang und alle Pins auf High...
Ausgänge auf High sind #include <avr/io.h> int main(void) { DDRC = 0b11111111; PORTC =0b11111111; while(1) { } return 0; } Gruß Martin
-
Thread
sobald Taste betätigt sein wird => LED mit PWM-Funktion blinken lassen. Controller LM3S811
diese Aufgabe und dieses Programm anpassen will. Nur habe ich dorthin die Bediengung if (GPIO_PORTC_DATA_R & 16) // Wenn Taste PC4 gedrückt ist .................. .................. else { GPIO_PORTC_DATA_R &= ~32; //sonst LED PC5 aus } eingeführt. Ich bitte Sie, zu mir nicht zu streng
Wie kommt man davon auf 400 clock tics? Frage 2: Was bedeuten das Zeichen ~ in Zeilen GPIO_PORTC_DIR_R &= ~16; // Port 4 weil 16=2^4 GPIO_PORTC_DATA_R &= ~32; //sonst LED PC5 aus Frage 3: Ist die Bediengung if (GPIO_PORTC_DATA_R & 16) // Wenn Taste PC4 gedrückt ist an der richtigen
-
Thread
HUB75 Ansteuerung Problem
31]=0xFF; //display[32][16]=0x0F; //HAL_GPIO_WritePin(GPIOG, GPIO_PIN_1, GPIO_PIN_SET); //PORTC |= (1<<OE); for(uint8_t line=0;line<=15;line++) { //HAL_GPIO_WritePin(GPIOG, GPIO_PIN_1, GPIO_PIN_SET); //PORTC |= (1<<OE); for(uint8_t pos = 128; pos>=1; pos--)
//Ein"latchen" Strobe der Reihe //HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_RESET);//PORTC &= ~(1<<PC5); HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_SET); //PORTC |= (1<<PC5); HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_RESET);//PORTC &= ~(1<<PC5); HAL_GPIO_WritePin
-
Thread
KS0108 Busy Flag (ASM)
delay it works, but I need speed. Here is my ASM (for AVR micros) BF routine. pollBF: cbi PORTC, E ;E lo clr temp out DDRD, temp ;PORTD all inputs sbi PORTC, RW ;R/W hi (read mode) cbi PORTC, DI ;D/I lo (intruction mode) nop ;tAS > 140 ns nop loopBF: sbi PORTC, E ;E hi nop ;tDDR > max. 320 ns nop in temp, PIND ;read pins PORTD ldi temp, 0b00000000 ;only bit7 cbi PORTC, E ;E lo nop nop cpi temp, 0x00
-
Thread
EEPROM Testprogramm läuft auf ATmaga16 aber nicht ATmega 324a
0xF0, 0x0F, 0x01, 0x02,}; int main(void) { DDRC=0xFF; EECR=0x0F; while(1) { PORTC=0x00; eeprom_busy_wait(); PORTC=eeprom_read_byte(&eezahl[0]); eeprom_busy_wait(); _delay_ms(1000); PORTC=eeprom_read_byte(&eezahl[1]); eeprom_busy_wait(); _delay_ms(1000); PORTC=eeprom_read_byte(&eezahl[2]); eeprom_busy_wait(); _delay_ms(1000); PORTC=eeprom_read_byte(&eezahl[3]); eeprom_busy_wait(); _delay_ms(1000); } return 1; } [/c] Im Makefile
-
Thread
Dumme Frage zum "C" mit AVR's
Makros à la: [c]#define POWER_LED_PORT PORTB #define POWER_LED_PIN 5 #define STATUS_LED_PORT PORTC #define STATUS_LED_PIN 1[/c]
digitalPinToPortReg(P) \ (((P) >= 0 && (P) <= 7) ? &PORTD : (((P) >= 8 && (P) <= 13) ? &PORTB : &PORTC)) #define digitalPinToDDRReg(P) \ (((P) >= 0 && (P) <= 7) ? &DDRD : (((P) >= 8 && (P) <= 13) ? &DDRB : &DDRC)) #define digitalPinToPINReg(P) \ (((P) >= 0 && (P) <= 7) ? &PIND : (((P) >= 8 && (P
-
Thread
LCD geht nicht an PortC meines ATMega644p
Hi, ich verwende die LCD Ansteuerung hier aus dem gcc Tutorial. Dabei kann ich den Port auf Port A, B und D problemlos ändern. Nur Port C funktioniert nicht. Der ist doch aber beim ATMega644p auch ein ganz normaler Port, oder?
-
Thread
FIFO-Polling mit ACE für GPS-Daten
PORTC |= (1 << PC4); // xxx1 xxxx -> IOR = 1, kein lesen PORTC |= ( 1 << PC0 ); // xxxx xxx1 -> CSA = 1 if ((puffer & 1)) { // prüfe auf data ready im LSR PORTC &= ~( 1 << PC0 );
xxx0 -> CSA = 0 ->Auswahl tl16c550b PORTB = 0x00; // 0000 0000 A2A1A0=000 Receiver Buffer PORTC &= ~( 1 << PC4 ); // xxx0 xxxx -> IOR = 0 ->lesen vom tl16c554 usart_putc(PINA); // Ausgabe Hyperterminal PORTC |= (1 << PC4); // xxx1 xxxx -> IOR = 1, kein lesen PORTC |= ( 1 <
-
Thread
Reset Eingang zieht Strom (ATMEGA48 20AU)
Ich hab das jetzt nachvollzogen mit einem ATM8(8Mhz) und 4 Blauen LED's am PortC (so schnell als möglich toggeln) Flussspannung 3.1V Vorwiderstand 4.7Ohm. Am Steckbrett geht's immer, auf einer Lochrasterplatine gibts alle paar Minuten einen Reset. Hast Du schon mal überlegt
@ Hugo (Gast) >am PortC (so schnell als möglich toggeln) Flussspannung 3.1V >Vorwiderstand 4.7Ohm. Ist reichlich unsinnig. Ein so niedriger Vorwiderstand hat praktisch kaum eine Wirkung, die Toleranzen der Flußspannung
-
Thread
Pollin Board macht nicht was es soll mit ATMega16
USB-Programmer kaufen/bauen. Was steht zum Testprogramm zu den Fusebits? Sind da Leitungen von PortC benutzt? bei Mega16 fällt mir dann immer JTAG ein... Gruß aus Berlin Michael
eigentlich alles gut sein, oder? >Was steht zum Testprogramm zu den Fusebits? Sind da Leitungen von PortC >benutzt? Die Fuses sind so gesetzt wie angegeben. Was PortC ist weiss ich noch nicht. Einen USB ISP Programmer zu bauen, wird das nächste sein, aber um sowas zu bauen braucht man erstmal Hardware
-
Thread
PIC16F676 LCD_Init
nämlich Enable von LCD angeschlossen. Es hat aber nichts mit Busy-Flag zu tun. Busy ist bei mir D7 (PORTC.3, der von Natur digital ist) Trotzdem danke für den Hinweis! Habe 9-10 Tage dran gesessen!
Johann R. schrieb im Beitrag #5355494: > Busy ist bei mir D7 (PORTC.3, der von Natur digital ist) Und ob RC3 analog ist!(RC3/ANA7) Im Datenblatt steht's schwarz auf weiss! Gruss Picfan
-
Thread
AVR Interrupt Unregelmässigkeit
IstWinkel > 0){ //Auswahl des Öffnungs- bzw. Schließwinkel von V1 if(IstWinkel == 2880){ PORTC &= ~(1<<V1);//Ventil wird geöffnet PORTC &= ~(1<<S0); PORTC &= ~(1<<S1); _delay_us(25); phiV1O = 2880; } if(IstWinkel == 20160){ PORTC |= (1<<V1);//Ventil wird geschlossen PORTC &= ~(1<<S0); PORTC |= (1<<S1); _delay_us(25); phiV1S = 20160; } }//Ende (while <40000) }// Ende while(Freigabe) //Interrupt ISR(INT1_vect){ IstWinkel = IstWinkel
-
Thread
Frage zur SPI-Kommunikation mit code
register content { uchar temp1,temp2,temp3; uint daword1; DDRC|=_BV(PC2); //LDAC PORTC|=_BV(PC2); //high LDAC, not update PORTC&=~_BV(PC3); //AD5666 select, --->low SYNC SPSR=0; //clear stateregister SPDR=com; while(!(SPSR&(1<<SPIF))); temp1=(uchar)(daword>>12)
low 4 bits temp3=(uchar)(daword<<4); SPDR=temp3; while(!(SPSR&(1<<SPIF))); SPSR=0; PORTC|=_BV(PC3); //ad5666 not selected, high SYNC PORTC&=~_BV(PC2); //low LDAC, asynchronous LDAC update mode _delay_ms(0.01); //LDAC pulse width low, 10ns PORTC|=_BV(PC2); } void main()
-
Thread
STK500 defekt?
Ja es handelt sich um PORTC hier habe alles auf 0xff gestellt: DDRA = 0xff; PORTA = 0xff; DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0xff; DDRD = 0xff; PORTD = 0xff; und es leuchtet immernoch
init_io(void) { DDRA = 0xff; PORTA = 0xff; DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0xff; DDRD = 0xff; PORTD = 0xff; } [/c]
-
Thread
ATmega644 16bit Timer Compare Interrupt
Freigaben*** // --------------------------------------------- #define MUX_Digi_U PORTC = 0x00 // MUX auf Digi Spannungsaufnahme setzen #define MUX_Schalter1 PORTC = (1<<PIN6) // MUX auf "Schalter1 abfrage" setzen #define MUX_LED PORTC = (1<<PIN6) | (1<<PIN5) // MUX auf "LED setzen" setzen #define MUX_Schalter2 PORTC = (1<<PIN6) | (1<<PIN5) | (1<<PIN4) // MUX auf "Schalter2 abfragen" setzen //---------------------------------------------------------------------------------------------------- //
-
Thread
DS1307 Error Bascom
Interne Time/Date Routinen für Bascom konfigurieren Config Date = Dmy , Separator = . Config Sda = Portc.1 ' I2C Bus konfigurieren Config Scl = Portc.0 Const Ds1307w = &HD0 ' Addresse der Ds1307 Uhr Const Ds1307r = &HD1
Interne Time/Date Routinen für Bascom konfigurieren Config Date = Dmy , Separator = . Config Sda = Portc.1 ' I2C Bus konfigurieren Config Scl = Portc.0 Const Ds1307w = &HD0 ' Addresse der Ds1307 Uhr Const Ds1307r = &HD1
-
Thread
Problem mit PIC und Bluetoothmodul
// CONFIG2H #pragma config MCLRE = OFF, LPT1OSC = OFF, PBADEN = ON, CCP2MX = PORTC // CONFIG3H #pragma config STVREN = ON, LVP = OFF, XINST = OFF // CONFIG4L #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF // CONFIG5L #
include <delays.h> #include <stdio.h> #include <sw_uart.h> #include <usart.h> #define SWTXD PORTC #define SWTXDpin 6 #define TRIS_SWTXD TRISC #define SWRXD PORTC #define SWRXDpin 7 #define TRIS_SWRXD TRISC #pragma code void main(void) { OpenUART(); //make BlueMod visible + settings
-
Thread
AVR/ EIA-485 Hardwareseitig Problem oder Software / Pegel
; void main(void) { //set baudrate and enable RX & TX InitUART(); DDRC = 0xff; PORTC = 0xff; DDRE = 0x04; EICRA = (1<<ISC01)|(1<<ISC11)|((1<<ISC31)); EIMSK = (1<<INT0)|(1<<INT1)|(1<<INT3); sei(); set_SS_X(2); while(1) { // Warte auf Tasteneingabe, dann
Temperature or b) Serial Number return Value;//Data[8]; } ISR (INT0_vect) { PORTC = ~Testo_Send( 'U', TESTO_1); set_SS_X(2); } ISR (INT1_vect) { PORTC = ~Testo_Send( 'U', TESTO_2); unset_SS_X(2); } ISR (INT3_vect) { PORTC = 0xBB; PORTC = ~ReceiveByte(); }
-
Thread
ATmega88: Ports, PINs und DDR
haben die Port-Register eine >Breite von acht Bit. [...] Der ATmega88 besitzt die Ports PortA, PortB, PortC und >PortD, die man frei programmieren kann. Wenn ich das Datenblatt richtig verstanden habe, gibt es keinen PortA, oder? Und PortC hat auch "nur" 7 Bit? >Jeder einzelne I/O wird über die folgenden
die Port-Register eine >>Breite von acht Bit. [...] Der ATmega88 besitzt die Ports PortA, PortB, PortC und >>PortD, die man frei programmieren kann. > > Wenn ich das Datenblatt richtig verstanden habe, gibt es keinen PortA, Richtig. > oder? Und PortC hat auch "nur" 7 Bit? Er hat schon
-
Thread
ATMega16 ADC 3 Kanäle
{ if (Helligkeit1>1) { Helligkeit1 = Helligkeit1 - 1; PORTC |= (1<<PC0); } else { PORTC &= ~(1<<PC0); } if (Helligkeit2>1) { Helligkeit2 = Helligkeit2 - 1; PORTC |= (1<<PC1); } else { PORTC &= ~(1<<PC1); } if (Helligkeit3>1) { Helligkeit3 = Helligkeit3 - 1; PORTC |= (1<<PC2); } else { PORTC &= ~(1<<PC2); }
-
Thread
switch, include
// PORT B as input DDRC = (1<<DDC0)|(1<<DDC1)|(1<<DDC6); // PIN 0,1,6 as output for MUX PORTC = 0x00; // PORT C as input DDRD = 0xFF; // PORT D as output PORTD = 0x00; // LEDs PORT D red ON uart_init(); // Programme / Prüflinge
// PORT B as input DDRC = (1<<DDC0)|(1<<DDC1)|(1<<DDC6); // PIN 0,1,6 as output for MUX PORTC = 0x00; // PORT C as input DDRD = 0xFF; // PORT D as output PORTD = 0x00; // LEDs PORT D red ON uart_init(); // Programme / Prüflinge
-
Thread
Pin abfrage geht nicht
} } else { uart_puts("not pressed"); } long_delay(); PORTC=0x00; } } void long_delay(void) { _delay_ms(200); _delay_ms(200); _delay_ms(200); _delay_ms(200); } [/code]
[c] PORTC = (1<<PC2); if (PINB & (1<<PINB1))[/c]Zwischen diese beiden Zeilen muss ein NOP.
-
Thread
Vorwärts/Rückwärtszähler
ausgeben. // Invertierung des Zählerstands für die Ausgabe auf den LEDs // nicht vergessen. PORTC = ~Cnt; while (1) { switch (State) { case 0: if((PINB & (1 << 7)) && Cnt < 254) { Cnt++; PORTC = ~Cnt; State = 1; } else if((PINB & (1 << 6)) && Cnt > 0) { Cnt--; PORTC = ~Cnt; State = 2; } else if((PINB & (1 << 6)) && (PINB & (1 << 7))) { State = 3; } break; case 1: if(PINB == 0x00) {
-
Thread
Timer tickt durcheinander (AVR-C)
UCSR0B = 0; // disable UART UCSR0C = 0; DDRD = 0xFF; PORTD &= 0xFD; PORTC = 0xF7; while(1) { sleep(400); PORTD |= 0x02; // PORTD1 auf 1 PORTC = 0xFF; sleep(400); PORTD &= 0xFD; // PORTD1 für 200ms auf 0 PORTC = 0xF7; } } } [/C] Diese Proggi sollte nichts weiters machen als eine LED an PORTC blinken zu lassen, gleichzeitig wird auch PORTD1 geändert, an dem ich gemessen habe. Was mir bei der Fehlersuche aufgefallen ist, daß die Periodendauer sich sehr stark ändert, wenn ich OCR1A um
-
Thread
Initialisierung LCD EA DOG-M 162 3,3V 8 Bit
Warten > 32 ms Schreibern 0x38: E = 0, RS = 0, RW = 1 CS = 0 E = 0, RS = 0, RW = 0 Data im PORTC schreiben E = 1 nop E = 0, RS = x, RW = 1 4 ms warten nochmal So muss gehen, und 2 Zeihle mode aktiviern.
LCD_RS 0 #define LCD_RW 1 #define LCD_E 2 #define LCD_BL 3 #define LCD_PORT PORTC // Port C #define LCD_IN PINC #define LCD_DDR DDRC #define LCD_DataOut 0xff #define LCD_DataIn 0x00 #define BusyBit 7 [/c] Viel Erfolg! Philipp
-
Thread
wie Code verbessern?
DDRC=0x00; PORTB=0x00; PORTC=0x00; while(1) { if( PINC &(1<<PC0)){ PORTB=PORTB ^ 1; _delay_ms(50);
> #include <util/delay.h> int main() { DDRB=0xff; DDRC=0x00; PORTB=0x00; PORTC=0x00; while(1) { if( PINC &(1<<PC0)){ PORTB=PORTB ^ 1; _delay_ms(50); while(PINC&(1<<PC0)) {} _delay_ms(50); }
-
Thread
DDS Oszillator will nicht
' movwf SSPBUF call warteSPI movlw b'00000000' movwf SSPBUF call warteSPI bsf PORTC, 6 ;I/O Update (an Pin 6 von PortC zum DDSChip) nop bcf PORTC, 6 die Routine warteSPI: warteSPI nochmal2 btfss PIR1, SSPIF goto nochmal2 bcf PIR1, SSPIF return
-
Thread
timer/counter-verständnis?
ISR(TIMER1_COMPA_vect) { t--; if(t==5) { counter= 0; PORTC^= (1<<PC5); } }
schaltest du sie dann nicht einfach gleich ein? Also vor deiner Endlosschleife ein [C] PORTC |= (1<<PC5); [/C]
-
Thread
Drehzahlmessung
TIMSK1 |= (1<<ICIE1)|(1<<OCIE1A); TCCR1B |= (1<<WGM12)|(1<<CS11)|(1<<CS10); PORTC |= (1<<PC4); do { if(i==2) { abs_Zaehler= ( (Zaehler[1] - Zaehler[0])+((Ueberlauf- Ueberlauf_alt)*11520) ); Drehzahl1 = ( (60*115200)/(abs_Zaehler
if( (p==0)&&(Ueberlauf >= 3) ) { Drehzahl1 = 0; return Drehzahl1; } PORTC &= ~(1<<PC4); } ISR(TIMER1_CAPT_vect) { Zaehler[i] = ICR1; if(i==0) { Ueberlauf_alt = Ueberlauf; } i++; } ISR(TIMER1_COMPA_vect) { Ueberlauf++; }
-
Thread
"Programm bleibt in der TIMER ISR hängen"
1 = 0; msek = 0; gesamt = 0; sei(); // Led ein PORTC = 0xFE; } else { gedrueckt++; gesamt = gesamt + msek; msek = 0; bNeuerWert.bNeuerWert_1 = 0; // Led ein PORTC = 0xFE; } } } }
-
Thread
versch. Werte vom ADC trotz gleicher Schaltung (mega 8)
[C] PORTC=0xff; ADMUX|=(0<<MUX0); ADMUX|=(1<<REFS1)|(1<<REFS0); [/C] *NEU* [C] PORTC=0x00 ADMUX=0; ADMUX|=(1<<REFS1)|(1<<REFS0); [/C] Es sind die aktivierten Pullups am ADC, würde ich sagen
-
Thread
Bit in Ausgaberegister als Variable definieren
ich damit meine ist Folgendes: So sieht es ja normalerweise aus, wenn ich einen Pin high setze: PORTC |= _BV(PC4); Nun würde ich gerne das bit durch eine Variable ersetzen: if (irgendwas) gate =PC4; if (was anderes) gate =PC5; PORTC |= _BV(gate); ... Wie mache ich das am einfachsten?
PC4; if (was anderes) gate =PC5; [/c] Und wenn weder "irgendwas" noch "was anderes"? [c] PORTC |= _BV(gate); [/c] Ja passt doch, wenn du /vorher/ natürlich erst mal beide möglichen Bits PC4 und PC5 zurückgesetzt hast. Woran klemmts?
-
Thread
Problem Analogmessung
Batterierelais Ddrc = &B00001100 'Configuration Port C Portc.0 = 0 'ADC0 Spannung Ladegerät Portc.1 = 0 'ADC1 Spannung Batterie Portc.2 = 1 'OUT Melde-LED 1 Portc.3 = 0 'OUT Melde-LED 2 Portc.4 = 0 'I²C SDA Portc.5 = 0
-
Thread
PIC18F4550 minimale Beschaltung mit maximaler Portanzahl möglich?
unverändert... Beim PORTB, PORTD und PORTE funktioniert das alles wunderbar... Nur beim PORTA und PORTC lassen sich einige Pin's nicht schalten... Beim PORTC denke ich dass es an den Pin's für den USB liegt, aber den brauche ich nicht bei meinem Vorhaben... Kann mir vllt. hier jemand helfen und sagen
mit 16x Ausgängen und 16x Eingängen am PIC arbeiten??? Ich bekomme nur leider nicht die Pin's von PortC als Ausgang oder Eingang verschalten da irgendwie immernoch der D+ , D- und VBUS da initialisiert ist und daher komme ich nicht auf 32 Pin's... Ich habe nun aber auch wieder den 20MHz Quartz dran
-
Thread
Keine Funktion des Programms auf Kontroller.
{ DDRB = 0x00; DDRC = 0xFF; for(;;) { switch(PINB) { case 0x01: PORTC = 0x01; break; case 0x02: PORTC = 0x02; break; default: PORTC = 0x00; } } return 0; } Bin für jede Hilfe dankbar. BP
-
Thread
Ausführungszeit von C code, ist in funktionen langsamer?
datenblatt atmega168 seite:335 (register summary)), weil wenn ja, dann > hab ich damit portd und portc komplett lahmgelegt. > Müsste der compiler nicht meckern wenn ich ne lib benutze und > gleichzeitig register die diese benutzt, auch benutze ? wenn nein, > sollter er das aber!! r8 heißt Register
datenblatt atmega168 seite:335 (register summary)), weil wenn ja, dann > hab ich damit portd und portc komplett lahmgelegt. asm ("r8") bezeichnet mehrere Register, abhängig davon, welchen Typ man speichern will. Für long sind das 4 aufeinander folgende GPRs. (Ich hatte oben was von 8 geschrieben,
-
Thread
Seriell Daten Empfangen
Line); if (get == 1){ //+++++++++++++++++LED TEST+++++++++++++++++// PORTC |= (1<<PC0); // Ausgang auf 1 _delay_ms(500); PORTC |= (1<<PC1); _delay_ms(500); PORTC |= (1<<PC2); _delay_ms(500); PORTC &= ~(1<<PC0); // Ausgang auf 0 _delay_ms(500); PORTC &= ~(1<<PC1); _delay_ms(500); PORTC &= ~(1<<PC2); _delay_ms(500); //+++++++++++++++++LED TEST+++++++++++++++++// } } { } }
-
Thread
Langes Drücken funktioniert nur bei einem Taster
1: PORTC |= (1 << PC4); break; case 1+TASTER_LONG: PORTC &= ~( (1 << PC5) | (1 << PC4) | (1 << PC3) ); break; case 2: PORTC |= (1 << PC5); break; case 2+TASTER_LONG: PORTC |= (1 << PC5) | (1 << PC4) | (1 << PC3); break; } if (tast != NO_TASTER)
-
Thread
Wie schlimm sind Wartezyklen auf ARM-Prozessoren?
du waerst der einzige! [code] loc_CODE_12B: ; CODE XREF: CODE:092Dj bcf BANK0:PORTC, RC3 ;SCK/SCL nop nop bsf BANK0:PORTA, RA4 ;SW1 nop nop bcf BANK0:PORTA, RA4 ;SW1 nop loc_CODE_133: ; CODE XREF: CODE:093Aj nop nop
byte_DATA_3A, f b loc_CODE_544 decfsz byte_DATA_39, f b loc_CODE_543 bsf BANK0:PORTC, RC2 ;SRAM CE bsf BANK0:PORTA, RA2 ;SRAM OE retlw 1 [/code]
-
Thread
UART Kommunikationsproblem
} int main(void) { USART_INIT(MYUBRR); DDRC = 0xff; PORTC |= (1<<PC6) | (1<<PC5) | (1<<PC4) | (1<<PC3) | (1<<PC2) | (1<<PC1); delay_ms(1000); PORTC |= (1<<PC0); while(1) { uint8_t receive = 0; receive = USART_Rx(); PORTC &= receive; delay_ms(1000); PORTC |= 0xff; delay_ms(1000); USART_Transmit(receive); } } Gruß Dominik
-
Thread
Atmega8 ADC Frustration (Assembler)
initialisieren sei ;Interrupts zulassen main: SBI portc, 1 rcall wait CBI portc, 1 rcall wait ldi r18, 0b11001111 out ADCSRA, r18 ;ADC conversion start rjmp main
einer Spule. Dann hab ich ihn halt mal > reingelötet Du hast 47 Ohm in der Stromversorgung von PortC und ADC und wunderst Dich, dass der ADC nicht funktioniert? ...
-
Thread
KS0073 EA DIP204B-4NLW Bascom Frage
'I²C2 Config Pinc.3 = Output 'I²C2 Config Scl = Portc.3 'I²C2 SCL Config Sda = Portc.2 'I²C2 SDA ' ########################### ' ### LCD Konfiguration ### ' ##########
'I²C2 Config Pinc.3 = Output 'I²C2 Config Scl = Portc.3 'I²C2 SCL Config Sda = Portc.2 'I²C2 SDA ' ########################### ' ### LCD Konfiguration ### ' ##########
-
Thread
Wie bekomme ich eine Status Led für Uart
USART_RXC_vect) //Empfangsinteruppt wird ausgelößt sobald ein Byte empfangen wurde { PORTC^= (1<<PC0); } [/c]
; } [/c] und in der mainloop (quick and dirty): [c] if(timeout) { PORTC |= (1<<PC0); -- LED einschalten timeout--; } else PORTC &= ~(1<<PC0); -- nach gewisser Zeit: LED aus [/c]
-
Thread
erste Schritte mit Assembler
] ; korrekt, aber nicht empfohlen (s. u.) IN R0, PINB-0x20 OUT PORTC-0x20, R1 [/avrasm] I/O-Register an Adressen >= 0x60 liegen außerhalb der Reichweite von IN und OUT, so dass hier immer LDS und STS verwendet werden muss. Die Befehle CBI, SBI, SBIC und SBIS
=0x03 Somit ist hier, bezogen auf das obige Beispiel (gottseidank) [avrasm] IN R0,PINB OUT PORTC, R1 [/avrasm] vollkommen korrekt. Das wird einen Assembler-Einsteiger vermutlich verwirren... Gruß Tom
-
Thread
Funktionsaufruf aus naked-Routine
einer "naked"-Routine einen Funktionsaufruf zu starten? [code]ISR( PCINT2_vect, ISR_NAKED ){ PORTC = GPIOR1; isr_more_logic(); reti(); }[/code]
Schon das PORTC = GPIOR1 ist nicht "sicher", weil das nicht ohne Zuhilfenahme eines Registers funktioniert, welches wegen des naked ja nicht gesichert und wiederhergestellt wird.