-
Thread
Atmel Start fehlerhaft? Atmel SAMD21E18
Ob es je aus dem Beta-Status herauskommt? ;) Mir geht es bei dem Atmel Start weniger um die Anbindung des ASFs. Viel Interessanter ist es, zu wissen, was man wie auf dem kombinieren kann. Bei der AVR Programmierung (vorallem Attinys) musste man lange
define PB6 GPIO(GPIO_PORTA, 27) #define PB7 GPIO(GPIO_PORTA, 28) // Bug Atmel Start? /* PORTC */ #define PC0_TX GPIO(GPIO_PORTA, 16) #define PC1_RX GPIO(GPIO_PORTA, 17) #define PC2 GPIO(GPIO_PORTA, 18) #define PC3 GPIO(GPIO_PORTA, 19) #define PC4_SS GPIO(GPIO_PORTA,
-
Thread
SPI zwischen zwei ATMega8
Das scheint bei dir Methode zu haben [c] else if (spi_data == 0x00) { PORTC= (0<<PC0); [/c]
Miau, /Slave Select/ schon, aber nicht vernünftig. Und da gibt's noch so eine dubiose Null: > PORTC= (0<<PC0);
-
Thread
LCD 1602A an Atmega128A will nicht funktionieren
Autsch. Das haben wir alle übersehen. AUf dem LCD ist die R/W nicht auf GND verkabelt, sondern geht an den Prozessor. Das könnte es wirklich sein!
Zeichen auf dem Display. Der entscheidende Unterschied dürfte wirklich sein, dass der Olimex Code am PortC alle 7 LCD Leitungen auf Ausgang und 0 setzt. Dass der nur wirre Zeichen bringt, das kann jetzt an vielem liegen. Unter andermm daran [c] void Delay(unsigned int a) { while (a) {
-
Thread
Uhrenquarz Feineinstellung
C0 legen? Bsp. 'quarz PC7 quarz Alias Pinc.7 Config quarz = Input 'Zum Oszi oszi Alias Portc.0 Config oszi = Output do oszi = quarz loop end
Sommer-Winterzeit Umschaltung. Auch der 29.02. wird völlig ohne aufwändige Software ermittelt. Einfacher geht es doch nicht :-(
-
Thread
Tasterverriegelung und Tasterentprellung
an. [c] if(get_key_press(1<<KEY_2))// nur Taste press { // LED an PORTC &= ~(1<<PC1); } if(get_key_press(1<<KEY_3)) // nur Taste press { // LED aus PORTC |= (1<<PC1); } [/c] Verwende ich die Tasterentprellung von Peter, ist es
|=(1<<PA2); // EN ein PORTC &= ~(1<<PC5); // LED 5 an } } [/c] mfg.
-
Thread
Timer PWM 50Hz Pd 20ms OCR0A float Probleme
rein rechnerisch kannst du daher Pulslängen von 1 bis 2 ms mit Werten von 12 bis 24 erzeugen. Das geht sich also hinten und vorne nicht besser aus mit diesem naiven Ansatz.
---------------------------------------------------------------------------------------------- PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3); //---------------------------------------------------------------------------------------------- TCCR1A |= _BV(COM1A1) | _BV(WGM10); TCCR1B |=
-
Thread
Timer soll Variabel löschen in Bascom.
Eingabe As String * 1 Dim Zähler As Byte Dim Länge As Byte Starten: Porta = 0 Portb = 0 Portc = 0 Wait 1 Portc.7 = 1 Empfangen = "" Print " Start " 'Rückmeldungstest '------------------------------------------------ Warten: Namen = Left(empfangen
Paketen Restore Map1 For T = 1 To 73 Read Pixel : Portb = Pixel Waitus 40 Next T Portc.7 = 1 Gosub Lied Portc.7 = 0 '------------------------------------------------ ' Ende nach Zeit '------------------------------------
-
Thread
Timer/Counter0 Overflow Interrupt kommt nicht
PORTA = 0x00; DDRB = (1<<PB3) | (1<<PB4); DDRD = (1<<PD6) | (1<<PD7); DDRC = 0xFF; PORTC = 0x00; PORTC |= (1<<PC1); // Timer0: Enable Phase correct PWM(non-inverted), prescaler = 8 TCCR0A = (1<<WGM02) | (0<<WGM01) | (1<<WGM00) | (1<< COM0A1) | (0<< COM0A0); TCCR0B
bei 249 bist. Im nächsten Schritt werden wieder 10 addiert, dann bist du bei 3 (259 - 256), es geht weiter mit 13, 23, …, 253. Diese if-Bedingung greift nur sowas von selten, dass du sie genauso gut komplett weglassen kannst.
-
Thread
SD_Karte Directory erstellen
char*)buffer_adc); ffwrite(0x0D); ffwrite(0x0A); ffclose(); PORTC ^=(1<<PC0); } } counter_sd++; _delay_ms(100); start_converting(); } } [/c]
Merkwürdig, jetzt bleibt der Code kurz nach dem Eintritt in die Main stehen, nichts geht mehr. Hier mal der Code: [c] int main(void) { avr_init(); UART_Init(); _delay_ms(50); uart_puts("Boot"); PORTC ^=(1<<PC1); // Versuch Karte zu Initialisieren, bis
-
Thread
LCD an Atmega 168 anschließen
[code] Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6 [/code] Oh, Herr ....
------------------------------------------------------------- Waidmann's heil! Die Jagd auf mich geht gleich los... MfG Paul
-
Thread
Problem mit Assembler (ATmega8 / AVR-GCC)
beschreiben: Ausgänge CLR click OUT DDRB, click ; DDRB mit 0x00 beschrieben: Eingänge OUT PORTC, click ; LEDs ausschalten OUT PORTB, click ; und PullUps deaktivieren loop: IN click, PINB ; die Taster auslesen und OUT PORTC, click ; und auf die LEDs spiegeln RJMP
LDI click, input OUT _SFR_IO_ADDR(DDRB), click ; Eingänge LDI click, 0x00 OUT PORTC, click ; LEDs ausschalten OUT PORTB, click ; und PullUps deaktivieren loop: IN click, _SFR_IO_ADDR(PINB) ; die Taster auslesen und OUT _SFR_IO_ADDR(PORTC), click
-
Thread
AVR Ports und Pins Verständnisfrage
nimmt man die DDx0-7, PINx0-7 bzw. Px0-7 z.B. DDRD |= (1<<DDD0) | (1<<DDD0)....; //PD0 oder PIND0 geht natürlich auch
Beschaltung (mit, ohne Quarz, AD-Wandler usw.) wäre eine andre Anordnung optimal. Das so zu machen geht aber einfach nicht.
-
Thread
CNC Maschinchen
Indy = 4 End If 'ports setzen Portb.4 = My(indy).1 Portb.5 = My(indy).2 Portc.0 = My(indy).3 Portc.1 = My(indy).4 End Sub Sub Motorz(rz As Integer ) Indz = Indz + Rz 'wenn obergrenze erreicht, dann auf anfang setzen If Indz > 4 Then Indz = 1 End
erreicht, dann auf ende setzen If Indz < 1 Then Indz = 4 End If 'ports setzen Portc.2 = Mz(indz).1 Portc.3 = Mz(indz).2 Portc.4 = Mz(indz).3 Portc.5 = Mz(indz).4 End Sub
-
Thread
Spannung am ATmega32-Output unterschieldich
+8*step){ PORTC|=1<<6; } if(0){ PORTC|=1<<7; } else{ PORTD=0; PORTC=0; } } } zurück zur Frage: wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung
eclipse schrieb im Beitrag #4274584: > wenn ich dieses if(0){..} hinzufüge, dann geht die Spannung von portc7 > auf von 5V auf 0.2V runter... wie kommt das zustande? Hast du doch genau so beschrieben: eclipse schrieb im Beitrag #4274584: > if(0){ > PORTC|=1<<7; >
-
Thread
Wie Assembler ISR in C integrieren ?
r8" "\n\t" "reti" "\n\t" ::[sreg] "I" (_SFR_IO_ADDR(SREG)), [port] "I" (_SFR_IO_ADDR(PORTC))); } [/c] Wenn in der 'while(1)' mal noch was rein soll, was selbstverständlich wieder auf die Geschwindigkeit geht, reserviert man für das Sichern von SREG und für die Berechnung jeweils ein Register
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
Einfache Schalter>LED-Schaltung: Register brauchen mehrere Sekunden zum Reset
nach dem "Loslassen" des Buttons noch einige Sekunden (~5) angeschaltet, bis sie schließlich aus geht. Per Suchmaschine habe ich dazu keine wirklich passenden Lösungen gefunden - ich hatte "als erstes Projekt" in der Vergangenheit auch eine Siebensegmentanzeige angesteuert, damals wurde "sofort" umgeschalten
gedrückt war. [c] #include <avr/io.h> #include <stdlib.h> int main(){ DDRB = 0x00; PORTC = 0xFF; DDRC = 0xFF; while(1) { if(PINB & (1<<PINB0) ){ PORTC = 0x00; } else{ PORTC = 0xFF; } } return 1; } [/c] Atmega 328P, als Entwicklungsboard
-
Thread
ATmega8 ADC-Durchschnittsberechnung
File inkludieren und ab geht die Luzi.
if( blinkCnt == 100 ) { > blinkCnt = 0; > > if( blinkCnt < 50 ) > PORTC &= ~LED_RED; > else > PORTC |= LED_RED; > } > } > } Geht auch einfacher: [c]volatile uint8_t ledMode; //fehlt da nicht ein volatile? volatile uint8_t blinkCnt;
-
Thread
LCD an PORTC ATmega8
mov temp2, temp1 swap temp1 andi temp1, 0b00001111 out PORTC, temp1 rcall lcd_enable andi temp2, 0b00001111 out PORTC, temp2 rcall lcd_enable rcall delay50us pop temp2 ret
einzufügen. ; Siehe dazu http://www.mikrocontroller.net/topic/81974#685882 lcd_enable: sbi PORTC, 5 ; Enable high nop ; mindestens 3 Taktzyklen warten nop nop cbi PORTC, 5 ; Enable wieder low
-
Thread
LCD zeigt nichts an
liegen. Aber der Code für den Atmega ist als Beispiel-Code zum downloaden und bei andern LEuten geht der so anscheinend. Hmm..
H 10 else // write instruction (RS=0, RW=0) dataBits=0; PORTC = dataBits | (data>>4); // output high nibble first, zzgl. Zustand für RS-Leitung lcd_flash_e (); [/c] geht mir die Galle hoch. Wer so programmiert, sollte nicht veröffentlichen.
-
Thread
ATmega16 und HD44780 in 4-Bit modus Hilfe!
anhang) da steht das der lcd_write deklariert werden muss, was muss ich oben eingeben das es dann geht??? -OXY
Er ist im Urlaub...also fragen geht gut OXY
-
Thread
Darf nur den selben Mikrocontroller verwenden?
Beitrag #4254048: > Dann stellt er zwischen den beiden µCs immer den ISP-Takt um? Mit dem > anderen gehts doch! Nein... aber wenn er neu ist... dann is CKDIV8 und 1 Mhz aktiv. Wenn er sein "alten" Mega8 auf 8Mhz ohne CKDIV8 hat, und danach seine ISP Geschwindigkeit einstellte, ist diese für den neuen
darf nicht schneller als CLK/8 also 125kHz sein. Der einzige Fehler der genauso oft auftaucht ist PortC bei der Mage32-Familie (JTAGen)
-
Thread
C versus Assembler->Performance Gesperrt
Subtraktion bzw. Vergleiche, > sondern so gemischt. Weil es so einfacher ist im Compiler: Der geht alls Bytes von 0 bis N-1 durchund sucht die beste Möglichkeit für den Byte-Vergleich. o CPI geht weil 22 >=16. o CPC 0 geht immer. o SBCI geht weil 23 >= 16 und das Register danach nicht
Kaj G. schrieb im Beitrag #4259519: > Geht es nur um den Asm-Code, oder auch sachen wie "Lesbarkeit"? geht es > um die laufzeit? Zuallererst geht es um die Funktionsfähigkeit. Und zwar fehlerfrei :-) Laufzeit ist ein natürlich ein Thema
-
Thread
HC-SR04 Ultraschallsensor + 7-Segment Anzeigen Problem mit Ausgabe wenn kein Objekt detektiert wird
Um welchen µC geht es hier eigentlich (oder habe ich 'was übersehen)?
PORTA = segment7[messwert/10]; //10er, LED-Segment mitte messwert = messwert % 10; // 0 .. 9 PORTC = segment7[messwert]; //1er, LED-Segment rechts [/c]
-
Thread
RS485 Schaltung funktioniert nicht
die anderen Pins auf den Port bleiben high obwohl ich die auf low setze: [c] DDRC = 0xFF; PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); [/c] Alle Pins auf Ausgang und Pin4 und 5 auf low... Edit: PIN3 kann ich schalten, 4 und 5 nicht, wird wohl am Prozessor liegen. Ich nehm mal ein anderen Pin
LED_DDR DDRA #define LED_PORT PORTA #define TR_DDR DDRC #define TR_PORT PORTC #define TR_PIN 3 #define LED1 0 #define LED2 1 //#define TRANSMIT_ON PORTC |= (1<<PC3) //#define TRANSMIT_OFF PORTC &= ~(1<<PC3) //Statusdefinition #define
-
Thread
ATMega 168PB Interrupt Programmieren
kein erfolg. Poste mal den Quelltext - und zwar den richtigen. :-) Und delay() im Interrupt geht mal garnicht.
// Turns on INT0 sei(); // turn on interrupts*/ while(1) { PORTC|=(1<<PORTC0); //PINC0 ist über ein Kabel mit dem PORTD2 verbunden _delay_ms(500); PORTC&=~(1<<PORTC0); _delay_ms(10000); } } [/c] -------------------------------------------------
-
Thread
delay() mit interrupt funktioniert einfach nicht
Deklaration der Variable grundsätzlich richtig ist. > > Das ist ein guter Punkt. Wie läuft das in C? Wie geht man bei sowas vor? Wie oft soll ich denn noch den Link posten, bis du endlich mal draufklickst und nachliest, was Sache ist [[FAQ#Was hat es mit volatile auf sich]]
@Eric B. Sorry geht natürlich nur wenn 100µs Zähler nicht gelöscht wird.
-
Thread
CAN auslesen AT90CAN128
can_received_temperatur can_received_gang can_received_messwerte Oder so ähnlich. :-) Oder ganz weglassen geht auch. :-)
man wackeln lassen mit dem PIN-Register: PINC = (1<<PC0); // Zustand von LED1 wechseln Das geht nicht mit allen AVR, aber beim 90CAN funktioniert das so. [c] ISR (CANIT_vect) { uint8_t canpage; PINC = (1<<PC0); // Zustand von LED1 wechseln [/c]
-
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
Atmel Studio 6 kompiliert Nixie Programm für ATmega8 nicht
<4) + (uint8_t)(11); } else { byte = (uint8_t)(10<<4) + (uint8_t)(value); } sbi(PORTC, (group+1) % 3); outp(255,PORTD); cbi(PORTC, (group+1) % 3); sbi(PORTC, group); outp(byte,PORTD); cbi(PORTC, group); } [/c] Ich habe jetzt Atmel Studie 6 sowie (vermutlich überflüssigerweise
<4) + (uint8_t)(11); } else { byte = (uint8_t)(10<<4) + (uint8_t)(value); } sbi(PORTC, (group+1) % 3); outp(255,PORTD); cbi(PORTC, (group+1) % 3); sbi(PORTC, group); outp(byte,PORTD); cbi(PORTC, group); } Error List: Warning 1 #warning "This header file is
-
Thread
TFT_ILI9163C mit Arduino richtig verbinden
und DDD2 identisch ist. Es fehlt dann noch PORTD |= (1<<DDD2); damit der PIN auf high geht.
);// SPSR = (1 << SPI2X); // maximale Geschwindigkeit: F_CPU / 2 _delay_ms(50); } [/c] geht es.
-
Thread
RFM12 Atmega will nicht
da die Hardware SPI Pins bereits belegt sind. CS und SCK an PortD 4 und 7 . Mosi und Miso an PortC 0 und 1 . Als Pegelconverter nutze ich den von Holger Klabunde. Kann mir eiener Weiterhelfen von ihnen warum das mit meiner konstelation nicht geht. mfg
Funkmodulen. Das stimmt schon, Ich hatte ja auch gefragt ob das mit meiner portconfiguration so geht, kann ja auch falsch sein .
-
Thread
Ladung or Entladung eines Kondensator mit Free Running Mode ATmega 8
mitten drinn? und warum summierst du den ADC Wert? Darf man fragen, was das hier [c] if ( PORTC |= 0x01) // Set PC0 [/c] sein soll? Wozu ein if? Welchen Zweck soll das haben?
{ PORTC &= ~0x01 ; //Reset PC0 } } return (0); } Danke im Voraus
-
Thread
16 Segment LED Display "Treiber"
vielen Funktionsaufrufe? [c] #define SEGH (1 << PC0) #define LEFT (SEGH | SEGG) void A(void) {PORTC = LEFT;} [/c] Wahrscheinlich geht es noch einfacher..
Oh:[c]void A(void) {PORTC = LEFT | RIGHT | UP | HORI;}[/c]
-
Thread
alle paar Sekunden AVR aufwachen lassen
Q_M schrieb im Beitrag #4194853: > Laut Sleep Mode Tabelle geht es nur über einen Timer2 (unsynchron). Was ist flasch an TMR2? Sonst kann man ihn auch vom WDT wecken lassen.
Q_M schrieb im Beitrag #4194853: > Laut Sleep Mode Tabelle geht es nur über einen Timer2 (unsynchron). Was denkst du denn, was hier "unsynchron" bedeutet?
-
Thread
Arduino Webserver mit Diagramm
\n" //Port Schalten und Status %PORTC1 bedeutet PORTC PIN1 "<p align=\"left\">\r\n" "<input type=\"checkbox\" name=\"OUT\" value=\"B\" %PORTC1>\r\n" " MOC(PC1)\r\n" "</p>\r\n" //Port Schalten und Status %PORTC6 bedeutet PORTC PIN6 "<p align=\"left\">\r\n" "<input type=\"checkbox\" name=\"OUT\" value=\"G\" %PORTC6>\r\n" //"Port C Pin 6\r\n" " PCres (PC6)\r\n
-
Thread
Xmega SPI Problem
nicht pauschalisieren.... Ganz neben bei hat der XMega ja 3 Interrupt Prioritäten... Aber meist geht es trotzdem ohne... kommt halt auf den Aufwand an, den man reingesteckt hat ... Wenn du DMA benutzt musst du die UART zum SPI umbauen... dann ändert sich auch die Pinbelegung SPI <-> USART SPI
PORTD.OUTCLR = (1<<PIN1) | (1<<PIN3); //Set Pins to output for LCD_RS, LCD_RESET, LCD_CS PORTC.DIR = (1<<PIN5) | (1<<PIN6) | (1<<PIN7); PORTC.OUTCLR = (1<<PIN5) | (1<<PIN6) | (1<<PIN7); PORTCFG.VPCTRLA = 0x02; // Initialize USARTD0 for OLED in SPI mode USARTD0
-
Thread
AVR Timer 1 Normal/CTC Mode ?
Compare.A > Pin.A geht automatisch von 0 auf 1 (leerer ISR) Overflow tritt ein > Pin.C geht automatisch von 0 auf 1 und im ISR setze ich manuell die Pins A und B zurück auf 0. Soweit meine Theorie. Sollte doch funktionieren
register uint8_t isr_tmp asm("r16"); register uint8_t tmp0 asm("r17"); # define outPORT PORTC # define incrmnt 0x20 Nur warum sieht jetzt eurer Assembler Code anders aus als der originale? Mit einbinden durch asm ( ... ); geht wohl doch nicht so einfach wie überall beschrieben?
-
Thread
$hwstack $swstack $framesize falsch dimensioniert??
Portd.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Int0 = Low Level Config Timer1 = Timer , Prescale = 8 Enable Timer1 On Timer1 Isr_timer Enable Interrupts
Label springen, wo am Ende ein Return steht. Da dann keine Rücksprüngadresse auf dem Stack liegt, geht's ins Nirwana. Ich habe mir nicht den ganzen Code angesehen, aber kannst du anstelle der Gotos nicht Gosubs nehmen?
-
Thread
Drehzahlregler für DC-Motor, ATmega48-328
adc_sync = 1; // Auswertung in main() starten if(pwm_wert) PORTC |= BIT(PWM_AUSGANG); // bei 0 nicht einschalten } Mit 'adc_sync' wird die neue Auswertung angefordert. 0804 schrieb im Beitrag #4195157: > Nachtrag: aber mit 16khz zwei Signale mittels
Die Ansteuerung wird ja jeden PWM Zyklus kurz abgeschaltet solange man nicht auf 100% PWM Duty geht. Ich kenne es vom STM32 so, dass man die PWM zb. nie über 90% Duty stellt. Deshalb hat man pro PWM Zyklus ein "Fenster" von 10% wo das Signal Low ist. Genau an dieser Stelle wird der ADC getriggert
-
Thread
Bascom ATmega8a - Problem aus Powerdown aufwecken
= Output Config Pind.2 = Input Portd.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Int0 = Low Level On Int0 Isr Config Timer1 = Timer , Prescale = 8 Enable Timer1 On Timer1 Isr_timer Enable
Nun habe ich jedoch ein anderes Problem... Dazu werde ich aber einen neuen Thread aufmachen, geht um was anderes.
-
Thread
Anzeige verschiedener Inhalte auf LCD
lcd_data( 't' ); */ DDRB=0x00; PORTB=0xff; DDRC=0x00; PORTC=0xff; while(1) { if(!(PINC&0x01)) {ausgabe_b(); if(!(PINC&0x02)) {ausgabe_c();} } return 0; } void ausgabe_b(void) { int i = 0; char Buffer[20];
if(!(PINC&0x01)) {ausgabe_b(); if(!(PINC&0x02)) {ausgabe_c();} } [/c] geht gar nicht. Wenn man das mal nach simplen FOrmatierregeln formatiert, dann erhält man [c] ... while(1) { if(!(PINC&0x01)) { ausgabe_b(); if(!(PINC&0x02)) {
-
Thread
DOGM128-6 ohne Funktion. Benötige Hilfe.
#define LCD_USE_CHIPSELECT 0 //Chip select #if LCD_USE_CHIPSELECT == 1 #define PORT_CS PORTC #define DDR_CS DDRC #define PIN_CS PORTC1 #endif und void init_spi_lcd() { DDRB |= (1<<PB2); Das Display geht kurz ab, (schwarze striche überall) und dan ist es wieder aus
Wie gesagt das Display "geht" Ich habe jetzt leider nur kleine Pixel überall und evtl. eine Schrift die ständig durchläuft. Bin mir noch nicht sicher an was das liegen könnte.
-
Thread
PIC16f887 PORTB Interrupt funktioniert nicht
MOVWF PORTB CLRF SHADOW_PORTC MOVF SHADOW_PORTC MOVWF PORTC CLRF SHADOW_PORTD
Warum der Port-Change Interrupt nicht geht, sehe ich auch gerade nicht. Aber müsste nicht z.B. MOVF SHADOW_PORTA heißen: MOVF SHADOW_PORTA,W AFAIK nimmt der Assembler sonst als Default-Destination "File" (MOVF SHADOW_PORTA
-
Thread
R1 nicht richtig initialisiert - Bug im avr-gcc?
Messgerät 5V an allen Pins messen. [c] #include <avr/io.h> int main() { DDRC = 0xff; PORTC = 0x00; while(1) {} } [/c] Der Code ist folgendermaßen gebaut worden: [code] avr-gcc -D__AVR_ATmega16__ -o test.obj -Os test.c avr-objcopy -j .text -j .data -O ihex test.obj test.hex
rjmp Label0 [/avrasm] ändere und neu assembliere, funktioniert alles wie erwartet. Der gcc geht also davon aus, dass r1 mit 0 initialisiert ist, aber das ist scheinbar nicht der Fall. Liegt der Fehler im gcc, bei der Hardware oder in meinem Kopf? Viele Grüße Johannes
-
Thread
blumenbewässerung mit dem atmega16
void) { if(adc_value>=700) //Pump ON trigger point { PORTC|=(1<<0); } else if(adc_value<=600) //Pump Off trigger point { PORTC&=~(1<<0); } } [/c] leiter one erfolg fehlermeldung von avr studio C:\Dokumente
hat sich seit Jahrhunderten bewährt. Ich helf gerne aus, wenn es um das eine oder andere Detail geht. Meinetwegen auch schon mal, wenn ein Ansatz verkorkst ist. Aber ich mach nicht dein Projekt von vorne bis hinten und bring dir auch noch bei 0 beginnend 'so nebenbei' die Grundlagen bei.
-
Thread
Interrupt reagiert nicht richtig
'Taster Schieber AUF Config Pind.2 = Input 'Taster Schieber ZU Config Portc.1 = Output 'Relais Schieber AUF Config Portc.2 = Output 'Relais Schieber ZU Config Portc.3 = Output 'LED On Int0 Stop_1 Config Int0 = Rising
Testweise ausgelötet hatte war der Interruptfehler auf einmal weg. Anderes Kabel eingelötet und es geht immernoch.