-
Thread
PortC beim ATmega162 funktioniert nur zur Hälfte
Ich möchte an einem ATmega162 den PortC benutzen. Der Rest funktioniert schon gut, habe schon ein LCD an einem anderen Port am laufen, doch nun möchte ich hier nur ein paar Taster abfragen und ein Summer ansteuern und nur die Hälfte funktioniert
include "types.h" #include "delay.h" #include "const.h" int main( void ) { DDRC = 0xff; PORTC = 0x00; for (;;) { PORTC = 0x00; delayms(2000); PORTC = 0xff; delayms(2000); } }
-
Thread
PortC Pin6 vom Mega8 nutzen
Hallo ! Hab bis jetzt nur mit AT90s2313 gearbeitet, möchte nun aber den Mega8 verwenden. Kann mir jemand sagen wie ich den Anschluss PortC.6 vom Mega8 (PIN1) nutzen kann da dieser zugleich als Reset-Eingang benutzt wird. Danke im Voraus für jede Hilfe. Gruss Gerhard
-
Thread
avr while-Schleife und Interrupt
3,6864 MHz und Atmel Studio 6 (SP2). Hier der Problem-Code: [c] ISR(TIMER1_OVF_vect) { // PORTC |= 1<<PC0; TimeOut=1; // _delay_ms(100); // PORTC &= ~(1<<PC0); } void Messschieber_suchen(void) { TCCR1B = 1<<CS11 | 1<<CS10; // 16-Bit Timer: Vorteiler 64 TCNT1 = 7937;
{ Messschieber_gefunden = 1; } _delay_us(1); // so geht es ... // PORTC |= 1<<PC1; // und so auch ... } } [/c] Wie man an den Kommentaren erkennen kann, möchte ich eine Messschieberanzeige auf ein LCD übertragen. Nach dem Start des Controllers frage ich die Taktleitung
-
Thread
While beenden und in Menu zurück
zähler wieer auf 0 iMenu = 0;// untermenü das aufgerufen werden soll iKey = 0;// courserposition PORTC = 0x00;// PORTC auf 0 lcd_clear();// Display löschen lcd_write_s("ENDE");// ausgabe ENDE _delay_ms(100);//warten } } so nu wenn ich beide taster drücke dann zeigt er zwar ENDE an und er setzt
jedem taster drucken int a einen hörer oder einen weniger und je nach anzalh is der portc anders. so geändert hatt eich vergessen ja. ok ich werds mal versuchem mit break;
-
Thread
Frage zu AVR-C
dem "Oder" Es geht ja darum einen Ausgang anzusteuern. Das kann man doch auch so machen. PORTC = (1<<1); wozu noch ein &, bzw |....
#5031960: > Es geht ja darum einen Ausgang anzusteuern. > Das kann man doch auch so machen. > > PORTC = (1<<1); > > wozu noch ein &, bzw |.... Weil bei dieser Schreibweise der gesamte Port C auf 0 gesetzt wird außer dem einen Bit. Bei der Schreibweise |= wird nur das eine Bit auf 1 gesetzt und
-
Thread
Timer-Einheit zerschossen?
= (1 << CS00) |(1 << CS02); // Timer 0 starten, Prescaler = 1024 TIMSK0 |= (1<<TOIE0); PORTC = (1<<PORTC6)|(1<<PORTC5); sei(); while (1) { if (timecounter0 == 32) { //_delay_ms(500); PORTC ^= (1<<PORTC6); } } } [/c]
-
Thread
Mit ADC und Poti, LEDs ansteuern
define S2 PC1 //Spalte von LED Matrix die ich ansteuern möchte #define Freigeben(x) PORTC &=~(1<<(x)) #define Sperren(x) PORTC |=(1<<(x)); PORTD = 0b00000000 #define LED(x) PORTD |=(1<<(x)); uint16_t adc() { ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0); ADMUX = 0;
define S2 PC1 //Spalte von LED Matrix die ich ansteuern möchte #define Freigeben(x) PORTC &=~(1<<(x)) #define Sperren(x) PORTC |=(1<<(x)); PORTD = 0b00000000 #define LED(x) PORTD |=(1<<(x)) uint16_t adc() { ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0); ADMUX = 0;
-
Thread
SHT75 Codeproblem
haben ihn jetz an den Pins PC1 und PC0 vom ATmega16. Danke void S_SDA() { DDRC |= (1<<SDA); PORTC |= (1<<SDA); } void C_SDA(){ DDRC |= (1<<SDA); PORTC &= ~(1<<SDA); } void S_SCL(){ DDRC |= (1<<SCL); PORTC |= (1<<SCL); } void C_SCL(){ DDRC |= (1<<SCL); PORTC &= ~(1<<SCL); } unsigned char G_SDA(){ DDRC &= ~(1<<SDA); if ((PORTC & (1 << SDA)) == 1) { return 1;} else { return 0;}; } void SHT7Start(void) { S_SDA(); C_SCL(); delay_us(5); S_SCL(); delay_us(5); C_SDA(); delay_us(5); C_SCL(); delay_us(5); S_SCL();
-
Thread
Verschiedene Tastenzuweisungen
while( 1 ) { ..... if( nKeyPress ) { // Toggle die LED der betätigten Taste PORTC = PORTC ^ Pattern[ actConfig ][ actKey ]; } } } [/C]
Pattern[actConfig][1]; if( Input & 0x04 ) Summe |= Pattern[actConfig][2]; ... PORTC = Summe;
-
Thread
Empfange nur Kauderwelsch am UART (Computer)
pullup */ DDRB = ~0x01; PORTB = 0x01; /* PC0-5 as output, all off*/ DDRC = 0xff; PORTC = ~0x00; while(1) { /* PB0 high: transmit once and turn on LED*/ if((PINB & 0x01) == 0 ) { PORTC = ~(1<<PC0); uart_putc('a'); while((PINB & 0x01) == 0) {}
1 as output */ DDRD = 0xff; PORTD = ~0x00; /* set PC0-1 as output*/ DDRC = 0x03; PORTC = ~0x02; while(1) { if((PINB & 0x01) == 0 ) { break; } } PORTC = ~0x01; while(1) { PORTD = 0xff; _delay_ms(1000); PORTD = 0x00; _delay_ms(1000
-
Thread
LED Ansteuerung
0xff; while(1) { PORTD = 0xff;//PORTD |= (1<<PD5); PORTA = 0xff; PORTC = 0xff; PORTB = 0xff; } } was mache ich falsch.? danke euch mfg
DDRC = 0xff; DDRD = 0xff; while(1) { PORTA = 0xff; PORTB = 0xff; PORTC = 0xff; PORTD = 0xff; } }
-
Thread
4 Zeiliges Display mit library für 2 zeiliges Display ansteuern
#byte lcd = 0xF81 // This puts the entire structure #elif defined use_portc_lcd #byte lcd = 0xF82 // This puts the entire structure #elif defined use_portd_lcd #byte lcd = 0xF83 // This puts the entire structure #else
#endif #if defined use_portb_lcd #define set_tris_lcd(x) set_tris_b(x) #elif defined use_portc_lcd #define set_tris_lcd(x) set_tris_c(x) #elif defined use_portd_lcd #define set_tris_lcd(x) set_tris_d(x) #endif #define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines #define
-
Thread
BASCOM INT0 / 1 beide drücken Variable
Isr_von_int0: Set A Return Isr_von_int1: Reset A Return Sub1: Portd.4 = 0 Portc.4 = 1 Portc.2 = 1 Portc.1 = 1 Wait 2 Portd.4 = 1 Portc.4 = 0 Portc.2 = 0 Portc.1 = 0 Wait 2 Return Sub2: Portd.4 = 0 Portc.0 = 1 Portc.3 = 1 Portc.5 = 1 Wait 2 Portd.4 = 1 Portc.5 = 0 Portc.3 = 0 Portc.0 = 0 Wait 2 Return Nun die Frage: Wie schreib ich es am besten das, wenn beide Taster gedrückt sind, er mir eine andere SUB aufruft?
-
Thread
Bascom Syntax - Error
ja intern. Meine Vermutung hier: Es sind 2 Library eingebunden. Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7 Config Lcd = 20 * 4 und Config Dcf77 = Pinb.4 , Timer = 1 , Debug = 1 , Check = 1 , Inverted = 1 Finde keinen Ansatz
-
Thread
Sleep Modus arbeitet nicht
TCNT1L, temp ; in Register schreiben inc count1 ; count1 um 1 erhöhen out PORTC, count1 ; in Register schreiben reti ; Rücksprung [/avrasm] Sascha
; Warten auf Interupt Die LED an PortB blinkt nun im 5 Sekunden Rhythmus während die LED an PortC im 152 Sekunden Rhytmus blinkt. Aber warum geht die CPU nicht in den Sleep Modus?
-
Thread
Timer1 beim ATMega 16
= 0xFC; TCNT1L = 0x18; sei(); PORTC ^= (1<<PB6); }
Wolf4124 wrote: > PORTC ^= (1<<PB6); Auch wenn es an der Funktion nichts ändert: Schreib rechts entweder "PC6" oder einfach nur "6" hin. Gibt sonst nur Verwirrung! Das cli() und sei() im Interrupt Handler gehört da gar
-
Thread
Problem mit Eingang abfragen :(
ein undefinierter Zustand am Pin wenn der Taster nicht gedrückt ist. Das würde man so machen: [c]PORTC |= (1 << PC0);[/c] PS: Eine Einrückung wäre hilfreich, dann kann man den Code besser lesen.
den Eingang auf D7 gelegt und es funktioniert. Guck mal, welchen AVR Du hast, manche haben auf PORTC das JTAG. Peter
-
Thread
avr128 komparator
die LEDs sind am PORTC des avrs angeschlossen, die togglen öfters als sich das ADO Signal ändert. Das AVRStudio hat ein Debuger Modul, wo ich der Zustand aller REgister sehen kann, daher weiß ich wann ADO sein Zustand ändert
also ich habe so in main gemacht: while(1){ if(ACSR & (1<<ACO)) PORTC = 7; else PORTC = 0; } und jetzt aber nur ACI0 angeschlossen, dass ACI1 is gar nicht an. ( Ich vermute, dass an den negativen Eingang 0V liegt). Und jetzt sehe ich, dass ACO ist bei ab 70mV
-
Thread
Nokia 3310 Lcd Ansteuerung in AVR-GCC
verfügung da der spi aktiv ist. du musst nen anderen port nehmen z.b.--> #define GLCD_CTRL_PORT PORTC #define GLCD_CTRL_DDR DDRC oder du schliesst die reset leitung mit an die des uC an
GLCD_SCLK PINB5 #define GLCD_MOSI PINB3 #define GLCD_SS PINB2 #define GLCD_CTRL_PORT PORTC #define GLCD_CTRL_DDR DDRC #define GLCD_DC PINC0 #define GLCD_CE_ PINC1 #define GLCD_RES_ PINC2 LG Michael
-
Thread
CP/M auf ATmega88
000347 b908 out PORTC,temp [/code]
c] #define RAM_RAS 0 #define RAM_CAS 1 #define RAM_OE 2 #define RAM_W 3 #define P_RAS PORTC #define P_CAS PORTC #define P_OE PORTC #define P_W PORTC ISR(TIMER2_COMPA_vect, ISR_NAKED) { P_CAS &= ~_BV(RAM_CAS); P_RAS &= ~_BV(RAM_RAS); P_RAS &= ~_BV(RAM_RAS); /* delay
-
Thread
Programm für Atmega 8L
avr/pgmspace.h> #include <avr/sleep.h> #include <avr/wdt.h> int main (void) { DDRC=1; PORTC=1; TCCR1B=0x02; OCR1AH=20000>>8; OCR1AL=20000%256; TIMSK=0x10; sei(); while(1); return 1; } ISR (TIMER1_COMPA_vect) { PORTC=0; } Ich will erstmal nur, dass er in die ISR
das alles? o_O #include <avr/interrupt.h> #include <avr/io.h> die reichen dafür. > DDRC=1; > PORTC=1; misst du auch am richtigen pin? PORTC=1 setzt nur das bit PC0. nur, um das mal auszuschließen. der rest sieht ziemlich richtig aus...
-
Thread
PIC empfängt keine CAN-Bus-Nachrichten?
= 0; TRISE = 16; // RE4 as input, RE5 as output PORTC = 0; // clear PORTC TRISC = 0; // set PORTC as output Can_Init_Flags = 0;
CANRead(&Rx_ID, RxTx_Data, &len, &read_flag); if(Rx_ID == 507) { PORTC = 0xFF; } else {PORTC = 0x1;} } } [/c] Das CANWrite habe ich aktuell ausgegraut. Vielen Dank im Voraus! VG Stefan
-
Thread
AVR-Studio und Stack
speichern ldi LED_Temp, 0xFF out DDRC, LED_Temp ;Richtungsregister konfigurieren: PortC = Ausgang ldi LED_Temp, 0b00000011 out DDRE, LED_Temp ;Bit 0 und 1 von PortE sind Ausgänge ldi LED_Temp, 0xFF out PORTC, LED_Temp ;Anzeige ausschalten ldi LED_Temp
ldi LED_Temp, 0xFF ;Wert umkehren (0 = Ein, 1 = Aus) eor LED_Temp2, LED_Temp out PORTC, LED_Temp2 ;Wert ausgeben pop LED_Temp2 pop LED_Temp ret LED_Delay_180ms: ldi LED_Delay_ValueH, HIGH(LED_Delay60ms) ldi LED_Delay_ValueL, LOW(LED_Delay60ms) ldi
-
Thread
Wieviele Takte dauert es?
Guten Abend... ich habe eine Frage, Mein mikrocontroller wartet auf einen Signal (PORTC, bit 0) von FPGA. [c] loop_until_bit_is_clear(PINC,0); PORTC |= (1 << 6); PORTA = 0b11111111; DDRA = 0b00000000; PORTC &= ~(1 << 6); [/c] Wieviele Takten dauert es??? Von Erkennung, dass bit
schneller als C @Koblenzer, warum schaust Du nicht in .lss selber nach? ich würde sagen [c] PORTC |= (1 << 6); //1 Takt PORTA = 0b11111111;//2 Takte DDRA = 0b00000000;// 2 oder 1 Takt ? PORTC &= ~(1 << 6);//1 Takt [/c] Gruß Sebastian
-
Thread
SW-PWM: Kurzer heller Flash beim Uebergang von 0 auf 1
, C.4 = low { PORTC.4=0; } /*** HAUPTPROGRAMM ******************************************************************/ void main(void) { unsigned char a=10; // Vergleichswerte
overflow(void) //bei Überlauf von T3 Ausgang C.4 = high { if ( <einschaltbedingung> ) PORTC.4=1; } Gruß, Feadi
-
Thread
Spannungsdifferenz vom Lötkolben und anderen Dingen
abfragen will. Da man die Eingänge mit PIN abfragt und die Ausgänge mit PORT schalten kann, ergibt PORTC.0 == 0 keinen Sinn richtig wäre if(PINC.0 == 0)
Ach so. Das ist natürlich ein Argument. Bei meinen PICs kann man nämlich sehr wohl if(PORTC.0 == 0) verwenden. Wieder etwas dazugelernt. Schöne Grüße, Alex
-
Thread
Atmega8 und I2C-Display startet nicht
<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } void Port_init() { DDRB |=(1<<PB0);// PB0 Ausgang (LED) PORTC |=(1<<PC4);//PC4 Pullup (SDA) PORTC |=(1<<PC5);//PC5 Pullup (SCL) } void I2C_init() // (100KHz) { TWSR = 0; TWBR = 12; } void uart_send_string(const char *s) { while(!(UCSRA&(1<<UDRE
<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } void Port_init() { DDRB |=(1<<PB0);// PB0 Ausgang (LED) PORTC |=(1<<PC4);//PC4 Pullup (SDA) PORTC |=(1<<PC5);//PC5 Pullup (SCL) } void I2C_init() // (100KHz) { TWSR = 0; TWBR = 12; } void uart_send_string(const char *s) { while(!(UCSRA&(1<<UDRE
-
Thread
PIC16F887 auf MC2V0 - I2C
durch eine For schleife, solange du mit dem XC8 arbeitest. Im Anhang ein Bild von der Anzeige des PORTC direkt nach dem Ausführen der Zeile SDA=1; Man sieht, RC4 ändert seinen Zustand.
For schleife, solange du mit dem XC8 > arbeitest. > > Im Anhang ein Bild von der Anzeige des PORTC direkt nach dem Ausführen > der Zeile SDA=1; > Man sieht, RC4 ändert seinen Zustand. Hm bei mir geht er nicht mehr aus... werd mal mit dem Osci paar PINs testen mfg J. Bier
-
Thread
SPI Atmega16M1
. (Aktueller Stand) [c] #include .... int main(void) { SPI_INIT(); while(1) { PORTC &= ~(1 << PC5); SPI_Transfer(0b00000101); PORTC |= 1 << PC5; } return(0); } [/c] Erkennt jemand einen Fehler in der SPI_INIT? die Transfer Funktion sollte so auf jeden fall in Ordnung
AVRe schrieb im Beitrag #4641315: > PORTC &= ~(1 << PC5); Als Ausgang gesetzt ? DDRC |= (1<<PC5); Normal ist doch PortB.4, also: DDRB |= (1<<PB4); und dann: PORTB &= ~(1 << PB4); Auch: [c] DDRB = (1 << DDB1) | (1 <
-
Thread
bitte um hilfe bei switch case aufbau
: > DDRC &= (1<<PC5); //Eingang und das bewirken? Huber M. schrieb im Beitrag #4748834: > PORTC = (1<<PC5); //Pullup Eingang > DDRD = (1<<PD0); //Ausgang LED Wozu gibt es & und | ? Was macht man, um EIN Bit auf 0 bzw. auf 1 zu setzen? Mal abgesehen davon, das Du Dir auch mal den
HUBER M */ #include <avr/io.h> #define tasterpins (1<<PC5) int main(void) { PORTC |= (1<<PC5); //Pullup Eingang DDRD |= (1<<PD0); //Ausgang LED void tastertest() { if (!(PINC &(1<<PC5))) { PORTD |= (1<<PD0); } else { PORTD &=
-
Thread
LCD und STK500
Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0
Moin, hab das Display sowohl an PortD als auch an PortC angeschlossen und getestet.Funktioniert bei beiden. Die Initialisierung von DDRD ist auch egal. Es klappt mit 0x00 und auch mit 0xFF. Ich hab mal meine Einstellungen im Anhang. Kannst Du dir ja mal
-
Thread
Druckschalter Kompressorsteuerung für Weller Entlötstation WDD81V mit MPX5700 Drucksensor 0-7bar
ID3 AN PORTB0 ID4 AN PORTB7 ID5 AN PORTD4 ID6 AN PORTD3 ID7 AN PORTD2 MODE AN PORTB6 WRITE AN PORTC5 MPX5700 Sensor1 AN PORTC0 Sensor2 AN PORTC1 Referenz 5V Sensor nach Schaltbild aus Datenbatt Taster Taste Rot "up" über Diode AN PORTD5 (Diode 1N4148 nach PORTPIN) Taste Gelb "Mode
PORTPIN) Taste Schw."View" über Diode AN PORTB0 (Diode 1N4148 nach PORTPIN) Gemeinsame Seite AN PORTC4 Relais Relais1 AN PORTB2 Relais2 AN PORTB1
-
Thread
SED1520 - Pollinkompatibel und flink
sed1520.h" unter dem Kommentar "// port settings": [c]// port settings #define SED1520_DATAPORT PORTC #define SED1520_DATAPIN PINC #define SED1520_DATADDR DDRC #define SED1520_CTRLPORT PORTD #define SED1520_CTRLDDR DDRD #define SED1520_RES 0 #define SED1520_RW (1 << 0
leider noch nicht solange dabei :( In der Header Datei steht: [c]#define SED1520_DATAPORT PORTC #define SED1520_DATAPIN PINC #define SED1520_DATADDR DDRC #define SED1520_CTRLPORT PORTD #define SED1520_CTRLDDR DDRD #define SED1520_RES 0 #define SED1520_RW (1 << 0)
-
Thread
DHT22 liefert eigenartige Werte
das umschalten des Pins. In Bascom sieht das so aus (pinc.0): [code] Config Pinc.0 = Output : Portc.0 = 0 ' request data Waitms 20 ' wait 20 ms Config Pinc.0 = Input [/code] In C sollte es ähnlich aussehen. Aber Du empfängst
initialisieren Output 11 [LED] PORTD |= (1<<PD5); //LED einschalten //DDRC = 0xFF; //PORTC = 0x00; lcd_init(); dht11_init(); while(1) { lcd_clear(); _delay_ms(5000); lcd_setcursor( 0, 1 ); // Text in einzelnen Zeichen ausgeben
-
Thread
Multiplizieren geht schief
lsl r24 ; port for 6522 address x2 lsl r24 ; port for 6522 address x2 out _SFR_IO_ADDR(PORTC), r24 lds r0, TCNT0 ; in r0, 0xB2; TCNT0 sbic _SFR_IO_ADDR(PINB),4 ;sbic PIND,7 sbic pind,7 ;wait for phi2 low rjmp phi2_syncloop_wrt ldi r30,lo8
3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 ; ;.macro phi2_wrt cbi _SFR_IO_ADDR(PORTC),7 ;R/W ;7/1 generate R/-W - tcnt=7/OC2=1 sbi _SFR_IO_ADDR(PORTC),6 ;CS = 1 ;1/0 CS strobe high >300ns before phi2 nop2 ;3/0 nop2 ;5/0
-
Thread
Problem mit Entprellung?
PortB als Ausgang deklarieren PORTB = 0x00; // PortsB auf LOW schalten DDRC = 0x00; // PortC als Eingang deklarieren PORTC = 0b00000111 ; /* Pullup-Widerstand aktivieren */ } Dummerweise habe ich dabei 2 Probleme. Bei der Simmulation (AVRStudio) bekommt mein Rechner sich nicht
So, ich habe inzwischen selbst was rausgefunden. Obwohl der PORTC bei meinem atmega16 als Ausgang festgelegt wird, liegen an PC2(TCK),PC3(TMS) und PC5(TDI) high Pegel an. Kann es sein, das das JTAG-Interface eingeschaltet ist, oder ähnliches? Falls ja, gibt es einen
-
Thread
ATmega128 Problem
Initialsierung // Interupt DDRC.4 = 1; DDRC.5 = 1; warte(); while(1) { PORTC.4=1; PORTC.5=0; //putchar('2'); for (x=0;x<25000;x++) { } } PORTC.5=1; PORTC.4=0; for (x=0;x<25000;x++) { } } }
-
Thread
Hilfe für Anfänger
Roboternetzwerks. meine Einstellungen sehen wie folgt aus: 1.in der "lcd.h" #define LCD_PORT PORTC /**< port for the LCD lines */ #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ #define LCD_DATA2
ATmega32 auf einem > Board(RN-Control v1.4) des Roboternetzwerks. ... > #define LCD_PORT PORTC /**< port for the LCD lines */ ... Da drängt sich sofort die Frage auf: Hast du das JTAG Interface abgeschaltet?
-
Thread
Atmega8A - PWM-Einstellung über Spannungsteiler mit AD Wandlung
// PORTD2 als Ausgang für 5V an Spannungsteiler DDRC |= (1<<PORTC0); // PORTC als Eingang von Poti ADCSRA |= (1<<ADEN) | (1<<ADIE) | (1<<ADFRA) | (0<<ADPS2) | (0<<ADPS1) | (1<<ADPS0); // AD-Wandlung aktivieren + Interruptfreigabe
PortB2 als Ausgänge // festlegen. DDRC |= (0<<PORTC0); // PORTC0 als AD-Eingang ADCSRA |= (1<<ADEN) | (1<<ADSC); // AD-Wandlung aktivieren } int main() { InitPWM();
-
Thread
RTC läuft nicht
'$lib "i2c_twi.lbx" 'Config Twi = 100000 ' Init TWBR und TWSR, 100kHz Config Sda = Portc.1 Config Scl = Portc.0 ' Adressen festlegen Const Ds1307w = &HD0 ' Addresse des DS1307 zum schreiben Const Ds1307r = &HD1
Sebastian schrieb im Beitrag #4212791: > Config Sda = Portc.1 > Config Scl = Portc.0 da es auf einem mega8 lief, schau mal ob im BASCOM auch diese Ports so in der IDE angegeben sind, bei mir waren andere Ports eingestellt ergo RTC funzt nicht, nach der
-
Thread
Bascom Softwareinterrupts
Programm das gut Funktioniert: [code] $regfile = "m8def.dat" $crystal = 8000000 Led1 Alias Portc.4 Config Led1 = Output Led2 Alias Portd.2 Config Led2 = Output Led3 Alias Portc.5 Config Led3 = Output Led4 Alias Portd.3 Config Led4 = Output Led5 Alias Portd.0 Config Led5 = Output
So in etwa. [pre] $regfile = "m8def.dat" $crystal = 8000000 Led1 Alias Portc.4 Config Led1 = Output Led2 Alias Portd.2 Config Led2 = Output Led3 Alias Portc.5 Config Led3 = Output Led4 Alias Portd.3 Config Led4 = Output Led5 Alias Portd.0 Config Led5 = Output
-
Thread
Powertip PG12864A - Problem mit Chipselect
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
-
Thread
Probleme mit C Code
(SIG_INTERRUPT0) { PORTC = 0xff; }
gibt wohl doch ein problem :( ich nutze jetzt den PORTB (war mit PORTC auch net anders). es kommt mir vor, als würde sofort nach dem Einschalten ein IRQ auftreten, und auch danach in sehr kurzen abständen (10ms?). Ich habe eine LED angehängt und die scheint zeitweise
-
Thread
[AVR] Atmega8 lässt sich nicht beschreiben
#define __AVR_ATmega8__ 1 #include "avr/io.h" void Initialize(void) { PORTB = 0x0; PORTC = 1<<5; /* turn the LED off */ PORTD = 0x0; DDRB = 0x0; DDRC = 1<<5; /* PC5 as output - the LED is there */ DDRD = 0x0; } /* state = 0 -> Led Off * state = 1 -> Led On *
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
-
Thread
Anfängerfrage, wie wird ein Bit gesetzt ?
solange ich auf einen Taster drücke. dieses Programm funktioniert, aber sobald ich den Befehl PORTC = 0x01; durch PORTC |= (1 << 1); ersetze tut sich nichts mehr. bool alarm = false; int main() { DDRC = 0xFF; // PC0..PC7 as output PORTC = 0x00; // all PORTC output pins
(1 << 1) ergibt 0x02!!! Musst schreiben: PORTC |= (1<<0);
-
Thread
Analogwerte passen nicht mit Rechnung überein
plan. sensor ist ein: PR33x-v-3 code: $regfile = "m8def.dat" Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Config Lcdbus = 4 Cursor Off Config Adc = Single , Prescaler = Auto , Reference = AVCC Dim
-
Thread
GCC: Pin toggeln in einem Takt?
zb. so: [c] PORTC ^= (1<<PC2); [/c]
>PORTC ^= (1<<PC2); >PINC = 1 << PC2; Beides benötigt sichern nur 1 Takt?
-
Thread
Led Cube Projekt
Config Portc = &B00000000 Config Portb = &B00000000 Config Portd = &B00000000 Dim Pause As Integer Pause = 500 Do Loop End Also laut Programm sollte alles dunkel sein. Aber der Cube sieht aus
Eingängen an PortB geklemmt OE Ohne Widerstand an Masse, und Load an PortD Die Transitoren hängen an PortC Die IC Ausgänge 5-7 hab ich offen gelassen weil ich nur 0-4 verwende. Wenn ich mit dem Voltmeter die Ausgansspannungen der Ports messe kommt nicht überall 0V raus. Gibts da noch ne Einstellung
-
Thread
Brushless Regler Umbau
WH_OFF TCCR2A &= ~(1<<COM2B1); //PHASE3 (W) #define WL_DDR DDRC |= (1<<3); #define WL_ON PORTC |= (1<<3); #define WL_OFF PORTC &= ~(1<<3); #define PHASE_ALL_OFF UH_OFF;UL_OFF;VH_OFF;VL_OFF;WH_OFF;WL_OFF; #define SENSE_U ADMUX = 0; #define SENSE_V ADMUX = 1; #define SENSE_W
WH_OFF TCCR2A &= ~(1<<COM2B1); //PHASE3 (W) #define WL_DDR DDRC |= (1<<3); #define WL_ON PORTC |= (1<<3); #define WL_OFF PORTC &= ~(1<<3); #define PHASE_ALL_OFF UH_OFF;UL_OFF;VH_OFF;VL_OFF;WH_OFF;WL_OFF; #define SENSE_U ADMUX = 0; #define SENSE_V ADMUX = 1; #define SENSE_W
-
Thread
ATMEGA8 - ULN2803 - LM23-K
ich komme nicht weiter... (sehr alten Compiler aber läuft) PORTD ist für die Aushabe am ULN PORTC lediglich für die Bestätigung, das der Taster an PORTB gedrückt wurde. PorgrammCode: #define F_CPU 3686400 #include <avr\io.h> #include <avr\wdt.h> #include <util\delay.h> #include
while(!(PINB & 0b00000010)){ PORTC = 0b00000001; if(j>=0){ PORTD = schritt[j]; newdelay(50); j--; } else { j=3; } } PORTC = 0b00000000