-
Thread
TFT LCD Ansteuerung
= 1; LCD_RD = 1; PORTC = 0x00; //DBhigh Output eeprom_write(0x00, Datalo); eeprom_write(0x01, Datahi); [/c] Jedoch bleiben die Wert im EEPROM auf 0xFF. Ich habe versucht das Auslesen nach dem Diagramm auf Seite
Hallo, PORTC = 0xFF; //DBhigh Input .. schaltet den Datenport gewiss nicht auf Input wenn du DBhigh = 0x00 zur Ausgabe verwendest, dann kann Datahi = DBhigh nicht zum Einlesen verwendet werden, da Ausgabe ja
-
Thread
ATMega8 und ATMega168, beide wie tot
#include <avr/io.h> #include <util/delay.h> int main() { DDRC = 0x3f; while (1) { PORTC ^= 0x3f; //_delay_ms(5); PORTC ^= 0x3f; } } [/pre] Leider liegen die Pins am PortC alle auf gnd. Takt intern oder Quarz 16MHz, beim M168 kann ich den Takt am Ausgang sehen.
wahrscheinlich) nicht das > gewünschte Ergebnis liefern. das gewüschte ergebnis ist die pins auf portc toggeln zu lassen, und das macht das programm, also liegts nicht daran, es liegt eher an der schaltung in der der atmega8 verbaut ist oder an einer falschen fusebit konfiguration.
-
Thread
LCD Initialisierung scheitert Atmel8
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 PD0 #define LCD_PORT_5 PORTC #define LCD_DDR_5 DDRC #define LCD_D5 PC1 #define LCD_PORT_6 PORTC #define LCD_DDR_6 DDRC
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
-
Thread
Portansteuerung
while(1) { if (M >=1) Richtung=links; else Richtung=rechts; PORTC |=(Richtung<<1) ; // Drehrichtung if (Schritte <= 1200) { PORTC |=(1<<0) ; _delay_ms(0.020); // SM Enable bevor Timer2 eingeschaltet wird
schrieb im Beitrag #3088126: > Was mache ich also falsch?? Zum Beispiel das hier > PORTC |=(Richtung<<1) ; // Drehrichtung > > Schritte=1; // Zurücksetzen von Schritte > Intervall=0; Zum Beispiel das hier > while(1) > { Zum Beispiel
-
Thread
Probleme bei einfachem Atmega Programm
> PORTC &= (0 << PC2); ...und lies Dir bitte mal den Artikel [[Bitmanipulation]] durch! So, wie Du das da schreibst, passiert da was ganz anderes als das, was Du willst! So wie es aussieht, könnte auch
> PORTC &= (0 << PC2); >...und lies Dir bitte mal den Artikel Bitmanipulation durch! So, wie >Du das da schreibst, passiert da was ganz anderes als das, was Du >willst! Steh ich auf dem Schlauch ??
-
Thread
10 Kanal Phasenanschnitt
= (1 << CS21); //Start timer for(i = 0; i < 5; i++) { if(lamp_state[i] == 0) { PORTC |= (1 << i); //lampstate = 0 => on all the time } else { PORTC &= ~(1 << i); } } } [/c] Und die Timer ISR, da wo der eigentliche Spaß passiert : [c] ISR(TIMER2_OVF_vect
läuft mit 8mhz. Falls du ein paar Zahlen nachrechnen möchtest. Und PORTC geht zu den Optokopplern für die Triacs. Der Rest müsste sich eigentlich erschließen. Ich fahr jetzt erstmal in Urlaub. Gruß Sebastian
-
Thread
avr asm: interrupt int0 löst bei fallender flanke nicht aus
, SREG ;Inhalt des Statusregisters retten push r16 ldi r16, 0b11111111 out PORTC, r16 pop r16 ;Statusregister wieder herstellen out SREG, r16 pop r16 ;r16 wieder herstellen reti ;Rückkehr von der ISR INT1_HANDLER: ;macht die led aus
am µC auf Masse ziehe, dann sollte nach meinem Wissen der INT0-INTERRUPT ausgeführt werden. Die an portC angeschlossene LED bleibt jedoch aus. Was mache ich falsch? Gruß ckrex
-
Thread
PORTC ^= 1 << PC4;
zwischen PORTC und PINC 4 auf 1? Danke! Grüße Jens
Jörg Wunsch schrieb im Beitrag #1867249: > Die Verknüpfung wird nicht zwischen PORTC und PINC gemacht, sondern > zwischen PORTC und PORTC. Eigentlich wird sie zwischen PORTC und 2 hoch 4 gemacht.
-
Thread
ATMega168PU-20 Assembler - Leds leuchten ungewollt
ldi r16, 0x00 out ddrc, r16 ; Port C komplett Eingang ldi r16, 0xff out portc, r16 ; Port C PullUps high out ddrd, r16 ; Port D Ausgang ldi r16, 0xff out portd, r16 ; Port D komplett low warten_auf_S1: sbis pinc, pc0 ; Weiter wenn
" Init: ldi r16, 0x00 out ddrc, r16 ; Port C komplett Eingang ldi r16, 0xff out portc, r16 ; Port C PullUps high out ddrd, r16 ; Port D Ausgang ldi r16, 0xff out portd, r16 ; Port D komplett low Main: warten_auf_S1: ...
-
Thread
PINC.0 Geht ständig kaputt
$framesize = 90 $baud = 9600 Config Pinc.0 = Input Portc.0 = 1 (!!! nachträglich eingefügt!!!) Config Portd.2 = Output Taster Alias Pinc.0 Led Alias Portd.2 Led = 0 do If Taster = 0 then LED = 1 else
Da war doch was.. die Spannungsversorgung für Portc erfolgt evtl. nur über eine interne Diode.. *grübel*
-
Thread
Strombelastbarkeit RESET PIN beim Atmega 8
// PORT 4 + 5 TRISTATE PORTC = 0b00000000; // OFF } Auswahl DIGIT: void selectDigit(uint8_t digit) { switch (digit) { case 0: sbi(DIS1, DIS); // Zuschalten der ausgewählten Anzeige
cbi(DIS6, DI_S); break; } } Definition: #define DIS1 0 // PORTC #define DIS2 1 // PORTC #define DIS3 2 // PORTC #define DIS4 3 // PORTC #define DIS5 6 // PORTC #define DIS6 7 // PORTB
-
Thread
ATTINY 817 Sleep Mode
#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> int main(void) { PORTC.DIR |= (PIN0_bm); PORTC.DIR |= (PIN2_bm); PORTC.PIN3CTRL = 1 << PORT_PULLUPEN_bp | PORT_ISC_FALLING_gc; SLPCTRL.CTRLA = 1 << SLPCTRL_SEN_bp | SLPCTRL_SMODE_PDOWN_gc; sei(); //Enter Sleep mode asm("sleep"); while (1) { PORTC.OUTTGL = PIN2_bm; _delay_ms(1000); } } //PORTC INT ISR(PORTC_PORT_vect) { cli(); PORTC.INTFLAGS = 0xFF; PORTC.OUTTGL = PIN0_bm; sei(); } [/c]
-
Thread
Probleme AVR-GCC und Arrays
**/ for (;;) { outp(0xC, PORTC) ; /* kurze Pause */ outp(0x6, PORTC) ; /* kurze Pause */ outp(0x3, PORTC) ; /* kurze Pause */ outp(0x9, PORTC) ; /* kurze Pause */ } Also keine Compilerfehler oder sowas, nur bei
geändert... outp() ist übrigens deprecated, und es gibt keinen Grund, warum Du nicht gleich PORTC = 0xc; schreiben solltest. Ansonsten wüßte ich aber nicht, was an Deinem Array falsch sein sollte.
-
Thread
Atmega8 und Reset
void Init(void) { DDRC |= (1 << DDC0); // Bit 0 auf Ausgang setzen // Zweimal blinken PORTC &= ~(1 << PC0); _delay_ms(100); PORTC |= (1 << PC0); _delay_ms(100); PORTC &= ~(1 << PC0); _delay_ms(100); PORTC |= (1 << PC0); } int main(void) { Init(); while(1) { } } Wenn ich per STK600 das Programm zum Atmega8 übertrage, blinkt die LED an PortC zweimal, wie gewünscht. Wenn ich aber den Reset-Knopf am STK600 drücke, dann blinkt die LED nichtmehr, sondern bleibt aus. Habe an PC6 (RESET) gemessen, der geht auf Low wenn ich den Reset-Taster
-
Thread
ADC und Timer funktionieren nicht zusammen in Bascom
Config Lcd = 16 * 2 Waitms 100 Cursor Off Config Portd = Output Config Portb = Output Config Portc.4 = Output Led1 Alias Portc.4 Config Portc.5 = Output Led2 Alias Portc.5 Config Timer1 = Timer , Prescale = 8 Enable
-
Thread
Fehler in bus characteristic
$crystal = 3686400 $baud = 9600 $hwstack = 40 $swstack = 32 $framesize = 60 Ddrc = 00001000 Portc = 00001000 Config Sda = Portc.4 Config Scl = Portc.5 I2cinit Config Twi = 100000 Enable Interrupts Dim X As Byte Dim Slave As Byte X = 0 Slave = &H7F Main: Do Waitms 12 I2creceive
$regfile = "M8def.dat" $crystal = 3686400 $baud = 9600 $lib "i2c_twi.lbx" Config Scl = Portc.5 Config Sda = Portc.4 Dim B1 As Byte , B2 As Byte Dim W As Word At B1 Overlay W = 0 I2cinit Config Twi = 50000 Dim B As Byte , X As Byte Do I2cstart I2cwbyte &B11010001 I2crbyte
-
Thread
Wie binde ich im AVR-Studio ein C-File ein?
_delay_us(500); // Delaytime before init rf-settings */ while(1) { PORTC = TX_SPI_Master_Transmit(0x3F, 0xAA); //Adresse vom FIFO = 3F PORTC = TX_Strobe(0x35); _delay_ms(1000); PORTC = 0x00; // Clear PORTC PORTC = TX_SPI_Master_Transmit(0x3F, 0x55); //Adresse vom FIFO = 3F PORTC = TX_Strobe(0x35); _delay_ms(1000); PORTC = 0x00; // Clear PORTC _delay_ms(1000); PORTC = TX_SPI_Master_Transmit_1(0x3F, 0xFF); //Adresse vom FIFO = 3F PORTC = TX_Strobe
-
Thread
Pin defekt? Wie herausfinden?
. Guuut, aber geschalten habe ich ihn nur kommt am Pin nix raus. [...] DDRC=0xff; ob PORTC |= (1<<PC5); PORTC &= ~(1<<PC4); oder PORTC |= (1<<PC4); PORTC &= ~(1<<PC5); ...macht keinen Unterschied. Pin4 bleit 0(0V) und Pin5 bleibt 1(5V). Mach ich hier was falsch oder ist da
eben nur der 3 Zeiler aus dem ersten Post^^ [code] #define F_CPU 8000000 int main() { PORTC = 0xff; PORTA = 0xff; DDRC=0xff; DDRA=0xff; while(1) { //TODO:: Please write your application code } } [/code]
-
Thread
AVR Attmega8a Routinenaufruf fumktioniert nicht (asm)
LCD4ZTxt ldi YH,HIGH(RH_2) ldi YL,LOW(RH_2) ldi r16,0b00000101 out DDRC,r16 out PORTC,r16 ldi DHTmaske,0x04 ldi arg,0x46 rcall LCD_pos rcall DHT_lesen rcall wait2s ldi DHTmaske,0x01 ; out DDRC,DHTmaske ; out PORTC,DHTmaske ldi YH,HIGH(RH_H)
[/avrasm] ist es nicht gesetzt. Hier [avrasm] ldi r16,0b00000101 out DDRC,r16 out PORTC,r16 [/avrasm] aber schon.
-
Thread
Funktionsaufruf
wait(); PORTC ^= ( 1 << PC7 ); } // Ende ISR // ##################### TIMER0 initialisieren ############################ void init(void) { TIMSK = (1<<TOIE0) ; TCCR0 = (1<<CS01); // Takt/8 DDRC=0xff; PORTC= 0xff; sei(); } // ###################################### main ########################### int main(void) { init(); while(1) { } return 0; } // Ende main //#
-
Thread
ATMEGA2560+STK600+LCD(44780)
den Fehler suche und Ihn nicht finde wende ich mich hierher. Ich habe ein ASTK600 mit mega2560 am PORTC möchte ich ein 4x20LCD(44780 kompatibel) in betrieb nehmen lib von Peter Fleury So die definition in der LCD.H #define LCD_PORT PORTC /**< port for the LCD lines */ #define LCD_DATA0_PORT PORTC /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT PORTC /**< port for 4bit data bit 1 */ #define LCD_DATA2_PORT PORTC /**< port for 4bit data bit 2 */ #define LCD_DATA3_PORT
-
Thread
sda = (d >> 7); für GCC
define sda PC4 #define scl PC5 void i2c_write(unsigned char d) { unsigned char i; PORTC &= ~(1<<PC5); for ( i=1; i<=8; i++) { sda = (d >> 7); PORTC |= (1<<scl); d = d << 1; PORTC &= ~(1<<scl); } PORTC |= (1<<sda); PORTC &= ~(1<<scl);
); #define SBIT(port,pin) ((*(volatile struct bits*)&port).b##pin) #define scl SBIT(PORTC, 5) #define sda SBIT(DDRC, 4) #define sdain SBIT(PINC, 4) #define sdalevel SBIT(PORTC, 4) #define uchar unsigned char void I2C_write(uchar d) { uchar i; sdalevel = 0; scl = 0;
-
Thread
I2C Kommunikation mit RV3029 Problem
' 8 MHz $hwstack = 40 $swstack = 16 $framesize = 32 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 20 * 2 'Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e
' 8 MHz $hwstack = 40 $swstack = 16 $framesize = 32 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.7 , Rs = Portc.6 Config Lcd = 20 * 2 'Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e
-
Thread
Interrupt +ATMEGA32
**** I/O ***********************************************************/ //LED BIT - HEAT Output PORTC |= (1<<PORTC7) | (1<<PORTC6) | (1<<PORTC5) | (PORTC4); DDRC = 0x00; //--------------------- //HEAT-FAN Output PORTD |= (1<<DDD7) | (1<<DDD6); DDRD |= (1<<PORTD7) | (1<<PORTD6); //----
SIGNAL (INT2_vect) { PORTC &= ~(1<<PORTC7) | (1<<PORTC6) | (1<<PORTC5) | (PORTC4); DDRC = 0xF0; PORTC &= ~(1<<PORTC7); PORTC &= ~(1<<PORTC7); port_80_temp_ = PINA; port_80_[port_80_write_pointer_] = port
-
Thread
Mal wieder EA DOG-M 162, keine Initialisierung
Labornetzteil) Pin24 VOUT an 5V Pin25 VIN an 5V Pin26 VDD an 5V Pin27 VSS an Masse Pin28 D7 an PortC 7 (ATMega16) Pin29 D6 an PortC 6 Pin30 D5 an PortC 5 Pin31 D4 an PortC 4 Pin32 D3 an PortC 3 Pin33 D2 an PortC 2 Pin34 D1 an PortC 1 Pin35 D0 an PortC 0 Pin36 E an PortB 2 Pin37 RW an PortB
;LCD Function SET ldi lcdd, 0b00111001 ; 8bit,2-Zeilen, kleine Schrift, usw. out PORTC, lcdd rcall lcd_lade rcall vz2100us ; Instruction Table 1 an ldi lcdd, 0b00011100 ; Standard out PORTC, lcdd nop rcall lcd_lade
-
Thread
ATMEGA48A Variablen reset nach Interrupt Aufruf.
while (1) { for(int i=0; i<=(20-pwm); i++){ _delay_us(100); } if (test==1) { PORTC|=0b0111111; PORTD|=0b11100011; } for(int i=0; i<=pwm; i++){ _delay_us(100); } PORTC&=~(0b0111111); PORTD&=~(0b11100011); } } ISR(INT1_vect){ test=1; }
PORTC&=~(0b0111111); PORTD&=~(0b11100011); Was ist damit? Das löscht doch die LEDs. Also praktisch hast du damit ein PWM gemacht. Mal gucken ob die LED unter ossczi doch nicht kurz leuchten?
-
Thread
Trennmittel für Programm gesucht
$regfile = "m8def.dat" $crystal = 4000000 Config Timer1 = Timer , Prescale = 64 Config Portc = Output Config Portd.4 = Output Led Alias Portc.0 Led2 Alias Portc.1 Led3 Alias Portc.2 Led4 Alias Portc.3 Led5 Alias Portc.4 Led6 Alias Portc.5 Led7 Alias Portd.4 Led = 0 Led7 = 0
$regfile = "m8def.dat" $crystal = 4000000 Config Timer1 = Timer , Prescale = 64 Config Portc = Output Config Portd.4 = Output Led Alias Portc.0 Led2 Alias Portc.1 Led3 Alias Portc.2 Led4 Alias Portc.3 Led5 Alias Portc.4 Led6 Alias Portc.5 Led7 Alias Portd.4 Led = 0 Led7 = 0
-
Thread
Midi mit Bascom und AVR
Konstanten ' --------------------------------------------------------------- Relais1 Alias Portc.5 'Relais Namenvergabe Relais2 Alias Portc.4 Relais3 Alias Portc.3 Relais4 Alias Portc.2 Relais5 Alias Portc.1 Relais6 Alias Portc.0 Plus Alias Pind.5 ' Schalter Namenvergabe
-
Thread
DIP-Schalter an ATmega8515
High). Schaltplan im Anhang:) Hierzu kam mir folgende Idee: [c] DDRC = 0x00; // Gesamter PORTC als Ausgang. PORTC = 0xff; // Interne Pull up's an. [/c] Nun noch eine Methode die für den Anfang mal nur PC0 auswerten soll. [c] int DMXStartadresse() { volatile uint8_t y; if( PD0
High). Aha. Also Urschleim. > Hierzu kam mir folgende Idee: > > DDRC = 0x00; // Gesamter PORTC als Ausgang. Kommentar und Code stimmen nicht überein. Bzgl. Eingang oder Ausgang. > Nun noch eine Methode die für den Anfang mal nur PC0 auswerten soll. ... > if( PD0 == 1 ) So so.
-
Thread
AVR-ASM Knobelei : Bitmanipulation am LCD im 4-Bit Mode
Al1 und Al2 setzen out portb, r18 ;Daten/Befehlsbyte ausgeben sbi portc, 5 ;E auf High setzen cbi portc, 5 ;E wieder auf Low setzen ; mov r18, r16 ;Datenbyte kopieren rol r18 ;unteres Nibble an die
Al1 und Al2 setzen out portb, r18 ;Daten/Befehlsbyte ausgeben sbi portc, 5 ;E auf High setzen cbi portc, 5 ;E wieder auf Low setzen ret [/avrasm] Mir ist es auch wichtig, Code so zu schreiben, das er einfach angepasst werden kann
-
Thread
Poti Auslesen und in Terminal anzeigen
char Buffer[10]; uart_init(F_CPU, BAUD); DDRC &= ~(1<<PC0); /* Pin PC0 als Eingang */ //PORTC |= (1<<PC0); /* internen Pull-Up an PC0 aktivieren */ PORTC = 0; ADC_Init(); // Initialisierung Analogeingang while(1) { result = ADC_Read(0); utoa( result, Buffer
char Buffer[20]; uart_init(F_CPU, BAUD); DDRC &= ~(1<<PC0); /* Pin PC0 als Eingang */ //PORTC |= (1<<PC0); /* internen Pull-Up an PC0 aktivieren */ PORTC = 0; ADC_Init(); // Initialisierung Analogeingang put2s( "ADC Messung: PC0\n" ); while(1) { result = ADC_Read
-
Thread
Frage zum Portexpander 74HCT165
c] [c] while(1) { if (stopbit == false) { // Clock im Ruhezustand auf 1 PORTC |= (1<<PC4); // An PL mal stroben... // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<<PC5); unsigned int m; for(m=1
{ usart_write_str("1"); } // An Clock mal stroben... // Clock auf High PORTC |= (1<<PC4); // Clock auf Low PORTC &= ~(1<<PC4); // Clock auf High PORTC |= (1<<PC4); } stopbit = true; } [/c] Das stopbit setze ich dann über die serielle zurück, damit
-
Thread
Steuerung für Ersa-Kolben
Config Portb.1 = Output ' Fet zum Einschalten der Heizung Config Portc.0 = Input 'adc0 = strommessung Config Portc.1 = Input 'adc1 = outputvoltage Config Portc.5 = Input
-
Thread
µC Pin hängt bei einer bestimmten Spannung
Code: [code] void Zaehlung(void) { Fenster_auf = (PIND & (1<<PIND5)); if (Fenster_auf) {PORTC |= (1 << PC0);} else {PORTC &= ~(1 << PC0);} } [/code]
Nachtrag: PortC richtig konfiguriert?
-
Thread
ATmega 128 EIngänge verwenden
Ich habe die PINs von PORTC (PIN0,PIN1,PIN3) an den analogen Pegel von den Kippschaltern anliegen. Ich versuche per Abfrage den Zustand zu prüfen und möchte dann in meinem programmierten LC-Display diese Information 0/1 anzeigen
Liegt auf PORTC ab Werk nicht das JTAG Interface und muss man das nicht erst per Fuse abschalten, wenn man PORTC als normale GIO-Pins benutzen will?
-
Thread
Brauche mal Hilfe bei Mikrobasic programm
= 206 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 8 'else portc =0 end if if ausgabe > 4 then portd = 132 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 4 'else portc =0 end if if ausgabe > 2 then portd = 134 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 2 'else portc =0 end if if ausgabe > 1 then portd = 135 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 1 'else portc =0 end if if ausgabe > 0 then portd
-
Thread
ATMega(8) und int. RC
Frage zum ATMega... Wenn ich den int. Osc. auf 1MHz stelle und folgenden code schreibe: do portc.0 = 1 waitms 100 portc.0 = 0 waitms 100 loop blinkt die led langsamer als wenn ich den int. Osc. auf 8MHz stelle...warum? im code steht doch das es 100 ms warten soll (muss doch egal sein
Stefan S. schrieb im Beitrag #2324575: > Hallo, > do > portc.0 = 1 > waitms 100 > portc.0 = 0 > waitms 100 > loop > danke stefan 'System frequency $crystal = 1000000 ' Bei 1 MHz '$crystal = 8000000 ' Bei 8 MHz
-
Thread
Problem mit LEDS an Port C0-C2
Wie hast du denn die LEDs angeschlossen? Ansonsten: Bei PORTC und Leds taucht sofort das Schlagwort 'JTAG' auf. Das hast du doch per Fuse abgeschaltet? Nimm mal den PORTB als Ausgabe her. Woher weist du eigentlich, dass der Mega128 resettet?
Habe mal dir Hexschreibweise probiert bei den LEDS PORTC=0x03 dann leuchtet die 2. Warum klappt das nicht mit der anderen schreibweise???(wie oben)
-
Thread
Probleme bei Programm
ddrc, r16 loop1: in r16, pina andi r16, 0b00011100 cpi r16, 0b00001000 breq led_ein1 sbi portc, 0 rjmp loop1 led_ein1: cbi portc, 0 rjmp loop1 loop2: in r16, pina cpi r16, 0b11111100 breq led_ein2 cbi portc, 0 rjmp loop2 led_ein2: sbi portc, 0 rjmp loop2
led_ein2: sbi portc, 0 ret ;statt rjmp loop2
-
Thread
AT90CAN128 wird heiß nachdem Programm läuft
noch pulldown wiederstände rein machen... Habe da wohl einen Gedankenfehler drin.... Das mit dem PortC werde ich mal nachsehen wenn ich zuhause bin heute abend ;-)
Ok..... also mal zur Info..... Im Testprogramm war der Eingang PortC als Ausgang gesetzt und daher kam die Hitzentwicklung.... mittlerweile funktioniert dies... Jetzt habe ich aber ein weiteres Problem an meinen Leistungsausgängen.... der ULN2804 ist ersetzt worden
-
Thread
LC Display will einfach nicht
delay_ms(1); } void lcd_init (void) { DDRC = 0xff; long_delay(100); PORTC =3; unsigned int a = 0; while(a < 3){ long_delay(10); PORTC |= (1<<PC5); long_delay(10); PORTC &= ~(1<<PC5); a++; } long_delay(10); PORTC = 2; long_delay(10); PORTC |= (1<<PC5); long_delay(10); PORTC &= ~(1<<PC5); long_delay(10); lcd_write(40,0); lcd_write(12,0); lcd_write(4,0); } void lcd_write (char Data,char CD) {
-
Thread
Drehimpulsgeber
- 62) an meinem xmega128A1 zu betreiben. Angeschlossen sind PinA und PinB des Impulsgebers an PORTC Pin0 und Bin1. Ich verwende hierfür die integrierten PullUps(PORT_OPC_WIREDANDPULL_gc). Folgender Code wird in einem Interrupt jede Millisekunde ausgeführt: cli(); newB = (PORTC.IN & 0x02
stdbool.h enthaltenen bool Datentyps funktioniert folgender Code nun einwandfrei bei mir: newB = (PORTC.IN & 0x02); newA = (PORTC.IN & 0x01); if(newB != oldB || newA != oldA) { if(oldA == oldB) { xorA = newA != oldA; xorB = newB != oldB; if(xorA == 0 && xorB == 1) cnt--;
-
Thread
SHTxx + ATmega16 + TWI
gesendet. Kann bitte jemand nochmal drüberschauen. 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
Bascom u. SPI und Soft-SPI
erfolgreich getestet (MMC Karte). Hier der Programmauszug: Config Spi = Soft , Din = Pinc.3 , Dout = Portc.4 , Ss = Portc.5 , Clock = Portc.2 ' AT8 Ddrc = &B11110111 Cs Alias Portc.5 Clk Alias Portc.2 Miso Alias Pinc.3 'inp Mosi Alias Portc.4
Also wenn ich PortC oder PortD mit Softspi nehme gehts auch nicht. Könntest du mir die MMC Programm geben, dann hätte ich den direkten vergleich und weniger Fehlerquellen. Verstehen kann ich das nicht ich arbeite
-
Thread
RC Empfänger auslesen, kein konstanter Wert
Hm, ich kapier' Deinen Source nicht, aber willst Du wirklich, dass if (!(PORTC = 0b00000001)) { PORTC = 0b00000001; } Sollte das nicht evtl. if (!(PORTC == 0b00000001)) { PORTC = 0b00000001; } heissen? Kommt mehrmals vor.
-
Thread
AD-Wert dezimal augeben
Config Portd = Output Dim W As Word Dim V As Single Const Prescale_value = 10 / 1024 Config Portc.0 = Input Portc.0 = 1 If Portc.0 = 0 Then Gosub Ad_start End If Ad_start: Config Adc = Single , Prescaler = Auto , Reference = Avcc W = Getadc(0) V = Prescale_value * W V =
Saft da ist und kein Reset gedrückt wird. Also gehört da eine Endlosschleife her: [pre] Do If Portc.0 = 0 Then Gosub Ad_start End If Loop End [/pre] Bei der Abfrage auf Benutzereingabe (If Portc.0 = 0 Then) hätte ich in Assembler und in C Bauchweh, mag sein, dass das in BASCOM geht,
-
Thread
ATmega1284P Timer ohne Funktion. warum?
code] $regfile = "m1280def.dat" $crystal = 8000000 $baud = 19200 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.6 Config Lcd = 16 * 2 Cursor Off Cls Dim X As Word Config Timer1 = Timer , Prescale = 256
-
Thread
AVR/Atmega8 an STK500 - UART/USART
c = i + "0"; USART_TransmitC(c); } */ while (1) { DDRC = 0xff; PORTC = 0x00; _delay_ms(500); PORTC = 0xff; _delay_ms(500); USART_Transmit(0xFF); } return 0; // never reached } [/code]
c = i + "0"; USART_TransmitC(c); } */ while (1) { DDRC = 0xff; PORTC = 0x00; _delay_ms(500); PORTC = 0xff; _delay_ms(500); USART_Transmit(0x00); } return 0; // never reached } [/code]
-
Thread
USART ATmega Falsche Zeichen
14745600 #define BAUD_USER 115200 #define BAUD_CHIP 115200 #define HOST_TX_ON PORTC |= 0x02 #define HOST_TX_OFF PORTC &= ~0x02 #define HOST_RX_ON PORTC |= 0x01 #define HOST_RX_OFF PORTC &= ~0x01 #define HOST_SHDN_ON PORTD |= 0x80 #define HOST_SHDN_OFF PORTD &= ~0x80
-
Thread
LM235 Beschaltung
' LCD Data port at Port D DEFINE LCD_DBIT 0 ' LCD starting data bit = 4 DEFINE LCD_RSREG PORTC ' LCD register select on port D DEFINE LCD_RSBIT 4 ' LCD reset portD.4 DEFINE LCD_EREG PORTC ' LCD enable on port D DEFINE LCD_EBIT 5 ' LCD output on PortD.5 DEFINE
' LCD Data port at Port D DEFINE LCD_DBIT 0 ' LCD starting data bit = 4 DEFINE LCD_RSREG PORTC ' LCD register select on port D DEFINE LCD_RSBIT 4 ' LCD reset portD.4 DEFINE LCD_EREG PORTC ' LCD enable on port D DEFINE LCD_EBIT 5 ' LCD output on PortD.5 DEFINE LCD_BITS